首页 > 其他分享 >串口传输和校验的两种方法

串口传输和校验的两种方法

时间:2023-03-04 17:34:45浏览次数:37  
标签:和校验 ++ unsigned ret char 传输 len 串口 buf

一、累加和取反加一

 1 /*
 2 * 取反加一原理:
 3 * 0xFE(0b11111110)
 4 * 取反得0x01(0b00000001)
 5 * 二者相加得0xFF(0b11111111)
 6 * 再加一得0x00(0b00000000)
 7 **/
 8 /// <summary>
 9 /// 发送端和校验函数,与CheckSume_Rx配合使用
10 /// </summary>
11 /// <param name="buf"></数据缓冲区指针>
12 /// <param name="len"></数据缓冲区长度>
13 /// <returns></校验和取反>
14 unsigned char CheckSume_Tx(const unsigned char* buf, int len)
15 {
16 unsigned char ret = 0, i;
17 for (i = 0; i < len; ++i)
18 {
19 ret += *buf++;
20 }
21 return ~ret;
22 }
23 
24 /// <summary>
25 /// 接收端和校验函数,与CheckSume_Tx配合使用
26 /// </summary>
27 /// <param name="buf"></数据缓冲区指针>
28 /// <param name="len"></数据缓冲区长度,此长度比发送缓冲区长度大1,因为包含发送来的校验和取反>
29 /// <returns></0则成功,非0失败>
30 unsigned char CheckSume_Rx(const unsigned char* buf, int len)
31 {
32 unsigned char ret = 0, i;
33 for (i = 0; i < len; ++i)
34 {
35 ret += *buf++;
36 }
37 ret += 1;
38 //如果返回值为0,则表示校验成功。不为0则失败
39 return ret;
40 }

 

 

二、累加和相等

 1 /// <summary>
 2 /// 计算校验和,发送接收两端计算校验和相等则校验成功
 3 /// </summary>
 4 /// <param name="buf"></数据缓冲区指针>
 5 /// <param name="len"></数据缓冲区长度>
 6 /// <returns></校验和>
 7 unsigned char CheckSume(const unsigned char* buf, int len)
 8 {
 9 unsigned char ret = 0, i;
10 for (i = 0; i < len; ++i)
11 {
12 ret += *buf++;
13 }
14 return ret;
15 }

 

标签:和校验,++,unsigned,ret,char,传输,len,串口,buf
From: https://www.cnblogs.com/GREEN-FIEID/p/17177843.html

相关文章

  • C#获取串口的几种方式
    摘要使用C#获取串口最简单的方式就是通过SerialPort对象了,但有时并不能满足需求,比如有些串口是通过驱动模拟的,那这种可能就获取不到了。示例代码这里简单演示几种常用的......
  • 流量分析一之数据包传输过程
    封装与解封装封装报文是从上层到下层(应用层-->传输层-->网络层-->数据链路层-->物理层),解封装报文是从下层到上层。应用数据需要经过TCP/IP每一层处理后才能通过网络传......
  • 常见传输数据格式Content-Type
    在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。浏览器会在某些情况下进行MIME查找,并不一定遵循此标题的值;为了防止这种行为,可以将标题X-Content-Ty......
  • linux驱动移植-串口驱动
    ----------------------------------------------------------------------------------------------------------------------------内核版本:linux5.2.8根文件系统:busybo......
  • 串口通信原理详解232、422、485,入门必看!
    串口通信原理详解232、422、485,入门必看!混说Linux ​关注他 50人赞同了该文章本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯......
  • 小梅哥课程学习——串口发送应用之发送数据(可在vivado中仿真出现正确波形)
    //1、底层代码源代码发送10位数据moduleuart_pr(clk,reset_n,send_go,data,baud_set,tx_done,uart_tx);inputclk;......
  • 小梅哥课程学习——串口发送应用之发送数据
    //此代码的注意事项,首先这个代码不能仿真成功会出现一定的时间延迟,//因为在做板级验证的时候把时间改成了100ms发送一次,要想仿真成功,把时间改成499999//使用上一节课设......
  • iPhone与win10传输大文件,使用局域网
    使用微信、qq之类的只能传输小文件,毕竟这个不是局域网。最快的方式,iPhone直接使用数据线连接win10传文件第二快的方式,iPhone与win10连接的同一个路由器,通过局域网建立连接,然......
  • HTTP传输大文件的四种方法
    1、数据压缩通常浏览器在发送请求时都会带着“Accept-Encoding”头字段,里面是浏览器支持的压缩格式列表,例如gzip、deflate、br等,这样服务器就可以从中选择一种压缩算法,放......
  • 面试官:怎么设计大文件、大数据场景下的传输加密方案?
    某年某月某一天,冷冽寒风中,姚小毛走进了某家公司,开始了新一轮的面试。一阵寒暄后。面试官:“你好,看你的项目经验中有做过数据加密的工作,你是使用什么加密算法加解密的?”......