自定义数据传输通信协议

合集下载

串口自定义通信协议程序

串口自定义通信协议程序

串口自定义通信协议程序【原创实用版】目录一、串口通信协议的基础知识二、自定义串口通信协议的实现方法三、温度采集器与上位机串口通信协议的设计实例四、自定义串口通信协议的应用优势与局限性正文一、串口通信协议的基础知识串口通信协议是一种基于串行通信的数据传输方式。

与并行通信相比,串口通信协议具有线路简单、成本低的优点。

在电子设备之间进行数据传输时,常常使用串口通信协议。

在串口通信中,数据是逐个比特按顺序进行传输的。

发送方将数据字符从并行转换为串行,按位发送给接收方。

接收方收到串行数据后,再将其转换为并行数据。

这种通信方式在仅使用一根信号线的情况下完成数据传输,具有线路简单、成本低的优点。

但是,由于串口通信是按位进行的,因此传输速度较慢,且容易受到噪声干扰。

二、自定义串口通信协议的实现方法自定义串口通信协议的实现方法主要包括以下几个步骤:1.选择合适的硬件层通信协议。

常见的硬件层通信协议有 RS-232、RS-485 等。

选择合适的通信协议需要考虑通信距离、通信速率、抗干扰能力等因素。

2.设计数据帧格式。

数据帧格式包括起始符、地址符、数据长度、数据内容、校验和、结束符等。

起始符用于指示数据帧的开始,地址符用于指示数据帧的地址,数据长度用于指示数据帧的数据内容长度,数据内容用于存储实际的数据信息,校验和用于检验数据传输的正确性,结束符用于指示数据帧的结束。

3.编写下位机程序。

下位机程序主要负责发送和接收数据,实现硬件层通信协议。

在编写下位机程序时,需要考虑数据帧的组装、发送、接收、解析等方面。

4.编写上位机程序。

上位机程序主要负责与下位机进行通信,实现数据采集、控制等功能。

在编写上位机程序时,需要考虑数据帧的解析、数据处理、控制指令的发送等方面。

三、温度采集器与上位机串口通信协议的设计实例假设我们需要设计一个温度采集器与上位机之间的串口通信协议,用于实现温度采集数据上传和上位机控制每路温度测量通道的开启功能。

TCP协议报文自定义

TCP协议报文自定义

TCP协议报文自定义TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的传输层协议,广泛应用于互联网通信中。

它通过建立一个可靠的、全双工的通信连接,在网络中传输数据。

TCP协议的报文格式在通信过程中扮演着至关重要的角色。

本文将探讨如何自定义TCP协议报文,以满足个性化的数据传输需求。

TCP协议的报文由首部和数据两部分组成。

首部包含了TCP协议的控制信息和连接状态信息,数据部分则是待传输的实际数据。

在自定义TCP协议报文时,我们可以通过修改首部的相关字段来实现特定的功能。

首先,我们可以自定义序号字段(Sequence Number)和确认号字段(Acknowledgment Number)来实现更灵活的数据传输。

序号字段用于标识发送方发送的数据字节的序号,而确认号字段则用于标识接收方期望接收的下一个数据字节的序号。

通过调整序号和确认号字段的值,可以实现数据的重传、顺序重排等功能。

其次,我们可以自定义窗口大小字段(Window Size)来控制数据传输的流量控制。

窗口大小指的是接收方在接收到确认消息前能够缓存的数据量。

通过修改窗口大小字段的值,可以调整发送方发送数据的速率,以适应不同的网络环境和带宽限制。

另外,我们还可以自定义首部中的标志字段来实现更多的功能。

例如,通过设置SYN标志和ACK标志,可以在建立连接时进行握手操作。

通过设置FIN标志,可以在关闭连接时进行释放操作。

通过设置RST标志,可以强制关闭连接,并重置所有的连接状态。

通过设置URG标志,可以标识紧急数据。

最后,我们可以自定义首部的选项字段来实现协议的扩展。

选项字段用于在首部中承载一些可选的控制信息。

常见的选项包括窗口扩大因子、时间戳、最大报文长度等。

通过增加自定义的选项字段,可以扩展TCP协议的功能和灵活性。

自定义TCP协议报文需要注意一些问题。

