python - 使用pyserial读取串口十六进制字符串值时,无法得到正确的响应答案
问题描述
[Motor driver modbus protocol information][1]
[Our Motor driver electric scripts ][2]
[Device address and Register information ][3]
我知道我需要使用编码来传输我的十六进制字符串,我尝试了很多方法来获得正确的值但根本不正确。
例如:
当我向我的端口发送十六进制字符串(如 "03060000000149e8"
)时:
它应该响应"03 06 00 00 00 01 49 e8"
我从可爱的串口助手那里得到的,但它只给了我"0310000152ff"
.
我不知道,你能帮我解决这个问题吗?谢谢你。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import serial
import time
import binascii
import struct
s=serial.Serial('/dev/ttyUSB0',19200,bytesize=8, parity='O', stopbits=1,timeout=None, xonxoff=0)#
message_bytes = "03060000000149e8".decode('hex'
# print str(message_bytes)
s.write(message_bytes)
s.flushInput()
s.flushOutput()
time.sleep(0.1)
# print s.read(1)
# print bytes(s.read(15))#.encode('hex')
# print binascii.hexlify(s.read(15))
serial_data =''
while s.inWaiting() > 0:
c=s.read(1)
# or c=ser.read(1).decode('latin1')
serial_data += c
s.flushOutput()
print hex(int(c.encode('hex'),16))
# w = struct.unpack("h", c)[0]
# print w
# print binascii.hexlify(c)
# print int(c,16)
print serial_data.encode('hex')
print binascii.hexlify(serial_data.replace('\n',''))#.decode('hex')
# message_bytes_2='03060002ff9c6871'.decode("hex")
# # kk="\x01\x06\x00\x02\x03\xE8\x28\xB4"
# s.write(message_bytes_2)
# time.sleep(0.01)
#
# print s.read(15).encode('hex')
# s.reset_output_buffer()
# message_bytes_2='030300000002c5e9'.decode("hex")
# # kk="\x01\x06\x00\x02\x03\xE8\x28\xB4"
# print s.write(message_bytes_2)
# time.sleep(0.1)
#
s.close()
[1]: https://i.stack.imgur.com/wkXkv.png
[2]: https://i.stack.imgur.com/lkdWK.png
[3]: https://i.stack.imgur.com/ClSjN.png
解决方案
推荐阅读
- angular - 在 Angular 中调用/使用 Cordova 地理位置
- reactjs - 如何在不弹出的情况下将 less 集成到 Create React App 中
- reactjs - 反应将 onClick 值从一个类传递到另一个类
- android - 如何仅在一行中动态更改文本视图
- java - 设置 bean 属性 'mongoOperations' 时无法解析对 bean 'mongoTemplate' 的引用
- rxjs - `RxJS` 在请求时在订阅上抛出错误
- imagemagick - Imagemagick 裁剪缩略图命令行
- php - sql查询不将数据从数组插入数据库表
- mysql - MySQL 用 Table2 的属性更新 Table1 的属性
- powershell - Powershell 代码 Telnet 网站或 ping 网站 如果没有连接 Works 重启 iis