云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > CRC校验原理及其C语言实现-机电之家网PLC技术网

CRC校验原理及其C语言实现-机电之家网PLC技术网

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 8:14:50

crcdata>>=1; if(crcdata&0x01) crcdata^=0xa001; } return crcdata; }

VBvbvbvbvbvbvbvvvvvvvvvvvvvvvvvvbbbbbbbbbbbbbbbbbb Private Sub Command1_Click() Dim CRC() As Byte

Dim d() As Byte '待传输数据 ReDim d(5) As Byte

d(0) = 2 '02 03 00 00 00 04 lo44 hi3A d(1) = 3 d(2) = 0 PLC

d(3) = 0 d(4) = 0

d(5) = 4 '02 03 20 40 00 04 hi2E Lo4E

CRC = CRC16(d) '调用CRC16计算函数

'CRC(0)为高位 'CRC(1)为低位 End Sub

'注意:在数据传输时CRC的低位可能在前,而高位在后。

Function CRC16(data() As Byte) As String

Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器 PLC

Dim CL As Byte, CH As Byte '多项式码&HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim i As Integer Dim Flag As Integer CRC16Lo = &HFF CRC16Hi = &HFF CL = &H1 CH = &HA0

For i = 0 To UBound(data) PLC

CRC16Lo = CRC16Lo Xor data(i) '每一个数据与CRC寄存器进行异或

For Flag = 0 To 7 SaveHi = CRC16Hi SaveLo = CRC16Lo

CRC16Hi = CRC16Hi \\ 2 '高位右移一位

CRC16Lo = CRC16Lo \\ 2 '低位右移一位

If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1 PLC资料网

CRC16Lo = CRC16Lo Or &H80 '则低位字节右移后前面补1

End If '否则自动补0

If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或 CRC16Hi = CRC16Hi Xor CH CRC16Lo = CRC16Lo Xor CL PLC资料网

End If Next Flag Next i

Dim ReturnData(1) As Byte

ReturnData(0) = CRC16Hi 'CRC高位

ReturnData(1) = CRC16Lo 'CRC低位

CRC16 = ReturnData End Function

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

crcdata>>=1; if(crcdata&0x01) crcdata^=0xa001; } return crcdata; } VBvbvbvbvbvbvbvvvvvvvvvvvvvvvvvvbbbbbbbbbbbbbbbbbb Private Sub Command1_Click() Dim CRC() As Byte Dim d() As Byte '待传输数据 ReDim d(5) As Byte d(0) = 2 '02 03 00 00 00 04 lo44 hi3A d(1) = 3 d(2) =

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com