如何分离从串口接收的值并将其作为单独的变量存储在python中?

时间:2017-09-04 15:24:33

标签: python pyserial

我是python,传感器和Stackoverflow的新手。我正在我的工作项目中通过pyserial读取我的电脑COM4上的4个传感器数据。我写了下面的代码来完成这个:

import serial
ser = serial.Serial('COM4', 9600, timeout=5)
ser.write("\r".encode())
response =  ser.read(60)
print (response)
ser.close()

我得到的结果如下:

b'reply:node01\r\n69\r\n45\r\n117\r\n994\r\n

值69,45,117,994分别来自4个传感器的读数。我做了一些研究并将print (response)更改为print (response.decode('utf-8')),现在我得到的结果如下:

reply:node01
69
45
117
994

在将print (response.decode('utf-8'))添加为单独的变量之后,我真的需要一些帮助来分离和存储我的初始输出或我收到的输出中的传感器值,例如field1 = 69,field2 = 45,field3 = 117 ,field4 = 994。所以我可以将它发送到thingspeak API:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXXXXX&field1=69&field=45&field3=117&field4=994

PS:可扩展 - 在此项目的后期可能会添加更多数量的传感器,因此接收的数据值也会增加。

拜托,我真的需要一些帮助。

1 个答案:

答案 0 :(得分:0)

很好地调用从字节转换为文本。现在假设您存储了已解码的字符串,如

my_str = response.decode('utf-8')

您可以使用splitlines字符串方法为每一行获取字符串:

field0, field1, field2, field3, field4 = my_str.splitlines()

然后,您可以将这些值插入到某个模板中,以便为您提供所需的URL。如果您更喜欢值列表,请使用

fields = my_str.splitlines()