如何分离从串行端口接收到的值并将其作为单独的变量存储在 python 中?
How to separate values received from a serial port and store it as separate variables in python?
我是 python、传感器和 Whosebug 的新手。我正在我的大学做一个项目,通过 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,字段 4=994。这样我就可以将其发送给 thingspeak API:
https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXXXXX&field1=69&field=45&field3=117&field4=994
PS:可扩展 - 在该项目的后期可能会添加更多传感器,因此接收到的数据值数量也会增加。
拜托,我真的需要一些帮助。
关于从字节转换为文本的良好呼吁。现在假设您存储解码后的字符串,如
my_str = response.decode('utf-8')
您可以使用 splitlines
字符串方法获取每一行的字符串:
field0, field1, field2, field3, field4 = my_str.splitlines()
然后您可以将这些值插入到某个模板中以获得您想要的 URL。如果您更喜欢值列表,只需使用
fields = my_str.splitlines()
我是 python、传感器和 Whosebug 的新手。我正在我的大学做一个项目,通过 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,字段 4=994。这样我就可以将其发送给 thingspeak API:
https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXXXXX&field1=69&field=45&field3=117&field4=994
PS:可扩展 - 在该项目的后期可能会添加更多传感器,因此接收到的数据值数量也会增加。
拜托,我真的需要一些帮助。
关于从字节转换为文本的良好呼吁。现在假设您存储解码后的字符串,如
my_str = response.decode('utf-8')
您可以使用 splitlines
字符串方法获取每一行的字符串:
field0, field1, field2, field3, field4 = my_str.splitlines()
然后您可以将这些值插入到某个模板中以获得您想要的 URL。如果您更喜欢值列表,只需使用
fields = my_str.splitlines()