广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1513|回复: 2

求教:关于on_uart_recv(ch,packet)串口接收回调

[复制链接]

10

主题

30

帖子

120

积分

注册会员

Rank: 2

积分
120
发表于 2024-7-29 18:14:47 | 显示全部楼层 |阅读模式
你好,关于on_uart_recv(ch,packet)有几点想弄明白
这是串口回调,我用自定义私有协议通讯比较简单,格式类似于Modbus,一帧只有几个字节,第一个字节是地址,最后加CRC16码,没有特定包头包尾
所以跟上次你给的自由协议例程有点不一样
1. 使用回调函数接收数据, 接收到多少个字节数据才会触发?这里是否有个超时限制或帧间距检测?
如果一帧数据没有超过特定字节数情况下,一次性接收,那是不是可以#(packet),来确认接收完,再检查CRC16码检测完整性?
如果这个触发是随机字节数,那么一条命令是不是可能在几次才能确保接收完?
2. 数据被缓冲在数组packet中,这个缓冲区的清除机制是怎么样的?自动清除?如果是自动清除,是什么操作触发自动清除的?

回复

使用道具 举报

10

主题

30

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2024-7-29 18:19:41 | 显示全部楼层
不好意思哈,做硬件的,不得不自已写
回复

使用道具 举报

0

主题

388

帖子

1120

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1120
发表于 2024-7-30 09:38:36 | 显示全部楼层
自由协议方式,接收数据就会触发函数,像modbus协议的那种固定字节类型可以用,数据长度来分包,回调函数中都是需要用户自己处理的。
可以在脚本中给一个缓冲区来接收一帧数据,然后清除掉,等待下一帧数据,CRC16校验在例程中也有做处理,可参考自由协议例程的分包粘包操作:
https://video.gz-dc.com/LUA%E6%9 ... %8C%87%E4%BB%A4.zip
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2024-11-21 17:00 , Processed in 0.062362 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表