gpt4 book ai didi

python - 串行传感器数据 - 消除不需要的字符串

转载 作者:行者123 更新时间:2023-11-28 19:20:38 26 4
gpt4 key购买 nike

我正在使用一些 python 代码对连接到串行端口的传感器进行采样。

大多数情况下,这种方法效果很好。但是偶尔传感器的输出不正确:

['\x80', '19.38', '22.7', '649', 'w\\'] - correct
['\x80', '19.46', '22.7', '648', 'wZ'] - correct
['\x80', '19.49', '22.7', '650', 'w'] - correct
['w', '\x80', '19.45', '22.7', '650'] - error

这导致我的代码出现很多问题。我只是想知道是否有人知道如何开始使用 '\x80' 之后的值或其他方法开始拆分字符串?

例如:

如果我从传感器接收到的字符串称为“接收”,那么我的代码是

Var1,Var2,Var3,Var4,Var5 = receive.split()

现在我需要将 Var2 转换为 float ,以便我可以对其进行一些数学运算

Var2float = float(Var2)

大多数情况下,当 Var2 是一个类似于 19.38 的值时,直到传感器的输出发生变化并且 Var2 变为无法转换为 float 的 '/x80' 时,这才起作用

关于如何过滤或绕过此传感器输出错误的任何想法?

最佳答案

一个简单的 try except 子句将解决这个问题:

my_buffer = ['\x80', '19.38', '22.7', '649', 'w\\']
converted_buffer = []
for v in my_buffer:
try:
converted_buffer.append(float(v))
except ValueError:
print "{} cannot be converted, skipping to the next".format(v)
print converted_buffer

输出:

� cannot be converted, skipping to the next
w\ cannot be converted, skipping to the next
[19.38, 22.7, 649.0]

您可以迭代缓冲区,当 ValueError 引发时,只需决定如何处理该值,在这种情况下,我们只需将其打印出来,您可以记录它或根据需要对其进行处理。

注意:我认为这是来自设备的sync frame意味着\x80表示它是传输的开始,很多传感器有开始和结束同步帧。

关于python - 串行传感器数据 - 消除不需要的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com