首页 > 其他分享 >modbusCRC 16校验 本机通过

modbusCRC 16校验 本机通过

时间:2023-03-16 12:45:04浏览次数:40  
标签:string wCrc int 16 校验 System modbusCRC byte public

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace modbusCRC16
{
public class Classmodbus16CRC
{
public static byte[] k;// = new byte[] //{ 0x01, 0x03, 0x00, 0x01, 0x00, 0x02 };//需校验的数据
public string str; //= string.Empty;//初始化空值
public int t;
public byte[]bt = ToModbus(k);//调用校验数据

//==========字节转字符串函数
public static string strbytext(byte[] t, int b)
{
string str = string.Empty;
for (int i = 0; i < t.Length; i++)
{
str += t[i].ToString("X");//10->16
}
return str;
}
//============字节校验函数=====================================================================
public static byte[] ToModbus(byte[] byteData)
{
byte[] CRC = new byte[2];

UInt16 wCrc = 0xFFFF;
for (int i = 0; i < byteData.Length; i++)
{
wCrc ^= Convert.ToUInt16(byteData[i]);
for (int j = 0; j < 8; j++)
{
if ((wCrc & 0x0001) == 1)
{
wCrc >>= 1;
wCrc ^= 0xA001;//异或多项式
}
else
{
wCrc >>= 1;
}
}
}

CRC[1] = (byte)((wCrc & 0xFF00) >> 8);//高位在后
CRC[0] = (byte)(wCrc & 0x00FF); //低位在前
return CRC;
}


}
}

标签:string,wCrc,int,16,校验,System,modbusCRC,byte,public
From: https://www.cnblogs.com/zhangfengggg/p/17222119.html

相关文章

  • 【小哥132】导入DXF板框与倒角-16
    还没开始设计,导入DXF(文件不能有中文)技巧:如果结构改动多次和需要对比,放置层的时候新建一个Subclass,再把改subclass的板框改为outline层          设计......
  • 【小哥132】PCB-16.6-焊盘-6
    焊盘概念:宽度与高度之分  方形焊盘:BGA圆形焊盘(焊球接触焊盘一个点):使用推荐焊盘大小或者是80%,不用加大通孔焊盘:波峰焊(不需要刷锡膏-不需要锡膏层)孔径比实物最少大0......
  • 【小哥132】PCB-16.6-向导LQFP封装-8
    新建封装:新建好向导封装,添加1脚标识;改变丝印的宽度(默认是0),Edit-change              ......
  • 【小哥132】PCB-16.6-封装-7
    技巧:新建封装软件配置参数是设定好;以后先打开一个绘制好的封装,再进行绘制新封装,最好另存为即可,就不需要每次设定软件配置参数命名需要规范,突出重点 新建封装:软件设......
  • 【小哥132】PCB-16.6-向导BGA封装-9
    新建封装:向导制作好。改变丝印线宽0.15mm。1脚丝印层标识               ......
  • 力扣---1664. 生成平衡数组的方案数
    给你一个整数数组nums。你需要选择恰好一个下标(下标从0开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。比方说,如果nums=[6,1,7,4,1]......
  • (16)Gauss列主元消去法解方程组
    (16)Gauss列主元消去法解方程组补发笔记......
  • 力扣---1662. 检查两个字符串数组是否相等
     给你两个字符串数组word1和word2。如果两个数组表示的字符串相同,返回true;否则,返回false。数组表示的字符串 是由数组中的所有元素按顺序连接形成的字符串......
  • QT5笔记: 16. 时间和定时器的常用功能
    例子#ifndefWIDGET_H#defineWIDGET_H#include<QTime>#include<QTimer>#include<QWidget>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAM......
  • 【题解】P6667 [清华集训2016] 如何优雅地求和
    orzfjy666orzfjy666orzfjy666神·fjy666·拉普拉斯·爱因斯坦大帝于5min内爆切了此题,膜拜!思路斯特林数。注意到\(f(k)\)是多项式而式子中含有组合数,于......