我必须通过与python的串行通信发送ZANE:1:00004:XX_X.X_XXXX_000XX:\r\n
。
这是我的代码:
import serial
ser = serial.Serial('/dev/cu.usbserial-A901HOQC')
ser.baudrate = 57600
msg = 'ZANE:1:00004:XX_X.X_XXXX_000XX:\r\n'
如果我写:
>>> ser.write(msg)
答案是33
,这是我发送的消息的字节长度。
我怎样才能得到答案?连接的设备将在他收到消息后立即应答,但如果我键入
>>> ser.write(msg); ser.readline()
结果将是readline
永远不会得到任何消息。。。
有什么想法吗?
要进行读取,需要先打开侦听端口(超时),例如:
查看更多详细信息here。
我相信前面的答案不明白你在用同一个端口来写和读。
我也有同样的问题,用睡眠功能解决了。基本上:
所以睡觉的时候你给了接收器时间(一台机器?)发送回复。还要注意,如果要使用readline,必须添加超时。
您的设备可能没有用换行符终止其响应。 .readline()方法需要以换行符结尾的字符串。 请看这里:http://pyserial.sourceforge.net/shortintro.html#readline 更多信息。
尝试设置串行连接超时
并将ser.readline()替换为ser.read(n),其中n是要读取的字符数。 序列读取(100) 将尝试读取100个字符。如果100个字符在10秒内没有到达,它将放弃并返回它收到的任何内容。
相关问题 更多 >
编程相关推荐