CN106445462B - 一种Unity3D平台的串口数据处理方法 - Google Patents
一种Unity3D平台的串口数据处理方法 Download PDFInfo
- Publication number
- CN106445462B CN106445462B CN201610830812.8A CN201610830812A CN106445462B CN 106445462 B CN106445462 B CN 106445462B CN 201610830812 A CN201610830812 A CN 201610830812A CN 106445462 B CN106445462 B CN 106445462B
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- byte
- postamble
- processing method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000004891 communication Methods 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 238000000034 method Methods 0.000 claims description 6
- 238000013480 data collection Methods 0.000 claims 1
- 230000001105 regulatory effect Effects 0.000 claims 1
- 230000004927 fusion Effects 0.000 abstract description 3
- 230000003044 adaptive effect Effects 0.000 abstract description 2
- 238000012937 correction Methods 0.000 abstract description 2
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种Unity3D平台的串口数据处理方法,本发明通过融合、校正将在Unity3D平台中通过串口读取的错误数据转化为正确可用的数据。通过对处理后的数据进行二次过滤,可过滤掉无法校正的空数据。在Unity3D平台中通过开辟多线程的方式实现自动动态适配硬件配置或通过设置时间阈值的方式来控制多线程的开启达到手动调节接收数据的速率。
Description
技术领域
本发明涉及一种Unity3D平台的串口数据处理方法,属于Unity3D平台串口通信开发技术领域。
背景技术
串行接口简称串口,也称串行通信接口或串行通讯接口 ( 通常指 COM 接口 ),是采用串行通信方式的扩展接口。其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传输速度较慢。由于串口使用简单,成本低廉,现在被普遍应用于产品的开发和测试过程中。
目前Unity3D平台给出的串口读取接口可以在最小单位时间点读取串口数据。但应用串口进行通信测试时存在一些读取数据错误问题从而影响对数据的使用,例如最常出现的就是每帧读取的数据并不是一帧完整的数据,绝大多数情况下会出现诸如数据采集了本应为前一帧的后半段数据和本应为此帧数据的前半段数据的结合、读取的数据为空数据或半空数据,然而当这一部分数据如果无法使用时,就会造成长时间的数据丢失,使得程序出现相应的丢帧、卡顿甚至崩溃的情况。
目前处理串口数据的硬件设备和串口处理数据的系统仅仅给出了调节接收数据速度、过滤错误数据的功能,然而如果遇到错误数据量大却无法校正仅仅将这些错误数据过滤后,则依然会出现大范围数据丢失、程序出现卡顿丢帧甚至崩溃的情况。
鉴于此,找到一种可以将这些无法使用的错误数据融合、校正、过滤成为可以使用的正确数据的方法,在Unity3D平台串口通信开发领域意义重大。
发明内容
本发明要解决的技术问题是提供一种Unity3D平台的串口数据处理方法,融合、校正、过滤Unity3D平台在读取串口数据时读取到的错误数据,保证接收到的错误数据经过处理后每一帧数据都是正确可用的。
为了解决所述技术问题,本发明采用的技术方案是:一种Unity3D平台的串口数据处理方法,所述方法包括:
标定数据的帧头字节、帧尾字节;
将此帧字节数据全部转化为一个字符串;
检查当前帧接收到的一帧数据的开头字节是否为帧头字符、帧尾是否为帧尾字符;
如果帧头帧尾字符对比正确,则将此帧数据暂时放入一个事先定义好的完整数据集合中;
如果对比错误,则通过寻找帧尾帧头的方式得出完整数据,将处理后的完整数据放入完整数据集合当中;
将上述完整数据集合的数据取出进行校验,校验正确则将数据放入可使用正确数据集合中。
本发明所述Unity3D平台的串口数据处理方法,对比错误后得到完整数据的具体步骤为:如果对比错误,则先遍历字符串,查看此帧数据中是否有帧尾帧头连接在一起的字符串,如果有则以此为界,将前段数据与后段数据分开,新建两个字符串str01、str02,此时若是第一帧读取数据,则将前段数据在内存中销毁,将后段数据加入帧头后存入str02待用,如果不是第一帧数据,则将此帧数据的前半段数据与上帧数据存储起来的后半段数据相加连为同一段数据,在数据两端加上帧头、帧尾,并遍历字符串,计算其长度是否等于一帧数据的长度,若是,其为一端完整数据,将数据存入str01,然后将此帧数据的后半段数据存入str02以备下一帧使用;若此帧数据不含有帧尾帧头,仅有帧尾存在于倒数第二个字节,则用帧头加上这段数据的第一个字节到倒数第二个字节组成一帧完整数据,然后将处理后的数据与开头数据做对比,如果对比结果正确,则此数据为处理后的完整数据,放入完整数据集合当中。
本发明所述Unity3D平台的串口数据处理方法, Unity3D平台脚本读取串口函数的后面加入此方法返回处理过的数据即为正确数据。
本发明所述Unity3D平台的串口数据处理方法,将读取数据函数放入新开辟的多线程中,按照不同计算机设备的性能自动的调节接收数据的速率,保证自动兼容所有配置的硬件设备。
本发明所述Unity3D平台的串口数据处理方法,在脚本中设置一个时间阈值,每隔所述时间阈值则开启一次多线程来接收数据。
本发明所述Unity3D平台的串口数据处理方法,根据硬件输入的数据通信协议在算法入口用参数动态设置用来验证数据完整性的帧头与帧尾的字符,来动态兼容不同硬件的通信协议。
本发明所述Unity3D平台的串口数据处理方法,根据硬件输入的数据通信协议在算法入口用参数动态设置每帧接收数据的长度,来动态兼容不同硬件的通信协议。
本发明所述Unity3D平台的串口数据处理方法,在完整数据集合取处理过的完整数据时,按照先进先出的原则将完整数据集合的数据取出,取出后按照此帧数据的校验特性进行相应的异或或者加减操作的校验,校验正确则将数据放入可使用正确数据集合当中。
本发明的有益效果:1.通过融合、校正将在Unity3D平台中通过串口读取的错误数据转化为正确可用的数据。2.通过对处理后的数据进行二次过滤,可过滤掉无法校正的空数据。3. 在Unity3D平台中通过开辟多线程的方式实现自动动态适配硬件配置或通过设置时间阈值的方式来控制多线程的开启达到手动调节接收数据的速率。4.通过在算法函数入口参数处动态的传入接收目标数据的数据长度和枕头帧尾的字符来动态的适配所有硬件的通信协议。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的说明和限定。
一种Unity3D平台的串口数据处理方法,该方法的具体步骤为:1、标定数据的帧头字节、帧尾字节;2、将此帧字节数据全部转化为一个字符串;3、检查当前帧接收到的一帧数据的开头字节是否为帧头字符、帧尾是否为帧尾字符;4、如果帧头帧尾字符对比正确,则将此帧数据暂时放入一个事先定义好的完整数据集合当中;5、如果对比错误,则先遍历字符串,查看此帧数据中是否有帧尾帧头连接在一起的字符串,如果有则以此为界,将前段数据与后段数据分隔开来。此时若是第一帧读取数据,则新建两个字符串str01、str02,将前段数据在内存中销毁,将后段数据存入str02待用。在下一帧接收数据时若接收到的数据含有帧尾帧头,则此帧数据一定是上帧数据的延续,所以此帧数据的上半段数据与上帧数据存储起来的下半段数据可相加起来连为同一段数据,再将前后两端分别加上帧头、帧尾,保险起见,可以遍历字符串,计算其长度是否等于一帧数据的长度,若是,其为一段完整可用的数据,存入str01,然后将下半段数据存入str02以备下一帧之用。若此帧数据不含有帧尾帧头,仅存在帧尾,处于倒数第二个字节,则用帧头加上这段数据的第一个字节到倒数第二个字节组成一帧完整数据。然后将此帧处理后的数据与开头数据做对比,如果对比结果正确,则此数据为处理后的完整数据,放入处理后数据的集合当中。6、将处理后的数据按照先进先出的原则依次取出,取出后按照此帧数据的校验特性进行相应的异或或者加减操作的校验,校验正确则将数据放入可使用正确数据集合当中。7、Unity3D平台脚本读取串口函数的后面加入此种算法后返回处理过的数据即为正确数据。如图1所示,为本发明的流程图。
本实施例中,为了自动兼容所有配置的硬件设备,将读取数据函数放入新开辟的多线程中,按照不同计算机设备的性能自动的调节接收数据的速率,保证自动兼容所有配置的硬件设备。
本实施例中,为了调节接收数据的速率,根据自己软件的需求在脚本中设置一个时间阈值,每隔所述时间阈值则开启一次多线程来接收数据,通过这样的方式来静态的设置自己需要的串口读取速率。
本实施例中,为了兼容不同硬件的通信协议,可以根据硬件输入的数据通信协议在算法入口用参数动态设置用来验证数据完整性的帧头与帧尾的字符,或者根据硬件输入的数据通信协议在算法入口用参数动态设置每帧接收数据的长度。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明作出的改进和替换,属于本发明的保护范围。
Claims (7)
1.一种Unity3D平台的串口数据处理方法,其特征在于:所述方法包括:
标定数据的帧头字节、帧尾字节;
将此帧数据全部转化为一个字符串;
检查当前帧接收到的一帧数据的开头字节是否为帧头字节、帧尾是否为帧尾字节;
如果帧头字节和帧尾字节对比正确,则将此帧数据暂时放入一个事先定义好的完整数据集合中;
如果对比错误,则通过寻找帧尾帧头的方式得出完整数据,将处理后的完整数据放入完整数据集合当中,对比错误后得到完整数据的具体步骤为:如果对比错误,则先遍历字符串,查看此帧数据中是否有帧尾帧头连接在一起的字符串,如果有则以此为界,将前段数据与后段数据分开,新建两个字符串str01、str02,此时若是第一帧读取数据,则将前段数据在内存中销毁,将后段数据加入帧头后存入str02待用,如果不是第一帧数据,则将此帧数据的前半段数据与上帧数据存储起来的后半段数据相加连为同一段数据,在数据两端加上帧头、帧尾,并遍历字符串,计算其长度是否等于一帧数据的长度,若是,其为一段完整数据,将数据存入str01,然后将此帧数据的后半段数据存入str02以备下一帧使用;若此帧数据不含有帧尾帧头,仅有帧尾存在于倒数第二个字节,则用帧头加上这段数据的第一个字节到倒数第二个字节组成一帧完整数据,然后将处理后的数据与开头字节做对比,如果对比结果正确,则此数据为处理后的完整数据,放入完整数据集合当中;
将上述完整数据集合的数据取出进行校验,校验正确则将数据放入可使用正确数据集合中。
2.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:Unity3D平台脚本读取串口函数的后面加入正确数据集合中的数据即为正确数据。
3.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:将读取数据函数放入新开辟的多线程中,按照不同计算机设备的性能自动地调节接收数据的速率,保证自动兼容所有配置的硬件设备。
4.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:在脚本中设置一个时间阈值,每隔所述时间阈值则开启一次多线程来接收数据。
5.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:根据硬件输入的数据通信协议在标定数据的帧头字节、帧尾字节之前用参数动态设置用来验证数据完整性的帧头与帧尾的字节,来动态兼容不同硬件的通信协议。
6.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:根据硬件输入的数据通信协议在标定数据的帧头字节、帧尾字节之前用参数动态设置每帧接收数据的长度,来动态兼容不同硬件的通信协议。
7.根据权利要求1所述的Unity3D平台的串口数据处理方法,其特征在于:按照先进先出的原则将完整数据集合的数据取出,取出后按照此帧数据的校验特性进行相应的异或或者加减操作的校验,校验正确则将数据放入可使用正确数据集合当中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830812.8A CN106445462B (zh) | 2016-09-19 | 2016-09-19 | 一种Unity3D平台的串口数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830812.8A CN106445462B (zh) | 2016-09-19 | 2016-09-19 | 一种Unity3D平台的串口数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106445462A CN106445462A (zh) | 2017-02-22 |
CN106445462B true CN106445462B (zh) | 2019-07-23 |
Family
ID=58168737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610830812.8A Active CN106445462B (zh) | 2016-09-19 | 2016-09-19 | 一种Unity3D平台的串口数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445462B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739572B (zh) * | 2018-12-25 | 2022-01-28 | 江南机电设计研究所 | 一种通用化一体化串口通信方法 |
CN114003522A (zh) * | 2021-10-29 | 2022-02-01 | 四川虹美智能科技有限公司 | 基于串口的通讯方法、装置及计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142917A (zh) * | 2011-03-28 | 2011-08-03 | 华为技术有限公司 | 数据帧的定位方法和装置 |
CN102510323A (zh) * | 2011-09-22 | 2012-06-20 | 航天科工惯性技术有限公司 | 一种串口数据的帧识别方法 |
CN103347025A (zh) * | 2013-07-10 | 2013-10-09 | 北京航天自动控制研究所 | 一种空间飞行器的遥测数据处理方法 |
-
2016
- 2016-09-19 CN CN201610830812.8A patent/CN106445462B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142917A (zh) * | 2011-03-28 | 2011-08-03 | 华为技术有限公司 | 数据帧的定位方法和装置 |
CN102510323A (zh) * | 2011-09-22 | 2012-06-20 | 航天科工惯性技术有限公司 | 一种串口数据的帧识别方法 |
CN103347025A (zh) * | 2013-07-10 | 2013-10-09 | 北京航天自动控制研究所 | 一种空间飞行器的遥测数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106445462A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE40918E1 (en) | Method and device for transmitting data frames | |
CN107113087B (zh) | 将帧经由总线系统从发送器串行传输至至少一个接收器的方法和用于总线系统的参与站 | |
CN106445462B (zh) | 一种Unity3D平台的串口数据处理方法 | |
CN101171790B (zh) | 具有适应性选通偏移调整功能的接收机 | |
CN109936624A (zh) | Http请求报文头的适配方法、装置和计算机设备 | |
CN107148760B (zh) | 将帧经由总线系统从发送器串行传输至至少一个接收器的方法和用于总线系统的参与站 | |
CA2743273A1 (en) | Method and device for intercepting junk mail | |
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CN111539206B (zh) | 一种确定敏感信息的方法、装置、设备及存储介质 | |
CN104765573A (zh) | 一种串口通讯数据处理分析方法 | |
US11477056B2 (en) | Method and apparatus for controlling communication compensation, and air conditioner | |
CN109885525B (zh) | Uart接收方法、装置、电子设备及可读存储介质 | |
CA1294379C (en) | Method and arrangement for compensating shifts in delay produced by the doppler effect in bursts in a tdma frame | |
US9083381B2 (en) | Method of determining at least one parameter of an error-correcting code implemented on transmission, corresponding device and computer program | |
JPWO2016185513A1 (ja) | パケットフィルタ装置、及びパケットフィルタ方法 | |
US7792233B2 (en) | Packet preamble search method and device thereof | |
EP1603302B1 (de) | Verfahren und Vorrichtung zur Codierung, Übertragung und Decodierung digitaler Daten | |
US20210200524A1 (en) | Method and apparatus for upgrading software | |
JPS58116825A (ja) | 情報連照方式 | |
CN110471669B (zh) | 一种空指针引用的检测方法及检测装置 | |
US9154294B2 (en) | Resynchronization method of a received stream of groups of bits | |
CN110049312B (zh) | 一种arinc818协议故障注入方法及装置 | |
CN109743178B (zh) | 一种防止区块链的块链被劫持的方法及系统 | |
US6769092B1 (en) | Method and system for testing linked list integrity | |
JP2763394B2 (ja) | 通信制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231114 Address after: Room 7-1912, No.5.7.9 Jingsi Road, Shizhong District, Jinan City, Shandong Province, 250000 Patentee after: Magic Future (Shandong) Digital Technology Co.,Ltd. Address before: Room C816, Jiahui Global Plaza, No. 548 Beiyuan Street, Jinan City, Shandong Province, 250014 Patentee before: JINAN CHAOGAN INTELLIGENT TECHNOLOGY CO.,LTD. |