public static string bcdToString(byte[] bcdNum)//bcd转string
{
string str="";
for (int i = 0; i < 4;i++ )
{
str+=(0xff & (bcdNum[i] >> 4)) * 10 + (0xf & bcdNum[i]);
}
return str;
}
public static byte hjy(byte[] whole)//生成和校验码
{
byte temp = 0x00;
for (int i = 0; i < whole.Length; i++)
{
temp += whole[i];
}
return temp;
}
public static int GetCRC(int nLength, byte[] pDaTa)//生成CRC校验码
{
int g_Crc = 0xFFFF;
for(int k = 0;k<nLength;k++)
{
g_Crc^=(int)pDaTa[k];
for(int i = 0;i<8;i++)
{
if((g_Crc&0x01)==0x01)
{
g_Crc=g_Crc>>1;
g_Crc ^=0xA001;
}
else
{
g_Crc=g_Crc>>1;
}
}
}
return g_Crc;
}
相关推荐
CRC/MODBUS 校验计算方法(C语言实现)
1.介绍了CRC校验机制 2.给出了C语言计算CRC校验码的方法
BCD 转 String, String 转 BCD
/// <summary> /// BCD码转为10进制串(阿拉伯数据) /// </summary> /// <param name="bytes">BCD码 </param> /// <returns>10进制串 </returns>
c语言:CRC-16/MODBUS校验码生成算法
c语言:CRC-16/MODBUS校验码生成算法
C#实现BCD码
<br />string _BcdText = Zgke.ConvertByte.BCD.GetBcdEncode(123456, Zgke.ConvertByte.BCD.BcdType.码8421);<br /><br /> ulong _Value;<br /><br /> if(Zgke.ConvertByte.BCD.GetBcdDecode(_BcdText,Zgke.ConvertByte.BCD.BcdType.码8421,out _Val
C#写的DL/T 645-2007电表串口调试工具,带完整读写功能源码
这是一款基于C#开发的Windows桌面调试工具,专为DL/T 645-2007电能表通信规约设计,通过串口与兼容该标准的电表设备交互。支持实时抄读电量、电压、电流、功率等运行数据;可设置电表地址、修改波特率、校准电表时钟,并下发各类参数命令。界面采用WinForms构建,布局直观,操作流程清晰。源码包含完整的串口通信模块:串口参数配置、645帧自动组包、CRC16校验计算、超时重发机制、响应解析逻辑等核心功能均已实现并注释详尽。项目使用Visual Studio 2013或更高版本可直接打开编译,目标框架
C#串口直连三菱FX PLC读取M/D/X/Y寄存器的实测工程包
一个开箱即用的C#串口通讯工程,专为三菱FX系列PLC(如FX-3GA-40MT)编程口设计,无需安装额外驱动,用普通USB转RS232线连接PLC编程口即可通信。工程基于.NET Framework 4.7.2,兼容Visual Studio 2019及以上版本,编译后生成独立可执行文件,运行环境要求低。核心功能包括读取M寄存器(辅助继电器)、D寄存器(数据寄存器)、X输入点、Y输出点等常用软元件,所有通讯逻辑封装在PortControlHelper.cs中,主界面Form1提供串口参数配置(波特率、站号
crc校验码生成程序(C#)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace crc { public
嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作
本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。
C# 获取字符串转Hex格式和BCD格式
一、字符串转BCD格式 1、设计要求 上位机获取输入的年月日字符串,转换成BCD格式后传递到下位机。 输入一串序列号,最小1位,年最大4位;月和日最小一位,最大两位。 2、设施步骤 (1)获取字符串,判断字符串的长度是否符合要求。 (2)判读字符串是否是十进制数。 (3)字符串不满足要求位数,左边用0补齐。 (4)字符串转成BCD 3、程序代码 ...
SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法
本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。
Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录
摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时
java将BCD码和String相互转换
/** * 将String转成BCD码 * * @param s * @return */ public static byte [] StrToBCDBytes(String s) { if(s.length () % 2 != 0) { s = "0" + s; } ByteArrayOutputStream baos = new ByteArrayOutputSt...
3、提升管壳式换热器能效:双螺旋盘管的应用研究
本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。
Copilot实战能力边界与上下文工程指南
GitHub Copilot并非黑箱补全工具,而是依赖四层封装调用链的智能代理系统。其真实能力由模型层(如gpt-4-1106-preview)、路由策略、上下文窗口利用率及客户端格式校验共同决定。技术价值体现在降低重复编码成本,但需警惕信创迁移、工业协议解析等场景中的知识盲区与提示漂移风险。典型应用场景包括C#上位机串口协议解析、SpringBoot适配国产中间件、Docker镜像可重现性保障等。本文基于37个试用周期实测数据,聚焦copilot学生认证背后的路由隔离机制与vscode copilot安装
23种设计模式-代理(Proxy)设计模式
软考中级-软件设计师 代理设计模式
如何创建 SAP ABAP CDS View 的 Association
所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。
BCD码之间的转换
bcd转换的工具类和方法 package wjz.utils; import org.springframework.util.FileCopyUtils; import java.io.*; import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * * */ public class WjzUtils {
SVN使用:使用TortoiseSVN遇到提示请执行“清理”命令的解决方法
作为程序员来说,在团队开发过程中关于代码管理的工具使用并不陌生,比较常用的代码合并管理工具如:Git、SVN等,虽然相关工具的使用并不复杂,但是还是要掌握常用的使用方法,尤其是相关的第三方软件的使用也是极为重要的,而且有时候使用这些三方软件来进行代码管理的时候也会遇到一些问题。本篇博文就来分享一下在SVN使用的时候使用TortoiseSVN遇到提示请执行“清理”命令的解决方法,方便查阅使用。
bcd转十进制java_Java & C# BCD编码与十进制转换
using System;using System.Collections.Generic;using System.Text;namespace Base{public class BCDHelper{/// /// 用BCD码压缩数字字符串/// /// /// public static byte[] StrToBCD(string str){return StrToBCD(str, str...
Android 13.0 Launcher3中去掉Hotseat功能实现
在13.0系统产品定制化开发中,在Launcher3的定制化需求也是特别多的,由产品是小屏幕的产品,所以产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
Modbus-RTU通讯协议中CRC校验
crc校验相关资料集结
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
modbusCRC校验以及C语言实现
Modbus协议使用CRC(循环冗余校验)作为数据校验机制。CRC是一种计算数据内容的摘要值并将其附加到数据末尾的技术。在Modbus协议中,CRC是16位数字。CRC校验可以保证数据的完整性和准确性。CRC校验算法的过程如下:首先将数据和CRC寄存器的值置为0。对于每个字节,将其和CRC寄存器的最低8位进行异或运算。对于每个位,如果CRC寄存器的最低位是1,则右移一位,然后与预定义的多项式0xA001进行异或运算。重复步骤2和3,直到所有字节都处理完毕。最终CRC寄存器的值即为校验和。
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
modbus CRC校验
CRC校验方式有很多,最常用的是CRC16,具体是不是不妨需要用报文放到串口助手工具计算验证一下
MODBUS通信协议CRC校验码计算
在 MODBUS 协议中,通信数据帧的校验码是 CRC-16 校验码。它用于检测数据传输过程中的传输错误。CRC-16 校验码的计算方法如下:
MODBUS RTU 通信协议 CRC16校验算法
CRC校验码是一个2个字节(16位二进制)的数。
C语言实现CRC-16 MODBUS校验码的生成,浅谈CRC-16检验码
关于CRC校验码 CRC又称循环冗余校验,是用来检测或校验数据传输或者保存是否出现错误的一种方法。我也看了很多关于CRC校验码的文章,如果有没看懂的请看CRC码计算及校验原理的最通俗诠释这一篇文章,文章向我们介绍了CRC校验码是通过什么方法计算出来的,文章挺通俗易懂的。校验码的长度可以根据自己的意愿来定,也可以根据国际上的标准来定,根据自己的实际情况来定,校验码越长,出错的概率肯定就越小。 校验码的唯一性问题 为什么说校验码也会出错呢,这就涉及到校验码的唯一性问题的探讨上了,我们知道,我们要发一串数据,校验
5575



被折叠的 条评论
为什么被折叠?