首先,必须确保所使用的自定义报文格式与接收方的解析器兼容。

自定义通信协议

自定义通信协议

自定义通信协议在计算机网络通信中,通信协议是计算机之间进行通信所遵循的规则和约定。

通信协议的设计和选择对于网络通信的效率和安全性至关重要。

除了常见的TCP/IP协议、HTTP协议等通用协议之外,有些特定的应用场景需要自定义通信协议来满足特定的需求。

自定义通信协议是指根据特定的通信需求和环境,由通信双方协商制定的适合自身应用的通信规则和约定。

自定义通信协议可以根据实际需求进行灵活定制,以满足特定应用场景下的通信要求。

首先,自定义通信协议的设计需要充分考虑通信的安全性。

在网络通信中,数据的安全性是至关重要的。

通过加密算法和身份认证机制,可以保障通信数据的机密性和完整性,防止数据在传输过程中被窃取或篡改。

因此,自定义通信协议需要考虑如何对通信数据进行加密和解密,以及如何进行身份验证和权限控制。

其次,自定义通信协议还需要考虑通信的效率和稳定性。

在实际的应用场景中,通信双方可能处于不同的网络环境下,通信的稳定性和效率会受到网络带宽、延迟等因素的影响。

因此,自定义通信协议需要设计合理的数据传输机制,以减少通信的延迟和丢包率,提高通信的稳定性和效率。

另外,自定义通信协议还需要考虑通信的灵活性和扩展性。

随着应用需求的变化,通信协议可能需要进行升级和扩展。

因此,自定义通信协议需要具备良好的扩展性,能够灵活地支持新的功能和特性的添加,同时保持与旧版本的兼容性。

在实际的应用中,自定义通信协议可以应用于各种场景,如物联网设备之间的通信、多人在线游戏的网络通信、金融交易系统的通信等。

通过自定义通信协议,可以更好地满足特定应用场景下的通信需求,提高通信的安全性、效率和稳定性。

总的来说,自定义通信协议的设计需要充分考虑通信的安全性、效率性、稳定性以及灵活性和扩展性,以满足特定应用场景下的通信需求。

通过合理设计和选择自定义通信协议,可以更好地支持各种应用场景下的网络通信,提高通信的质量和可靠性。

自定义通信协议

自定义通信协议

自定义通信协议1. 引言通信协议是计算机网络中进行信息传输的规则和约定。

自定义通信协议是指根据特定需求,自行设计和制定的通信规则。

本文将介绍自定义通信协议的基本概念、设计原则以及示例。

2. 自定义通信协议的基本概念自定义通信协议是一种特定领域的通信规则,在该协议下,通信的双方按照预先定义好的格式和规则进行信息交换。

自定义通信协议的设计可以灵活地满足特定需求,提高通信效率和安全性。

3. 自定义通信协议的设计原则设计一个好的自定义通信协议需要考虑以下几个原则:3.1 简洁性通信协议应该尽量简洁明了,避免过多的冗余信息和复杂的操作步骤。

简洁的通信协议能够提高通信效率,并减少出错的可能性。

3.2 安全性通信协议应该具备一定的安全性,防止信息被非法篡改和窃取。

可以采用加密算法和身份验证等手段来增强通信的安全性。

3.3 可扩展性通信协议应该具备一定的可扩展性,能够适应未来可能出现的新需求和新技术。

设计时应考虑到通信协议的可升级性,以便后续的功能扩展。

4. 自定义通信协议示例下面是一个简单的自定义通信协议示例,用于传输传感器数据:4.1 协议格式自定义通信协议的格式如下:| 数据类型 | 数据长度 | 数据 |•数据类型:表示数据的类型,如温度、湿度等。

•数据长度:表示数据的长度,以字节为单位。

•数据:实际的传感器数据。

4.2 示例协议包以下是一个示例的通信协议包:| 温度 | 1字节 | 25℃ |该协议包表示传输的是温度数据,数据长度为1字节,具体的数据为25℃。

4.3 示例协议流程示例通信协议的流程如下:1.传感器将数据按照协议格式打包。

2.数据包通过网络传输到接收端。

3.接收端按照协议格式解析数据包,获取传感器数据。

4.接收端对数据进行处理和存储。

5. 总结自定义通信协议是一种根据特定需求自行设计和制定的通信规则。

