从 arduino 读取串行数据:代码工作..on re 运行 它出错
Reading serial data from arduino: Code works..on re run it errors
import serial
from vpython import *
arduinoSerialData = serial.Serial('com8', 9600)
measuringRod = cylinder( radius= .5, length=6, color=color.yellow, pos=vector(-3,0,0))
lengthLabel = label(pos=vector(0,1,0), text='Target Distance is: ', box=False, height=30)
while True:
rate(20)
if (arduinoSerialData.inWaiting()>0):
Data = arduinoSerialData.readline().strip().decode("ascii")
print(Data)
distance = float(Data)
measuringRod.length=distance
myLabel= 'Target Distance is: ' + Data
lengthLabel.text = myLabel
重新 运行 程序的错误告诉
11.85
11.53
13.07
13.43
11.66
16.53
Traceback (most recent call last): File
"c:\Users\golut\OneDrive\Documents\Arduino\count\tempCodeRunnerFile.py",
line 12, in
distance = float(Data) ValueError: could not convert string to float: ''
在断开和重新连接 arduino 时它工作得很好但是当我停止程序并重新 运行 它时,它停止 运行ning
我还没有测试你的代码。但是在这里,
因为在你的印刷品上你有
>>> 1.85 11.53 13.07 13.43 11.66 16.53
您应该先将此字符串拆分为多个值,因为python无法将此类字符串(具有多个浮点数)转换为浮点数
##data.split() -> ['1.85', '11.53', '13.07', '13.43', '11.66', '16.53']
data = [float(item) for item in data.split()]
[1.85, 11.53, 13.07, 13.43, 11.66, 16.53]
现在您可以使用列表 idx 处理您需要的值
数字是单独读取的,所以不需要拆分,我尝试做的是,我在打印“数据”后包含一个 if 语句,并检查传递的数据是否为空,如果不是,我将数据转换为浮点数。这样它工作正常。我面临的问题是 arduino 有时关闭程序并重新启动发送的空值,不知道为什么,所以错误一直发生,因为没有任何东西可以转换成 float
import serial
from vpython import *
arduinoSerialData = serial.Serial('com8', 9600)
measuringRod = cylinder( radius= .5, length=6, color=color.yellow, pos=vector(-3,0,0))
lengthLabel = label(pos=vector(0,1,0), text='Target Distance is: ', box=False, height=30)
while True:
rate(20)
if (arduinoSerialData.inWaiting()>0):
Data = arduinoSerialData.readline().strip().decode("ascii")
print(Data)
distance = float(Data)
measuringRod.length=distance
myLabel= 'Target Distance is: ' + Data
lengthLabel.text = myLabel
重新 运行 程序的错误告诉
11.85
11.53
13.07
13.43
11.66
16.53
Traceback (most recent call last): File "c:\Users\golut\OneDrive\Documents\Arduino\count\tempCodeRunnerFile.py", line 12, in
distance = float(Data) ValueError: could not convert string to float: ''
在断开和重新连接 arduino 时它工作得很好但是当我停止程序并重新 运行 它时,它停止 运行ning
我还没有测试你的代码。但是在这里,
因为在你的印刷品上你有
>>> 1.85 11.53 13.07 13.43 11.66 16.53
您应该先将此字符串拆分为多个值,因为python无法将此类字符串(具有多个浮点数)转换为浮点数
##data.split() -> ['1.85', '11.53', '13.07', '13.43', '11.66', '16.53']
data = [float(item) for item in data.split()]
[1.85, 11.53, 13.07, 13.43, 11.66, 16.53]
现在您可以使用列表 idx 处理您需要的值
数字是单独读取的,所以不需要拆分,我尝试做的是,我在打印“数据”后包含一个 if 语句,并检查传递的数据是否为空,如果不是,我将数据转换为浮点数。这样它工作正常。我面临的问题是 arduino 有时关闭程序并重新启动发送的空值,不知道为什么,所以错误一直发生,因为没有任何东西可以转换成 float