System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术具体涉及一种面向对象的串行接口通信模块及其实现方法,属于嵌入式软件。
技术介绍
1、随着技术的不断发展,串行接口类型逐步增加,满足不同的应用场景。现有的串行接口包括uart、spi、i2c、can和1553b等,而随着物航天领域的快速发展,新的串行接口类型不断涌现。这些不同类型的串行接口在电气特性、传输速率、通信距离、协议规范等方面有所差异,以适应不同的应用场景和需求。同时在应用侧,除了串行接口多样性带来的挑战外,还存在数据包定义不一致的问题。不同应用领域的厂商可能对数据包的格式和协议有不同的要求和实现方式,这种数据包定义不一致给系统集成和数据交换带来了困难和限制。
技术实现思路
1、本专利技术解决的技术问题是:克服现有技术的不足,提供了一种面向对象的串行接口通信模块及其实现方法,解决串行接口通信模块与各种硬件串行接口和应用侧通信协议之间的耦合性问题,实现了抽象去耦合。
2、本专利技术解决技术的方案是:一种面向对象的串行接口通信模块实现方法,该方法包括如下步骤:
3、s1、定义串行接口硬件抽象类,所述串行接口硬件抽象类中定义了硬件串行接口打开方法、硬件串行接口关闭方法、硬件串行接口发送方法和硬件串行接口接收方法的名称、输入参数、返回值类型;
4、s2、针对现有的串行接口类型,分别对串行接口硬件抽象类进行实现,生成不同的串行接口物理层类,组成串行接口物理层类集合,所述串行接口物理层类中的方法用于打开、关闭硬件串行接口,收集硬件串行接口所接
5、s3、定义通信协议抽象类,所述通信协议抽象类包括串行数据的组帧方法和串行数据的解帧方法的名称、输入参数、返回值类型;通信协议包括串口数据帧的帧头、帧尾、数据帧长、校验方式;
6、s4、根据现有的通信协议,分别对通信协议抽象类进行实现,生成不同的通信协议类,组成通信协议类集合,通信协议类中的解帧方法用于提取串口数据帧中的有效数据;组帧方法在有效数据的基础上,增加帧头、帧尾以及校验方式,形成数据包;
7、s5、根据实际的通信协议和串行接口类型,从串行接口物理层接口类、通信协议类集合中提取相应的串行接口物理层接口类、通信协议类进行实例化,得到串行接口物理层接口模块和通信协议模块,并且将串行接口物理层接口模块和通信协议模块关联起来,形成硬件与通信协议去耦合的串行接口通信模块。
8、优选地,所述现有的串行接口类型包含1553b串行接口、uart串行接口、spi串行接口、i2c。
9、优选地,不同的通信协议帧头、帧尾、数据长度以及校验方式不同。
10、优选地,所述串行接口物理层接口模块中硬件串行接口接收方法、通信协议模块中的串行数据的解帧方法之间通过接收环形缓冲队列进行数据传递。
11、优选地,硬件串行接口接收方法的步骤为:
12、查询串口硬件缓冲区中是否有新的数据,如果有,将所有新数据提取并写入接收环形缓冲队列中;
13、数据写入接收环形缓冲队列的方法为:
14、定义接收写指针和接收写索引并初始化,接收写索引初始为0,接收写指针初始化为接收环形缓冲队列的首地址+接收写索引;每写入一个数据,接收写索引加1,再将接收写索引%接收环形缓冲队列的长度,以更新接收写索引。
15、优选地,所述串行数据的解帧方法的步骤:
16、s1.1、定义接收读指针和接收读索引,接收读索引初始为0,接收读指针初始化为接收环形缓冲队列的尾地址+接收读索引;
17、s1.2、从接收读指针指向的地址空间开始,按照倒序,提取与长度与帧尾长度相同的连续数据与通信协议中的帧尾比较,如果相同,则认为直到找到帧尾,记录帧尾在环形缓冲队列中的位置,进入步骤s1.3,否则,接收读索引加1,再将接收读索引%接收环形缓冲队列的长度,以更新接收读索引以及接收读指针,重复本步骤;
18、s1.3、根据帧尾在接收环形缓冲队列中的位置以及数据帧长,找到环形缓冲队列中帧头,将其与通信协议中的帧头进行比较,如果相同,进入步骤s1.4,不同,回到步骤s1.2;
19、s1.4、提取接收环形缓冲队列中有效数据,按照通信协议中的校验方式进行校验,将校验结果与接收环形缓冲队列中校验数据进行比较,如果相同,则将有效数据输出,否则,回到步骤s1.2。
20、优选地,所述串行数据的组帧方法的步骤:
21、定义一个数据容量大于最大的数据帧长度的临时数组,数组依次填充通信协议要求的帧头、有效数据、校验结果、帧尾;将组帧后的数据依次写入发送环形缓冲队列;
22、写入发送环形缓冲队列的方法为:定义发送写指针和发送写索引,发送写索引变量初始为0,发送写指针初始化为发送环形缓冲队列的首地址+发送写索引;每写入一个数据,发送写索引加1,将发送写索引%环形缓冲队列的长度,以更新发送写索引。
23、优选地,所述硬件串行接口发送方法的步骤:
24、首先判断发送环形缓冲队列是否存有新的有效数据,有,则读出新的有效数据写入串口硬件发送缓冲区,否则退出等待下一次判断;
25、读发送环形缓冲队列的方法为:定义发送读指针和发送读索引,发送读索引变量初始为0,发送读指针初始化为发送环形缓冲队列的首地址+发送读索引;每写入一个数据,发送读索引加1,将发送读索引%发送环形缓冲队列的长度,以更新发送索引。
26、优选地,判断发送环形缓冲队列是否存有新的有效数据的方法如下:
27、发送读索引与发送写索引是否相等,如果不相等则认为发送环形缓冲队列中有新的数据。
28、本专利技术的另一个技术方案是:一种面向对象的串行接口模块,采用上述方法实现,包括硬件串行接口通信模块、组帧模块、解帧模块;
29、串行接口通信模块,用于打开、关闭串行硬件接口;收集串行硬件接口所接收的原始数据;将待发送的数据包通过串行硬件接口发送;
30、组帧模块,按照通信协议,在有效数据的基础上,增加帧头、帧尾以及校验,形成数据包,发送给串行接口通信模块;
31、解帧模块,根据通信协议,从串行接口通信模块收集的原始数据中提取数据帧中的有效数据。
32、本专利技术与现有技术相比的有益效果是:
33、(1)、抽象去耦合。本专利技术通过引入抽象的通用串行通信接口及相关类,实现不同串行接口硬件的统一化处理,实现了原始数据收发与串行接口类型的分离;通过引入抽象的通用通信协议接口及相关类,有效应对应用侧数据包定义不一致的挑战,提高系统的集成能力和数据交换的灵活性;解决了串行接口通信模块与硬件串行接口和通信协议之间的耦合问题,提高了系统的灵活性和可拓展性。
34、(2)、兼容性和互操作性。本专利技术通过定义统一的数据包格式和协议定义,实现了不同应用的数据交换和通信的互操作性。
35、(3)、灵活的配置和拓展。本专利技术可以本文档来自技高网...
【技术保护点】
1.一种面向对象的串行接口通信模块实现方法,其特征在于包括如下步骤:
2.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于所述现有的串行接口类型包含1553B串行接口、UART串行接口、SPI串行接口、I2C。
3.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于不同的通信协议帧头、帧尾、数据长度以及校验方式不同。
4.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于所述串行接口物理层接口模块中硬件串行接口接收方法、通信协议模块中的串行数据的解帧方法之间通过接收环形缓冲队列进行数据传递。
5.根据权利要求4所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于硬件串行接口接收方法的步骤为:
6.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法其特征在于所述串行数据的解帧方法的步骤:
7.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于所述串行数据的组帧方法的步骤:
9.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法判断发送环形缓冲队列是否存有新的有效数据的方法如下:
10.一种面向对象的串行接口模块,其特征在于采用权利要求1~9任一项实现,包括硬件串行接口通信模块、组帧模块、解帧模块;
...【技术特征摘要】
1.一种面向对象的串行接口通信模块实现方法,其特征在于包括如下步骤:
2.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于所述现有的串行接口类型包含1553b串行接口、uart串行接口、spi串行接口、i2c。
3.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于不同的通信协议帧头、帧尾、数据长度以及校验方式不同。
4.根据权利要求1所述的一种面向对象的串行接口通信协议抽象去耦合方法,其特征在于所述串行接口物理层接口模块中硬件串行接口接收方法、通信协议模块中的串行数据的解帧方法之间通过接收环形缓冲队列进行数据传递。
5.根据权利要求4所述的一种面向对象的串行接口通信协议抽象去耦...
【专利技术属性】
技术研发人员:程光耀,方海红,田恒春,童轶男,蔡志旭,张竑颉,韩旭,寇宇,苏连明,董春杨,王菁华,凌咸庆,张甜,张超,王东东,鞠晓燕,李焕东,宋景亮,杨宇,王玥兮,谢雨霖,司文文,宋得良,刘洋,秦卓,王晨,王洁,郭彤旭,
申请(专利权)人:北京航天长征飞行器研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。