Estou lutando para estabelecer comunicações com um periférico através da serial USB no meu Linux aqui (fedora 20/64 bits), e provavelmente estou perdendo alguns passos:
Eu conecto o dispositivo, uma porta / dev / ttyUSBx aparece corretamente. Eu uso python / pySerial fazer para dirigi-lo e em vez das respostas que o dispositivo deve me dar, tudo que eu posso ler a partir da porta serial é um byte zero único ("\ x00") cada vez que a conexão é reiniciada.
Eu tentei diferentes adaptadores serial para USB, cabos seriais diferentes e até periféricos (e modelos) diferentes na outra extremidade. Com os programas de código fechado baseados no Windows que se comunicam com o periférico, tudo parece funcionar bem.
Aqui está uma sessão típica do que estou tentando:
>>> import serial
>>> s = serial.Serial("/dev/ttyUSB0", timeout=.1)
>>>
>>> s.flush()
>>> s.write("(&S)")
4
>>> s.read()
'\x00'
>>>
(em vez de "\ x00" aqui, eu deveria ter uma string de comprimento de caracteres como uma resposta. (o dispositivo responde corretamente ao mesmo protocolo sobre TCP / IP).
Estou faltando alguma etapa de configuração na porta serial?
Aqui está minha saída setserial:
/dev/ttyUSB0, UART: unknown, Port: 0x0000, IRQ: 0, Flags: low_latency
E a configuração do Pyserial:
Serial<id=0x7f525c5daf10, open=True>(port='/dev/ttyUSB0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=0.1, xonxoff=False, rtscts=False, dsrdtr=False)
(esses parâmetros são os mesmos que são mostrados na porta serial que está configurada no Windows onde o dispositivo funciona - mas para o tempo limite)