本文介绍了自定义通信协议的基本概念、设计原则以及一个示例。

设计一个好的自定义通信协议需要考虑简洁性、安全性和可扩展性等因素,以提高通信效率和安全性。

串口自定义通信协议程序

串口自定义通信协议程序

串口自定义通信协议程序摘要:一、什么是自定义串口通信协议二、自定义串口通信协议的应用实例三、如何实现自定义串口通信协议四、自定义串口通信协议的优缺点五、总结正文:一、什么是自定义串口通信协议自定义串口通信协议是指在串口通信过程中,通过约定好的规则和格式来进行数据传输的一套通信规则。

这套规则通常包括数据格式、传输速率、校验方式等,以便保证数据在传输过程中的准确性和完整性。

在电子设备、计算机外设、通信设备等领域都有广泛的应用。

二、自定义串口通信协议的应用实例以温度采集器与上位机的串行通信协议为例,可以实现温度采集数据上传和上位机控制每路温度测量通的开启功能。

具体的通信协议可以参考如下步骤来实现:首先选择层通信协议设计相应的通信协议,然后编写相关的下位机程序和上位机程序,最后实现通信协议的收发机制。

三、如何实现自定义串口通信协议实现自定义串口通信协议需要以下几个步骤:1.选择合适的硬件层通信协议。

常见的硬件层通信协议有RS-232、RS-485 等。

2.设计数据格式和传输速率。

根据实际需求,确定数据格式(如字节、字符等)和传输速率。

3.实现校验和错误检测。

为了保证数据传输的准确性,需要实现校验和错误检测机制,如奇偶校验、CRC 校验等。

4.编写上下位机程序。

根据通信协议的规则,编写下位机程序(如温度采集器)和上位机程序(如上位计算机)。

5.实现通信协议的收发机制。

通过硬件设备(如串口模块)或软件(如串口通信库)实现通信协议的收发机制。

四、自定义串口通信协议的优缺点优点:1.灵活性高:自定义串口通信协议可以根据实际需求进行设计,具有较高的灵活性。

2.适用范围广:串口通信协议可以应用于各种电子设备、计算机外设、通信设备等领域。

3.实现简单:相对于其他通信协议(如TCPIP),串口通信协议实现较为简单,成本较低。

缺点:1.传输速率有限:串口通信协议的传输速率有限,不适合高速数据传输。

2.抗干扰能力较弱:串口通信协议的抗干扰能力较弱,容易受到环境干扰。

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现在实际开发中,应用通信功能时不可避免地会使用通讯协议,常见的通讯协议一般有TCP/IP、UDP和HTTP等,但是在一些特殊场景下,需要使用自定义的通讯协议,本文将介绍c语言实现自定义通讯协议的具体实现方法。

一、通讯协议的概念通讯协议是一种规范,它定义了通讯的格式、内容、序列、错误控制等信息,使通信双方能够正确地理解和使用通信协议。

自定义通讯协议的实现需要遵守以下步骤:1、确定通讯协议内容首先需要确定自定义通讯协议的内容,包括通讯数据的格式、内容、长度、序列以及通讯的命令等信息。

一般情况下,自定义通讯协议应根据实际应用场景进行设计。

2、定义数据接口定义数据的输入输出接口是自定义通讯协议的重要一个步骤,一般情况下,数据接口应该尽量简单化,实现数据的快速解析以及传输过程中对数据的处理等功能。

3、实现协议解析功能协议解析功能是实现自定义通讯协议的重要一个内容,在实现协议解析功能时,可以利用c语言中的结构体来实现数据的存储、传输、解析等功能,同时,还需要实现数据的校验和、长度校验等功能,以保证数据传输的安全可靠性。

协议编码功能是实现自定义通讯协议的另一个重要内容,主要用于将应用数据编码成符合协议要求的数据格式,常用的编码方式有二进制编码和文本编码方式。

5、实现数据传输功能数据传输功能是自定义通讯协议的另一个重要内容,主要实现数据在网络上的传输功能,常见的传输方式有TCP/IP、UDP和HTTP等。

三、自定义通讯协议的优点1、提高系统的可扩展性和灵活性。

自定义通讯协议根据实际应用场景进行设计,可以更好的满足应用程序的需要,同时也提高了系统的可扩展性和灵活性。

