我想通过pySerial发送一些字节。我创建了socat虚拟串行端口,用于测试目的:用pySerial和socat发送字节时出现问题
socat PTY,link=./ptyp1,b9600 PTY,link=./ptyp2,b9600
这里的Python代码:
ser = serial.Serial('./ptyp1')
x = struct.pack('B',2)
print binascii.hexlify(x) # 02
ser.write(x)
y = ser.read(2)
print binascii.hexlify(y) # 5e42
的输出中,我得到:
02 # x
5e42 # y
输出我想到:
02 # x
02 # y
我是什么在这里做错了吗?是socat还是python?
编辑:
我只注意到一些其他奇怪的行为,为不同的x值。在这里,输出继电器:
x = 12 => y = 5E 52 0D 0A 5E 50
x = 100 => y = 100 # why does it work here?
解决方案:
的问题是,我我写的同一个端口上阅读。如果我做对了,socat将两个港口“连接”为“进”和“出”。所以如果我写入./ptyp1,我必须阅读./ptyp2。之后,一切都很好。
好吧,但我不明白:当我只写1(02)时,为什么我可以读2个字节(5e 42)。我如何写1个字节并读取相同的字节? – nonsenz 2011-04-02 16:57:13