新手区 有没有大佬玩过串口通信啊?

辣子鸡 · 2025年01月08日 · 最后由 Duke 回复于 2025年01月09日 · 960 次阅读

最近有个项目需要我测试测串口,作为一名纯软突然高一些嵌入式还是有点难顶,也没人带,故来求助各位大佬。
语言:python+serial 包
通信说明:
数据传输方式为串口传输,其串口配置为:波特率 115200,无奇偶校验,数据位为 8;


数据说明:
仪器数据按小端模式,即当数据为 0xFFF67B6A,其串口发送先发送 0x6A,…,0xFF。
重点在于这个小端模式,
已知数据:
Byte0 = 0xA5
Byte1 = 0x5A
Byte2 = 0x09
Byte3 = 0x0F
Byte4 = 0x03
Byte5 = 0x26
Byte6 = 0x08
Byte7 = 0xAA
Byte8 = 0x51
我已经有了上述数据,我要怎么发送呢?这个小端模式需要我按照 Byte8,Byte7,Byte6...Byte0 的顺序发送嘛?
还是我有拼接成字符串 “0xA55A090F032608AA51” 然后直接使用?
因为协助不具备测试条件,且也没有环境给我调试,但是后续测试时间又比较紧张,故求助个位大佬/(ㄒ o ㄒ)

共收到 2 条回复 时间 点赞

前置 0x 应该都不用,直接拼接成字符串发送,发送"A55A090F032608AA51",
注意选 hex 模式发送, serial 包中 bytes.fromhex,看看有没有对应的返回值

我之前做过类似的场景,我们当时是开发一个上位机, 然后是将完整的报文直接发给我们的设备(拼接成字符串 “0xA55A090F032608AA51” 然后直接使用),由设备根据报文中的 leth,拿到对应正确的 data。
我的个人理解:0xA5 或者 0x5A 是标志位,设备拿到一段报文,找到这个标志位,才知道后续的内容该如何处理。 如果单独发给设备一字节,再发一个字节,例如 发送 0x51,然后再发送 0xAA,设备并不知道 0x51 和 0xAA 具体是干什么用的,对设备来讲,一个字节一个字节,就相当于乱码了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册