等待传入的串行通信数据Python

时间:2014-10-15 03:29:56

标签: python serial-port pyserial

我正在尝试创建一个与python中的另一个程序进行串行通信的程序。在我的程序中,我想等待特定的传入数据。到目前为止,我已成功完成此命令:

while ser.read(length)!= incoming_data:
    pass

但incoming_data有各种可能性。我想检查即将发生的数据,并为每个传入数据执行特定任务。在tera term宏中,我可以使用此代码:

wait data1 data2
if result = 1 then .....
if result = 2 then ....

如何在python序列中执行相同的操作?因为每个数据都有不同的长度。提前谢谢。

2 个答案:

答案 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 = ''