格式化串行设备的返回值

2024-10-03 15:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过串行方式从设备读取值,返回值的格式为:

[理论位置以毫米为单位,编码器位置以毫米为单位],例如,b'\r#-0.001504,-0.001516\n'

我想格式化这个返回值并将第二个值保存到数组中。有人知道我该怎么做吗?任何建议都将不胜感激

谢谢

新编辑:这是我的代码和输出。此时,我只需要从这个字符串中提取浮点值

    ser.write(b'1POS?\r') #command to query position
    pos = ser.readline() #read the position
    pos_str = str(pos)
    pos_splt = pos_str.split(",") 
    enc_pos = pos_splt[1]
    print(enc_pos)

输出:“-0.028970\n”


Tags: pos编辑格式方式position单位数组编码器
1条回答
网友
1楼 · 发布于 2024-10-03 15:27:31

好的,对不起,我刚刚意识到你的: error "a bytes-like object is required, not 'str'" 意味着

这是因为您试图拆分的是一个字节数组,虽然它有一个split()方法,但它需要一个字节数组作为参数

现在试试这个:

pos = b'\r#-0.001504,-0.001516\n'   # Sample data from serial port

pos_splt = pos.strip().split(b",")  # the param b"," is the bytes version of ","
enc_pos = pos_splt[1]
print(float(enc_pos))

输出

-0.001516

相关问题 更多 >