Modbus CRC 算法

简介: 转自http://www.cnitblog.com/zfly/archive/2005/12/13/5334.

转自http://www.cnitblog.com/zfly/archive/2005/12/13/5334.html
 
void CRC16(BYTE *Array, BYTE *Rcvbuf,unsigned int Len)
{
  unsigned int IX,IY,CRC;
  CRC=0xFFFF;//set all 1

  if (Len<=0)
  {
    CRC = 0;
  }else{
    Len--;
    for (IX=0;IX<=Len;IX++)
    {
      CRC=CRC^(unsigned int)(Array[IX]);
      for(IY=0;IY<=7;IY++)
      {
        if ((CRC&1)!=0)
        {
          CRC=(CRC>>1)^0xA001;
        }else{
          CRC=CRC>>1;
        }
      }
    }
  }

 
  Rcvbuf[0] = (CRC & 0xff00)>>8;//高位置
  Rcvbuf[1] = (CRC & 0x00ff);//低位置
}
目录
相关文章
|
8月前
|
传感器 算法 数据格式
QT Modbus RTU调试助手(包含算法实现CRC MODBUS16校验)
QT Modbus RTU调试助手(包含算法实现CRC MODBUS16校验)
454 0
|
8月前
|
算法
常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum
常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum
1168 1
|
8月前
|
存储 算法 安全
C# | 上位机开发新手指南(五)校验算法——CRC
当我们在进行数据传输时,可能会因为信道噪声、干扰等因素导致数据出现错误,从而影响传输的可靠性和准确性。此时,我们需要一种方法来检测数据是否出现错误,并尽可能快速地发现和纠正错误。CRC(Cyclic Redundancy Check)校验算法就是一种常用的数据校验方法,它通过对数据进行处理生成校验码,从而实现对数据的完整性和准确性进行验证。 使用CRC校验的意义在于能够提高数据传输的可靠性,降低数据传输错误率,确保数据的完整性和准确性。在各个领域中,如通信、网络、存储等,CRC校验都得到了广泛的应用。
350 0
C# | 上位机开发新手指南(五)校验算法——CRC
|
算法
CRC 校验算法
CRC 校验算法
267 0
|
机器学习/深度学习 资源调度 算法
【图像隐藏】基于小波变换+SURF、RANSAC、LT码、CRC码多种算法实现图像隐藏(抗多种攻击)matlab源码
【图像隐藏】基于小波变换+SURF、RANSAC、LT码、CRC码多种算法实现图像隐藏(抗多种攻击)matlab源码
|
算法 C语言 索引
|
算法 索引
全面分析CRC算法
result = ~crcGetRegisters();          // 填写FCS,先低后高     ppp[11] = result & 0xff;     ppp[12...
682 0
|
11天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
145 80
|
5天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。

热门文章

最新文章