/ / Pyserial no puede leer el dispositivo: python, puerto serie, hardware, pyserial

Pyserial no puede leer el dispositivo: python, puerto serie, hardware, pyserial

Estoy tratando de leer los datos de un sensor que compré, usando un módulo de conversión (SSI a RS232). Tengo el módulo conectado a mi computadora portátil con Windows a través del convertidor USB / serie.

Cuando uso Putty en modo Serie, puedo enviar el comando $ 2RD y recibir la respuesta adecuada de la unidad del sensor. Cuando ejecuto un script para intentar hacer lo mismo, la unidad devuelve: ""

Aquí está el código que estoy usando:

import sys
import serial
import time

ser = serial.Serial(
port="COM4",
baudrate=9600,
timeout=1,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
)

while True:
ser.write("$2RD".encode())
#time.sleep(1)
s = ser.read(26)
print s

Algunas otras notas:

  • He intentado algunas variaciones usando flushInput, flushOutput, dormir, esperar, etc ... nada parece ayudar.
  • Sé que tengo los puertos COM correctos / todo el hardware funciona en Putty, así que estoy bastante seguro de que esto es algo con mi código.
  • También probé 13,400 BAUD sin ninguna diferencia en el resultado.
  • Si conecto las líneas TX y RX desde el USB, puedo leer el comando que estoy enviando ... por lo que debería ser al menos llegar al dispositivo de conversión RS232 / SSI.

Respuestas

0 para la respuesta № 1

s = ser.read(26) probablemente debería ser ser.read(size=26) ya que toma argumento de palabra clave y no argumento posicional.

Además, puede intentar establecer un tiempo de espera para ver lo que se envió después de un tiempo específico, porque de lo contrario, la función puede bloquear si no se envían 26 bytes como se especifica en los documentos de lectura de pyserial:

Leer bytes de tamaño desde el puerto serie. Si se establece un tiempo de espera, puede devolver menos caracteres según lo solicitado. Sin tiempo de espera, se bloqueará hasta que se lea el número de bytes solicitado.