我正在尝试创建一个与python中的另一个程序进行串行通信的程序。在我的程序中,我想等待特定的传入数据。到目前为止,我已成功完成此命令:
while ser.read(length)!= incoming_data:
pass
但incoming_data有各种可能性。我想检查即将发生的数据,并为每个传入数据执行特定任务。在tera term宏中,我可以使用此代码:
wait data1 data2
if result = 1 then .....
if result = 2 then ....
如何在python序列中执行相同的操作?因为每个数据都有不同的长度。提前谢谢。
答案 0 :(得分:1)
根据我的经验,您需要某种终止字符来表示消息的结束。通常使用换行符(\n
)。 pyserial有一个方法readline()
,它将读取直到它到达换行符,然后返回该数据。
答案 1 :(得分:0)
您可以缓冲传入的数据,然后检查匹配项。像
这样的东西buf = ''
while 1:
buf += ser.read(1)
if buf == data1:
# do stuff
buf = ''
elif buf == data2:
# do something else
buf = ''