System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于无线通信网络,特别是涉及一种串口多路通信方法。
技术介绍
1、随着物联网和信息化技术的发展,串口通信在设备控制和信息传输领域的应用越来越广泛,串口通信是板级之间通信的常用方式,通过设置串口波特率,发送串口数据,能够很好地完成电路板之间的数据通信。
2、但是在现有技术中,真实串口在多app请求使用的情况下会被占用,导致其他app出现阻塞或者循环重连的状态,极大地降低了硬件资源的可用性和利用率。
技术实现思路
1、本专利技术为解决上述
技术介绍
中存在的技术问题,提供一种串口多路通信方法。
2、本专利技术采用以下技术方案:一种串口多路通信方法,应用于windows端和安卓板卡的串口数据发送端,进行真实串口被占用时不同波特率串口的识别及数据处理,包括以下步骤:
3、s1,系统启动时注册虚拟串口层,用以提供虚拟串口池以供app连接;所述虚拟串口层包括主线程模块、数据缓存模块、读线程模块和写线程模块,且每个app对应连接至少一个数据缓存模块;
4、s2,app访问所述虚拟串口层,获得一个已生成未占用的虚拟串口,并连接所述虚拟串口;
5、s3,调用所述主线程模块,监听并写入指令数据至所述数据缓存模块;
6、s4,调用所述主线程模块,唤醒写线程模块并发送指令数据至真实串口;
7、s5,调用所述写线程模块,监听真实串口,当指令数据输入时,真实串口根据指令头解析出指令数据所发往的虚拟串口,并向所述虚拟串口发
8、优选的是,所述虚拟串口被连接后还包括:
9、s1.1在所述数据缓存模块中生成数据缓冲双向通道;所述数据缓冲双向通道包括:写入通道和读取通道;所述数据缓存模块的头部带有信号器标识;
10、s1.2在所述主线程模块中注册所述数据缓冲双向通道,则所述虚拟串口被绑定成功;
11、s1.3所述数据缓存模块被写入指令数据时,所述信号器标识被改变;
12、s1.4所述主线程模块监听到所述改变,并通知app去对应的所述数据缓存模块中读取所述指令数据;
13、s1.5检测所述指令数据是否完整,若完整,则将指令数据存入指令集合中;若不完整则记录日志抛弃所述指令数据,向所述真实串口写入指令数据不完整消息回执。
14、优选的是,所述s1.5具体包括:
15、s1.5.1所述指令数据的指令格式包括:两位数据头标识位,两位数据长度位、一位指令位、至少一位的数据位和两位数据尾标识位;
16、s1.5.2从所述虚拟串口获取串口数据;
17、s1.5.3检索所述数据头标识位,若不存在,则该次读取的所述指令数据全部清除,等待下一次循环读取;若存在,则获取所述数据头标识位后两位的所述数据长度位,两者相加获得所述数据尾标识位,验证所述串口数据和所述指令数据的所述数据尾标识位是否相同,若相同,则将所述指令数据存入指令集合中;
18、s1.5.4若所述数据头标识位的下标与所述数据长度位相加获得的数据长度大于所述串口数据长度,则判定所述指令数据不完整,记录所述数据长度,并将指令数据存入新集合中;
19、s1.5.5下一次读取所述指令数据时,检索第一个所述数据尾标识位和第一个所述数据头标识位,所述数据尾标识位的下标大于所述数据头标识位的下标,则说明上次存储数据发送不完整,清除集合;若所述数据尾标识位的下标小于所述数据头标识位的下标,则将所述指令数据存入集合中,位置为上次存储数据为最后一位下标,计算集合总长度;
20、s1.5.6若所述集合总长度为预定长度的倍数,则说明所述指令数据完整,开始解析所述指令数据;若所述集合总长度大于预定长度则分段解析所述指令数据,截取预定长度的所述指令数据进行解析;
21、s1.5.7对于多次所述数据长度不完整或所述指令数据解析错误,将记入日志,进行硬件问题排查。
22、优选的是,所述主线程模块用于监听,所述读线程模块为发送处理器,所述写线程模块为接收处理器。
23、优选的是,所述虚拟串口层提供虚拟串口池以供app连接,所述虚拟串口池根据app的配置参数来生成。
24、本专利技术的有益效果:
25、1. 本专利技术提供一种串口多路通信方法,通过虚拟串口层去对接程序,防止多app同时使用串口时堵塞或循环等待现象的产生;
26、2. 通过对数据进行处理和优化,提高了串口数据传输的稳定性和效率;提供了指令数据的完整性验证,可以防止复杂情况下导致硬件引起的粘包现象;提供了指令数据的缓存队列,可以防止大量的app并发操作下的挤兑情况的出现;
27、3. 提供了不同的app对波特率设定支持,能够广泛应用于串口通信领域中的各种设备和系统。
本文档来自技高网...【技术保护点】
1.一种串口多路通信方法,应用于windows端和安卓板卡的串口数据发送端,进行真实串口被占用时不同波特率串口的识别及数据处理,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种串口多路通信方法,其特征在于,所述虚拟串口被连接后还包括:
3.根据权利要求2所述的一种串口多路通信方法,其特征在于,所述S1.5具体包括:
4.根据权利要求1所述的一种串口多路通信方法,其特征在于,所述主线程模块用于监听,所述读线程模块为发送处理器,所述写线程模块为接收处理器。
5.根据权利要求1所述的一种串口多路通信方法,其特征在于,所述虚拟串口层提供虚拟串口池以供APP连接,所述虚拟串口池根据APP的配置参数来生成。
【技术特征摘要】
1.一种串口多路通信方法,应用于windows端和安卓板卡的串口数据发送端,进行真实串口被占用时不同波特率串口的识别及数据处理,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种串口多路通信方法,其特征在于,所述虚拟串口被连接后还包括:
3.根据权利要求2所述的一种串口多路通信方法,其特征在于,所述...
【专利技术属性】
技术研发人员:李凯,封宛昌,
申请(专利权)人:江苏小牛电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。