Modbus(CRC)校验例程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Modbus(CRC)校验例程

Modbus(CRC)校验例程 VB: Public Function CrcResult(ByVal Data As Long, ByVal Genpoly As Long, ByVal CrcData As Long) As Long Dim TmpI As Integer Data = Data * 2 For TmpI = 8 To 1 Step -1 Data = Fix(Data / 2) If ((Data Xor CrcData) And 1) Then CrcData = Fix(CrcData / 2) Xor Genpoly Else CrcData = Fix(CrcData / 2) End If Next TmpI CrcResult = CrcData End Function   //函数应用方法 Dim fx(7) Dim crc As Long fx(0) = Val(Text2.Text) fx(1) = H3 fx(2) = H0 fx(4) = H0 fx(5) = H1 fx(3) = MDI.Combo3.ListIndex crc = HFFFF For TmpI = 0 To 5 crc = CrcResult(CLng(fx(TmpI)), HA001, crc) Next fx(6) = CByte(crc And HFF) ‘得到的校验高位 fx(7) = CByte(Fix(crc / 256) And HFF) ‘得到的校验低位 VC: LONG myfunc::crc(LONG Data,LONG Genpoly,LONG CrcData) { INT TmpI; Data = Data * 2; for(TmpI = 8;TmpI=1;TmpI--) { Data = int(Data / 2); if ((Data ^ CrcData) 1) CrcData = int(CrcData / 2) ^ Genpoly; else CrcData = int(CrcData / 2); } return CrcData; } //函数应用方法 long crc; UCHAR buf[8]={0xef,0x3,0x0,0x0,0x0,0x1,0x0,0x0}; buf[0]=add; buf[2]=cmd 0xff00; buf[3]=cmd 0xff; crc = 0xFFFF; for (i=0;i6;i++) { crc = func.crc((long)buf[i], 0xA001,crc); } buf[6]=(BYTE)(crc 0xFF); buf[7] =(BYTE)(int(crc / 256) 0xFF);

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档