当前位置: 首页 > news >正文

php实现modbus CRC校验

一:计算CRC校验函数

function calculateCRC16Modbus($string)
{$crcBytes = [];for ($i = 0; $i < strlen($string); $i += 2) {$crcBytes[] = hexdec(substr($string, $i, 2));}$crc = 0xFFFF;$polynomial = 0xA001;  // This is the polynomial x^16 + x^15 + x^2 + 1foreach ($crcBytes as $byte) {$crc ^= $byte;for ($i = 0; $i < 8; $i++) {if ($crc & 0x0001) {$crc = (($crc >> 1) ^ $polynomial) & 0xFFFF;} else {$crc >>= 1;}}}return $crc;
}

二:调用CRC校验

$request = 'XXXXXXXX';
$res = calculateCRC16Modbus($request);
echo str_pad(strtoupper(dechex($res %256)), 2, "0", STR_PAD_LEFT);//低八位
echo str_pad(strtoupper(dechex(floor($res /256))), 2, "0", STR_PAD_LEFT);高八位

相关文章:

  • HJ39判断两个IP是否属于同一子网(中)
  • java 线程之间通信-volatile 和 synchronized
  • MySQL版本发布模型
  • unity2d Ugui--Image城市道路汽车行驶
  • 多层级iframe下JS调用点击事件
  • Sui的Fastcrypto加密库刷新速度记录
  • 【单片机】三极管的电路符号及图片识别
  • 机动车检测站授权签字人精选试题(附答案)
  • elasticsearch的入门与实践
  • 入侵检测系统(IDS)
  • 【文末附gpt升级秘笈】关于“登月游戏”的详细内容介绍
  • java程序什么时候需要在运行的时候动态修改字节码对象
  • minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析
  • [Qt] Qt Creator中配置 Vs-Code 编码风格
  • 算法第八天:leetcode 35.搜索插入位置
  • “大数据应用场景”之隔壁老王(连载四)
  • 【5+】跨webview多页面 触发事件(二)
  • CSS 专业技巧
  • C学习-枚举(九)
  • in typeof instanceof ===这些运算符有什么作用
  • Java 内存分配及垃圾回收机制初探
  • Java反射-动态类加载和重新加载
  • Magento 1.x 中文订单打印乱码
  • opencv python Meanshift 和 Camshift
  • 从重复到重用
  • 机器学习学习笔记一
  • 基于web的全景—— Pannellum小试
  • 嵌入式文件系统
  • 跳前端坑前,先看看这个!!
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #pragma pack(1)
  • (C语言)逆序输出字符串
  • (差分)胡桃爱原石
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)pulsar安装在独立的docker中,python测试
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (九)c52学习之旅-定时器
  • (十)Flink Table API 和 SQL 基本概念
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (循环依赖问题)学习spring的第九天
  • (一)80c52学习之旅-起始篇
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • **CentOS7安装Maven**
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .DFS.
  • .NET delegate 委托 、 Event 事件
  • .net mvc部分视图
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .skip() 和 .only() 的使用
  • /etc/shadow字段详解