作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次不得不通过 RS232 串口连接到设备来读取/写入数据,而且我一直卡在编码/解码过程中。
我正在使用库“pyserial”在 Python 3 中做所有事情。这是我到目前为止所做的:
import serial
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'
ser.baudrate = 115200
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout = 3
ser.open()
device_write = ser.write(bytearray.fromhex('AA 55 00 00 07 00 12 19 00'))
device_read = ser.read_until()
连接/通信似乎按预期工作。 device_read
的输出是
b'M1830130A2IMU v3.2.9.1 26.04.19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x0527641\x00\x00\x00IMHF R.1.0.0 10.28.2018 td: 6.500ms\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00'
这就是我卡住的地方。我不知道如何解释这个。附件是数据表中的一张图片,解释了输出应该代表什么。
对于我拥有的设备,数据表显示“字节 98 到 164 中的字段为空”。有人可以帮我理解需要做什么才能将 ser.read_until()
的输出转换为“人类可读”的形式并表示图像中的数据吗?我不需要有人为我编写代码,但我什至不确定从哪里开始。同样,这是我第一次这样做,所以我对发生的事情有点迷茫。
最佳答案
如果您尝试写入十六进制值为 12(十进制 18)的单个字节,我相信您需要做的是 ser.write(bytes([0x12]))
,这是相当于 ser.write(bytes([18]))
。
看起来您的输出是 154 字节而不是 98 字节,而且其中大部分是人类不可读的。但是如果你确实有图中描述的数据,你可以像这样分解它:
ID_sn = device_read[0:8].decode('ascii')
ID_fw = device_read[8:48].decode('ascii')
Press_Sens = device_read[48]
等等。
关于python - RS232串口数据编解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60823172/
我是一名优秀的程序员,十分优秀!