0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

单片机

单片机只有串口,怎么样才能使用HID协议

单片机只有串口,希望使用HID协议使用鼠标做到绝对坐标定位.求详细一点的解答~~感激不尽啊

提问者:yweyrwyds 地点:- 浏览次数:2798 提问时间:10-17 14:07
我有更好的答案
提 交
1条回答
上海鼎廷 10-17 14:07

串口的协议数据一般包括 帧头+地址+功能码+校验码+数据+帧尾 等组成。

第一种:超时判断,思路就是每在接收到串口数据,进入接收中断后,保存数据,并赋值一个变量,然后该变量的值在定时器里面自减,若自减到零说明对方数据传送完成,由此可判断接收完成,下一步就是在主程序里处理串口数据了。
这种办法现在基本不使用。

第二种:在接收中断里逐级判断,只有一级一级的数据判断正确,才进行接收,最后再判断校验码和帧尾,只有整个过程的数据都正确,才能确定数据接收完成,此时置位一个标志位,在主程序里处理通过此标志位执行相应程序。
现在我一直用的就是这种方法,但这种方法很容易有一种限制,就是只能一帧一帧的处理数据,就是说对方发了一帧数据后,下一帧数据要间隔一段时间(如10MS)再发送,如果两帧或以上的数据一起发送,第二种处理方法就会产生错误。

第三种:我也是听人说过,就是可以解决第二种只能一帧一帧接收数据的问题,具体的实现思路我也不清楚,只能分别简单描述一下,第三种方法也是我上来发帖请教的目的。
这种处理方法就是开辟一个相对较大的数组用于存放接收到的数据,接收程序只管接收数据,若接收到的数据到达数组尾端,下一个接收到的数据又会从数组头开始存放,即会把之前存放的数据覆盖掉。 
在主程序里,不断扫描数组里面存放的数据,搜索里面的功能协议,每一条协议都要从数组里搜索一遍,每次循环都要这样做。我的疑问是怀疑自己理解错了,要是这样的话,单单搜索协议都要耗费大量的CPU时间,貌似不太现实。
撰写答案
提 交
1 / 3
1 / 3
相关单片机
具有音调控制的单片机立体声前置放大器
用于单片机与电子装置中的开关电源
单片机软硬件复位的条件都有啥
电动机的单片机控制
单片机应用系统开发实例导航