Python .readline ()

En primer lugar, permítanme comenzar con Soy nuevo en Python, no hay ego aquí. Tengo este código que improviso desde varios sitios, cuyo objective final es que enviaría un código hexadecimal a un chip OBD-II y esperaría una respuesta. Esta respuesta, también HEX, se convierte a decimal procesado y se envía a la salida. Bastante simple verdad?

Bueno, hay dos problemas.

Uno de los cuales es que .readline () elimina la primera letra de la respuesta.

Por ejemplo, si quisiera “> Elm327” volvería “> lm327”.

El otro problema, el mayor de los dos, es cuando uso .readline () Solo recibo la solicitud que envié, por ejemplo, si uso este código a continuación:

serialport.write("01 0D \r") speed_hex = serialport.readline().split(' ') speed = float(int('0x'+speed_hex[6:8], 0 )) print 'Speed: ', speed, 'km/h'` 

Quiero .logline para devolver 41 0D 15 lugar de eso obtengo algo como E\r\r01 0D \r \r"

 speed_hex = serialport.readline().split(' ') 

Esto también devuelve un error pero haré una publicación separada para eso.

¿Alguna idea? Gracias

Sospecho que la configuración del puerto serie no coincide exactamente con la de la placa. Intente jugar con un terminal hasta que obtenga la configuración exacta y luego use esa.

NB: no necesita anteponer 0x para convertir un valor hexadecimal que puede usar int (s, 16) donde s es su subcadena.