2、提高通讯安全性。

自定义通讯协议拥有自己的通讯协议格式和加解密方式,以保证数据传输的安全可靠,提高通讯的安全性。

3、提高通讯速度和效率。

自定义通讯协议可以自由定义数据格式和传输方式,同时可以针对应用程序对数据传输进行优化处理,提高数据传输的速度和效率。

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现

c语言自定义通讯协议的具体实现
在C语言中,自定义通讯协议的具体实现可以分为以下几步:
1. 确定通讯协议的格式和内容:通讯协议应该包含哪些信息以及信息的格式是什么样的,如何标识数据包的开始和结束等。

2. 定义数据结构:根据通讯协议的格式和内容,定义合适的数据结构来存储数据。

例如,可以定义一个结构体来表示一个数据包,包含标识数据包的头部和尾部以及通讯协议中规定的各种信息。

3. 编写数据包的组装和解析函数:根据定义的数据结构,编写组装和解析函数,将数据转化为通讯协议中规定的格式,并将接收到的数据还原为原始数据。

4. 实现通讯协议的传输:根据通讯协议的传输方式,使用相应的函数或库实现数据的传输,如TCP/IP、串口通信等。

5. 测试和调试:进行测试和调试,确保通讯协议的实现符合预期,能够正常工作。

需要注意的是,在自定义通讯协议时,要考虑到通讯的稳定性和可靠性,避免数据丢失和传输错误的情况发生。

同时,还要考虑通讯协议的安全性,防止数据被篡改或窃取。

- 1 -。

单片机自定义协议通信

单片机自定义协议通信

单片机自定义协议通信
首先,自定义协议通信的设计需要考虑数据帧的格式。

数据帧通常包括起始标志、地址信息、数据内容、校验位和结束标志等字段。

起始标志和结束标志用于标识数据帧的开始和结束,地址信息用于指示数据的发送方和接收方,数据内容是实际传输的信息,校验位用于检测数据的完整性和准确性。

其次,通信规则也是自定义协议通信设计的重要部分。

通信规则包括数据的发送和接收流程、数据帧的处理方式、重发机制、错误处理等。

在设计通信规则时,需要考虑通信的稳定性、实时性和可靠性。

另外,校验机制也是自定义协议通信设计中至关重要的部分。

常见的校验机制包括奇偶校验、CRC校验、校验和等,用于检测数据在传输过程中是否发生错误,以保证数据的准确性。

此外,单片机自定义协议通信还需要考虑通信的功耗、通信速率、通信距离等实际应用场景中的因素。

在实际应用中,需要根据具体的通信需求和环境来选择合适的通信协议设计方案。

总的来说,单片机自定义协议通信涉及到数据帧格式、通信规则、校验机制等多个方面的设计,需要综合考虑通信的稳定性、实时性、可靠性以及实际应用场景中的因素。

