当数据以空字符串开头时开始串口读取
Start serial read when the data begins with empty string
我在从 Arduino 读取串行数据到 Python 时遇到问题。我从具有一个 Serial.println 功能的传感器和 Arduino 端发送一些逗号分隔的数据,一切似乎都很好。另一方面,在 Python 中,我应该将该数据格式化为 float 和 int,但第一行始终为空,并且在将其转换为 float 时出现错误。
b = ser.readline()
string_n = b.decode()
string = string_n.rstrip()
sensor = string.split(',')
senzor1 = list(filter(None, sensor))
print(sensor1)
我尝试使用此选项来过滤空字符串,但得到的结果是:
[]
['-9.84', ' 27']
['-5.14', ' 29']
['-13.83', ' 25']
['0.82', ' 31']
否则,第一行是 [' '],它以传感器读数开头。
所以,我的 Arduino 端只有一个 Serial.println。知道如何删除这个空列表或如何改进它吗?
您无法避免从列表内部创建列表。
您可以:
b = ser.readline()
string_n = b.decode().strip()
sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
if sensor1:
print(sensor1)
或:
b = ser.readline()
string_n = b.decode().strip()
if ',' in string_n:
sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
print(sensor1)
我设法 Serial.print 在 Arduino 上将零作为初始状态,在传感器开始工作之前,这样它 Python 将在开始时读取零而不是空 space 而且它不是影响以后的工作。感谢汤姆的帮助。
我在从 Arduino 读取串行数据到 Python 时遇到问题。我从具有一个 Serial.println 功能的传感器和 Arduino 端发送一些逗号分隔的数据,一切似乎都很好。另一方面,在 Python 中,我应该将该数据格式化为 float 和 int,但第一行始终为空,并且在将其转换为 float 时出现错误。
b = ser.readline()
string_n = b.decode()
string = string_n.rstrip()
sensor = string.split(',')
senzor1 = list(filter(None, sensor))
print(sensor1)
我尝试使用此选项来过滤空字符串,但得到的结果是:
[]
['-9.84', ' 27']
['-5.14', ' 29']
['-13.83', ' 25']
['0.82', ' 31']
否则,第一行是 [' '],它以传感器读数开头。
所以,我的 Arduino 端只有一个 Serial.println。知道如何删除这个空列表或如何改进它吗?
您无法避免从列表内部创建列表。
您可以:
b = ser.readline()
string_n = b.decode().strip()
sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
if sensor1:
print(sensor1)
或:
b = ser.readline()
string_n = b.decode().strip()
if ',' in string_n:
sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
print(sensor1)
我设法 Serial.print 在 Arduino 上将零作为初始状态,在传感器开始工作之前,这样它 Python 将在开始时读取零而不是空 space 而且它不是影响以后的工作。感谢汤姆的帮助。