Arduino python serial 无法解决简单的错误
Arduino python serial can't solve simple error
我最近开始使用 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
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(',')
if len(temp_array) > 7:
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)
我建议这样做,以确保它读取的每一行实际上都包含这 7 个输入。
我最近开始使用 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
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(',')
if len(temp_array) > 7:
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)
我建议这样做,以确保它读取的每一行实际上都包含这 7 个输入。