【发布时间】:2022-01-10 04:10:15
【问题描述】:
我最近开始使用 Python。
我必须使用 arduino 和 raspberry pi 串行通信来进行传感器项目,并且我想试验我在传感器出现之前创建的数据。我将从 arduino 发送总共 8 条数据,发送这些数据时遇到问题。
arduino 代码:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(String("255") + "," + String("255") + "," + String("255") + "," + String("21.651") + "," + String("25.152") + "," + String("12.051") + "," + String("168.125") + "," + String("120"));
delay(1000);
}
arduino 方面,前三个数据将在 0-255 之间。接下来的 4 个数据将是浮点数,最后一个数据将是整数。所以这是来自传感器的数据,我敢肯定。
在python方面,是这样的:
import serial
com = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
com.reset_input_buffer()
while True :
sensorData = com.readline().decode('utf-8').rstrip()
temp_array = str(sensorData).split(',')
a = temp_array[0]
b = temp_array[1]
c = temp_array[2]
d = temp_array[3]
e = temp_array[4]
f = temp_array[5]
g = temp_array[6]
h = temp_array[7]
print(c)
我遇到的错误如下:
File "/home/gorkem/Desktop/process/8data.py", line 9, in <module>
b = temp_array[1]
IndexError: list index out of range
如果我尝试打印 sensorData,它会打印一次或两次空白数据。这可能是什么原因造成的?
gorkem@Gorkem-MSI:~/Desktop/process$ /bin/python3
/home/gorkem/Desktop/process/8data.py
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
【问题讨论】:
-
你能打印出你在 Python 端得到的
seonsorData吗? -
无关,但
str(sensorData)不是必需的,因为sensorData已经是一个字符串。 -
@GörkemGök 请将所有类似的信息放在帖子本身中,而不是在 cmets 中(cmets 中没有格式)
-
@GörkemGök 所以如果它打印为空白,这意味着您的脚本正在读取空白值,然后尝试用逗号分割,对吗?如果您不读取任何数据,您不想不进行拆分吗?显然,如果没有数据要拆分然后放入
temp_array... -
@RandomDavis split 可以在任何字符串上工作,即使字符串中根本没有分隔符,问题是在任何空响应的情况下没有包含所有 7 个数据的列表。跨度>
标签: python arduino serial-port pyserial