设计合理的自定义通信协议能够提高单片机系统的通信效率和可靠性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.上位机和下位机中的数据发送
物理通信层中提供了两个基本的操作函数, 发送一个字节数据则为数据发送的 基础。数据包的发送即把数据包中的左右字节按照顺序一个一个的发送数据而 已。当然发送的方法也有不同。 在单片机系统中,比较常用的方法是直接调用串口发送单个字节数据的函数。 这种方法的缺点是需要处理器在发送过程中全程参与, 优点是所要发送的数据能 够立即的出现在通信线路上, 能够立即被接收端接收到。另外一种方法是采用中 断发送的方式, 所有需要发送的数据被送入一个缓冲区,利用发送中断将缓冲区 中的数据发送出去。 这种方法的优点是占用处理器资源小,但是可能出现需要发 送的数据不能立即被发送的情况,不过这种时延相当的小。对于 51 系列单片机, 比较倾向于采用直接发送的方式,采用中断发送的方式比较占用 RAM 资源,而且 对比直接发送来说也没有太多的优点。以下是 51 系列单片机中发送单个字节的 函数。 void SendByte(unsigned char ch) { SBUF = ch; while(TI == 0); TI = 0; } 上位机中关于串口通信的方式也有多种, 这种方式不是指数据有没有缓冲的问 题, 而是操作串口的方式不同, 因为 PC 上数据发送基本上都会被缓冲后再发送。 对于编程来说操作串口有三种方式,一、使用 windows 系统中自带的串口通信控 件,这种方式使用起来比较简单,需要注意的是接收时的阻塞处理和线程机制。 二、使用系统的 API 直接进行串口数据的读取,在 windows 和 linux 系统中,设 备被虚拟为文件, 只需要利用系统提供的 API 函数即可进行串口数据的发送和读 取。三、使用串口类进行串口操作。在此只介绍 windows 环境下利用串口类编程 的方式。 CSerialPort 是比较好用的串口类。它提供如下的串口操作方法: void WriteToPort(char* string, int len); 串口初始化成功后, 调用此函数即可向串口发送数据。为了避免串口缓冲所带 来的延时,可以开启串口的冲刷机制。
4.上位机中的数据接收和命令处理
上位机中数据接收的过程与下位机可以做到完全一致, 不过针对不同的串口操 作方法有所不同。对于阻赛式的串口读函数,例如直接进行 API 操作或者调用 windows 的串口通信控件,最好能够开启一个线程专门用于监视串口的数据接 收, 每接收到一个数据可以向系统发送一个消息。笔者常用的 CSerialPort 类中 就是这样的处理过程。CSerialPort 打开串口后开启线程监视串口的数据接收, 将接收的数据保存到缓冲区, 并向父进程发送接收数据的消息,数据将随消息一 起发送到父进程。 父进程中开启此消息的处理函数,从中获取串口数据后就可以 把以上的代码拷贝过来使用。 CSerialPort 向父类发送的消息号如下: #define WM_COMM_RXCHAR WM_USER+7 // A character was received and placed in the input buffer. 因此需要手动添加此消息的响应函数: afx_msg LONG OnCommunication(WPARAM ch, LPARAM port); ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication) 响应函数的具体代码如下: LONG CWellInfoView::OnCommunication(WPARAM ch, LPARAM port) { int retval = 0; rcvdat = (BYTE)ch; if(state_machine == 0) // 协议解析状态机 { if(rcvdat == 0x55) // 接收到帧头第一个数据 state_machine = 1; else state_machine = 0; // 状态机复位 } else if(state_machine == 1) { if(rcvdat == 0xAA) // 接收到帧头第二个数据 state_machine = 2; else state_machine = 0; // 状态机复位 ......
此过程中, 使用了一个变量 state_machine 作为协议状态机的转换状态,用于 确定当前字节处于一帧数据中的那个部位, 同时在接收过程中自动对接收数据进 行校验和处理, 在数据包接收完的同时也进行了校验的比较。因此当帧尾结束符 接收到的时候,则表示一帧数据已经接收完毕,并且通过了校验,关键数据也保 存到了缓冲去中。主程序即可通过 retval 的标志位来进行协议的解析处理。 接收过程中,只要哪一步收到的数据不是预期值,则直接将状态机复位,用于 下一帧数据的判断,因此系统出现状态死锁的情况非常少,系统比较稳定,如果 出现丢失数据包的情况也可由上位机进行命令的补发, 不过这种情况笔者还没有 碰到。 对于主程序中进行协议处理的过程与此类似, 主程序循环中不断的读取串口缓 冲区的数据, 此数据即参与到主循环中的协议处理过程中,代码与上面所述完全 一样。
else state_machine = 0; } else if(state_machine == 9) { if(xorchkm == rcvdat) // 判断异或校验和是否相等 state_machine = 10; else state_machine = 0; } else if(state_machine == 10) { if(0x0D == rcvdat) // 判断是否接收到帧尾结束符 { retval = 0xaa; // 置标志,表示一个数据包接收到 } state_machine = 0; // 复位状态机 }
// 状态机复位
接收到帧头第二个数据
// 状态机复位
接收到帧头第三个数据
state_machine = 3; else statelse if(state_machine == 3) { sumchkm = rcvdat; // 开始计算累加、异或校验和 xorchkm = rcvdat; if(rcvdat == m_SrcAdr) // 判断目的地址是否正确 state_machine = 4; else state_machine = 0; } else if(state_machine == 4) { sumchkm += rcvdat; xorchkm ^= rcvdat; if(rcvdat == m_DstAdr) // 判断源地址是否正确 state_machine = 5; else state_machine = 0; } else if(state_machine == 5) { lencnt = 0; // 接收数据计数器 rcvcount = rcvdat; // 接收数据长度 sumchkm += rcvdat; xorchkm ^= rcvdat; state_machine = 6; } else if(state _machine == 6 || state _machine == 7) { m_ucData[lencnt++] = rcvdat; // 数据保存 sumchkm += rcvdat; xorchkm ^= rcvdat; if(lencnt == rcvcount) // 判断数据是否接收完毕 state_machine = 8; else state_machine = 7; } else if(state_machine == 8) { if(sumchkm == rcvdat) // 判断累加和是否相等 state_machine = 9;
3.下位机中的数据接收和协议解析
下位机接收数据也有两种方式,一、等待接收,处理器一直查询串口状态,来 判断是否接收到数据。二、中断接收。两种方法的优缺点在此前的一篇关于串口 通信的文章中详细讨论过。得出的结论是采用中断接收的方法比较好。 数据包的解析过程可以设置到不同的位置。如果协议比较简单,整个系统只是 处理一些简单的命令,那么可以直接把数据包的解析过程放入到中断处理函数 中,当收到正确的数据包的时候,置位相应的标志,在主程序中再对命令进行处 理。如果协议稍微复杂,比较好的方式是将接收的数据存放于缓冲区中,主程序 读取数据后进行解析。也有两种方式交叉使用的,比如一对多的系统中,首先在 接收中断中解析“连接”命令,连接命令接收到后主程序进入设置状态,采用查 询的方式来解析其余的协议。 以下给出具体的实例。在这个系统中,串口的命令非常简单。所有的协议全部 在串口中断中进行。数据包的格式如下: 0x55, 0xAA, 0x7E, 0x12, 0xF0, 0x02, 0x23, 0x45, SUM, XOR, 0x0D 其中 0x55, 0xAA, 0x7E 为数据帧的帧头,0x0D 为帧尾,0x12 为设备的目的地 址,0xF0 为源地址,0x02 为数据长度,后面接着两个数据 0x23, 0x45,从目的 地址开始结算累加、异或校验和,到数据的最后一位结束。 协议解析的目的,首先判断数据包的完整性,正确性,然后提取数据类 型,数据等数据,存放起来用于主程序处理。代码如下: if(state_machine == 0) // { if(rcvdat == 0x55) // state_machine = 1; else state_machine = 0; } else if(state_machine == 1) { if(rcvdat == 0xAA) // state_machine = 2; else state_machine = 0; } else if(state_machine == 2) { if(rcvdat == 0x7E) // 协议解析状态机 接收到帧头第一个数据
自定义数据传输通信协议
现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试, 利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了 通信程序的通用写法,包括上位机端和下位机端等。
1.自定义数据通信协议
这里所说的数据协议是建立在物理层之上的通信数据包格式。 所谓通信的物理 层就是指我们通常所用到的 RS232、RS485、红外、光纤、无线等等通信方式。 在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一 个字节数据。所有的数据协议全部建立在这两个操作方法之上。 通信中的数据往往以数据包的形式进行传送的, 我们把这样的一个数据包称作 为一帧数据。 类似于网络通信中的 TCPIP 协议一般,比较可靠的通信协议往往包 含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验 码、帧尾。 帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要 求是在整个数据链中判别数据包的误码率越低越好。 减小固定字节数据的匹配机 会, 也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通 常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常 选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可 以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使 用第二种方法的情况更加通用, 适合于数据随即的场合。通过增加特征字节的长 度减小匹配几率, 虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减 小, 如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说 情况下比较可靠。 地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。 在一对多的通信系统中, 可以只包含目的地址信息。同时包含源地址和目的地址 则适用于多对多的通信系统。 数据类型、 数据长度和数据块是主要的数据部分。数据类型可以标识后面紧接 着的是命令还是数据。数据长度用于指示有效数据的个数。 校验码则用来检验数据的完整性和正确性。通常对数据类型、数据长度和数据 块三个部分进行相关的运算得到。最简单的做法可是对数据段作累加和,复杂的 也可以对数据进行 CRC 运算等等,可以根据运算速度、容错度等要求来选取。
相关文档
最新文档