【发布时间】:2021-10-08 20:33:51
【问题描述】:
我知道我之前问过类似的问题 (Formatting a return value from a serial device),但这次我的问题有所不同。我正在从 Arduino 读取一个值,看起来像这样:
值 = b'446.45 mV\r\n'
我需要的只是 446.45。我下面的代码可以提取这个值,但每隔一段时间它就会决定不起作用。我多次调用此值,最多为 10,000 或更多。当我在数据收集的第 9000 次迭代中收到错误消息时,我感到很沮丧:“ValueError:无法将字符串转换为浮点数:''”。有谁知道我的问题可能是什么?
value = ser2.readline() # gives something like: b'446.45 mV\r\n'
val_str = str(value)
count = val_str.count('.') #count number of decimal points
if count != 1: #make sure there is only one decimal point
val_str = val_str[:6] #keep two decimal points
w = val_str.strip("b")
x = w.strip("mV\\r\\n")
y = float(x) # usually gives: 446.45
【问题讨论】:
-
当您收到 ValueError 时,
value或val_str是什么?将您的代码包装在 try/except 中,以便您可以在出错时打印它。 -
使用 try except 并打印有问题的值
标签: python arduino serial-port