CRC16校验法在powerbuilder10.5中的写法。

翻译C语言的数据类型

翻译成pb代码的CRC16算法

global type calccrc from function_object
end typeforward prototypes
global function unsignedinteger calccrc (byte crcbuf, unsignedinteger crc)
end prototypesglobal function unsignedinteger calccrc (byte crcbuf, unsignedinteger crc);   byte i;crc = BitEx(crc , crcbuf);for i = 0 to  7byte chk;chk = Bitand(crc,  1);crc = RShift(crc ,1 ) ;crc = Bitand(crc ,32767)// 0x7fff;if (chk =  1) then crc = BitEx(crc,40961) //0xa001;end if crc = Bitand(crc ,65535)// 0xffff;
nextreturn crc;
end function
global type chkcrc from function_object
end typeforward prototypes
global function unsignedinteger chkcrc (byte buf[], unsignedinteger len)
end prototypesglobal function unsignedinteger chkcrc (byte buf[], unsignedinteger len); byte hi, lo;    unsignedint i;  unsignedint crc;crc = 65535//0xFFFF;for  i = 1 to len   crc = calccrc(buf[i], crc);      next hi = mod(crc , 256);lo = crc / 256;crc = LShift(hi , 8)crc = Bitor(crc, lo) return crc;
end function

编写 测试代码

Byte ly_byte[] = {01, 03, 00, 00, 00, 04}
unsignedinteger iCrc
iCrc = chkcrc(ly_byte,6)BYTE hi,lo
string lsHi,lsLo
lo = Bitand(iCrc,255)      //(crc & 0xff);hi = Bitand(RShift(iCrc,8),255)  //((crc >> 8) & 0xff);lsHi = ToHex(hi,2)
lsLo = ToHex(lo,2)

测试结果:44 09

Powerbuilder10.5 中使用CRC16检验法相关推荐

  1. php crc16校验算法,PHP串口通信中计算crc16校验码

    最近使用PHP开发串口通信业务,在发送485Modbus命令时,基本都要计算CRC16校验码.网上搜索了很多文章,很多都计算的不对.本文记录搜索到的正确的计算方法. 代码如下:/** * crc16计 ...

  2. redis中的crc16算法

    使用的是循环冗余检验算法. 1.算法原理 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 ...

  3. C#编程中的crc16校验

    C# CRC16 查表法 private static ushort[] crctab = new ushort[256]{                     0x0000, 0x1021, 0 ...

  4. ANSI C中的CRC16参考实现

    转载地址:https://redis.io/topics/cluster-spec /** Copyright 2001-2010 Georges Menie (www.menie.org)* Cop ...

  5. php crc16计算,如何在PHP HEX中计算CRC16 CCITT?

    我正在尝试使用PHP CRC16 CCITT函数来计算校验和. 设备发送给我一个包含Checksum的PACKET: 10 00 00 00 00 00 00 00 12 51 09 08 00 18 ...

  6. Redis 集群规范(中文稿)(MOVED错误码及ASK错误码

    引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...

  7. 【Redis-6.0.8】CRC16

    0.阅读 阅读引用1 [Android路上的人]的关于CRC16的说明 Redis-CRC16校验-原理概述 百度百科的CRC 1.初识crc16 CRC循环冗余校验CRC(Cyclic redund ...

  8. uni-app蓝牙设备连接以及设备的传输,CRC16,ios蓝牙和安卓蓝牙获取数据不一致处理方案

    前言: 因为需要开发与蓝牙设备控制相关,但是这不是常用的蓝牙打印,并且是由原生安卓已经做好的,但是需要移植到多平台(小程序 等)都可以使用所以就要移植成 uni-app ,所以这个是按照uni-app ...

  9. CRC-16原理及通用的16位CRC校验算法代码

    CRC-16原理及通用的16位CRC校验算法代码 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detect ...

最新文章

  1. labview的用户身份认证系统设计_elasticsearch 集群身份认证与用户鉴权
  2. DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.0.9Beta)
  3. Go 语言编程 — Cobra 指令行工具
  4. golang net/http 超时机制完全手册
  5. Hadoop-2.2.0学习之二HDFS联盟
  6. Python编程基础:第三十五节 文件删除Delete a File
  7. pragma comment的使用 pragma预处理指令详解
  8. SVN 版本库管理实践
  9. java 图片合并_Java如何实现图片的叠加与拼接操作
  10. android 动态绘制布局,Android代码和绘制曲线中按钮和绘图板的动态布局
  11. 计算机辅助翻译与人工翻译论文,计算机辅助翻译:理念和工具[翻译研究新探论文献文集].pdf...
  12. 在java中使用solrj对solr进行CRUD
  13. 拓端tecdat|【数据分享】学生受欢迎程度评价数据集
  14. 游戏网络编程书籍推荐
  15. 一项千年太空任务即将拯救人类——科学家们正在密谋中
  16. 快递面单打印报错:“print selected is not valid” 解决方案
  17. 阿里云服务器上安装rabbitmq流程
  18. verilog中tb仿真文件模板
  19. Myeclipse链接sql server 2005是出现Error while performing database login with the sql2005 driver:
  20. 教你“如何巧看黑马测试视频,悄悄成为测试高手?”

热门文章

  1. pycharm PEP8 资料
  2. CPU硬解Stable-Diffusion
  3. python.exe换电脑后无法正常运行_暴雪游戏无法启动,会有卡包吗?
  4. java-net-php-python-06白茶销售系统计算机毕业设计程序
  5. linux服务器重启原因排查_Linux服务器不明原因重启了,怎么查找原因
  6. 新手如何运营推广微信公众号
  7. WRF进阶:WRF中Noah-MP地面方案中雪反照率的计算
  8. java static作用盘点
  9. 将cv2的两张图片拼接在一起
  10. 网络安全工程师待遇 网络安全工程师需要学什么