Modbus串行通讯的CRC16校验和计算方法
源代码在线查看: crc.bas
Attribute VB_Name = "CRC"
Option Explicit
Public auchCRCHi(255) As Byte
Public auchCRCLo(255) As Byte
Sub CRCinit()
auchCRCHi(0) = &H0
auchCRCHi(1) = &HC1
auchCRCHi(2) = &H81
auchCRCHi(3) = &H40
auchCRCHi(4) = &H1
auchCRCHi(5) = &HC0
auchCRCHi(6) = &H80
auchCRCHi(7) = &H41
auchCRCHi(8) = &H1
auchCRCHi(9) = &HC0
auchCRCHi(10) = &H80
auchCRCHi(11) = &H41
auchCRCHi(12) = &H0
auchCRCHi(13) = &HC1
auchCRCHi(14) = &H81
auchCRCHi(15) = &H40
auchCRCHi(16) = &H1
auchCRCHi(17) = &HC0
auchCRCHi(18) = &H80
auchCRCHi(19) = &H41
auchCRCHi(20) = &H0
auchCRCHi(21) = &HC1
auchCRCHi(22) = &H81
auchCRCHi(23) = &H40
auchCRCHi(24) = &H0
auchCRCHi(25) = &HC1
auchCRCHi(26) = &H81
auchCRCHi(27) = &H40
auchCRCHi(28) = &H1
auchCRCHi(29) = &HC0
auchCRCHi(30) = &H80
auchCRCHi(31) = &H41
auchCRCHi(32) = &H1
auchCRCHi(33) = &HC0
auchCRCHi(34) = &H80
auchCRCHi(35) = &H41
auchCRCHi(36) = &H0
auchCRCHi(37) = &HC1
auchCRCHi(38) = &H81
auchCRCHi(39) = &H40
auchCRCHi(40) = &H0
auchCRCHi(41) = &HC1
auchCRCHi(42) = &H81
auchCRCHi(43) = &H40
auchCRCHi(44) = &H1
auchCRCHi(45) = &HC0
auchCRCHi(46) = &H80
auchCRCHi(47) = &H41
auchCRCHi(48) = &H0
auchCRCHi(49) = &HC1
auchCRCHi(50) = &H81
auchCRCHi(51) = &H40
auchCRCHi(52) = &H1
auchCRCHi(53) = &HC0
auchCRCHi(54) = &H80
auchCRCHi(55) = &H41
auchCRCHi(56) = &H1
auchCRCHi(57) = &HC0
auchCRCHi(58) = &H80
auchCRCHi(59) = &H41
auchCRCHi(60) = &H0
auchCRCHi(61) = &HC1
auchCRCHi(62) = &H81
auchCRCHi(63) = &H40
auchCRCHi(64) = &H1
auchCRCHi(65) = &HC0
auchCRCHi(66) = &H80
auchCRCHi(67) = &H41
auchCRCHi(68) = &H0
auchCRCHi(69) = &HC1
auchCRCHi(70) = &H81
auchCRCHi(71) = &H40
auchCRCHi(72) = &H0
auchCRCHi(73) = &HC1
auchCRCHi(74) = &H81
auchCRCHi(75) = &H40
auchCRCHi(76) = &H1
auchCRCHi(77) = &HC0
auchCRCHi(78) = &H80
auchCRCHi(79) = &H41
auchCRCHi(80) = &H0
auchCRCHi(81) = &HC1
auchCRCHi(82) = &H81
auchCRCHi(83) = &H40
auchCRCHi(84) = &H1
auchCRCHi(85) = &HC0
auchCRCHi(86) = &H80
auchCRCHi(87) = &H41
auchCRCHi(88) = &H1
auchCRCHi(89) = &HC0
auchCRCHi(90) = &H80
auchCRCHi(91) = &H41
auchCRCHi(92) = &H0
auchCRCHi(93) = &HC1
auchCRCHi(94) = &H81
auchCRCHi(95) = &H40
auchCRCHi(96) = &H0
auchCRCHi(97) = &HC1
auchCRCHi(98) = &H81
auchCRCHi(99) = &H40
auchCRCHi(100) = &H1
auchCRCHi(101) = &HC0
auchCRCHi(102) = &H80
auchCRCHi(103) = &H41
auchCRCHi(104) = &H1
auchCRCHi(105) = &HC0
auchCRCHi(106) = &H80
auchCRCHi(107) = &H41
auchCRCHi(108) = &H0
auchCRCHi(109) = &HC1
auchCRCHi(110) = &H81
auchCRCHi(111) = &H40
auchCRCHi(112) = &H1
auchCRCHi(113) = &HC0
auchCRCHi(114) = &H80
auchCRCHi(115) = &H41
auchCRCHi(116) = &H0
auchCRCHi(117) = &HC1
auchCRCHi(118) = &H81
auchCRCHi(119) = &H40
auchCRCHi(120) = &H0
auchCRCHi(121) = &HC1
auchCRCHi(122) = &H81
auchCRCHi(123) = &H40
auchCRCHi(124) = &H1
auchCRCHi(125) = &HC0
auchCRCHi(126) = &H80
auchCRCHi(127) = &H41
auchCRCHi(128) = &H1
auchCRCHi(129) = &HC0
auchCRCHi(130) = &H80
auchCRCHi(131) = &H41
auchCRCHi(132) = &H0
auchCRCHi(133) = &HC1
auchCRCHi(134) = &H81
auchCRCHi(135) = &H40
auchCRCHi(136) = &H0
auchCRCHi(137) = &HC1
auchCRCHi(138) = &H81
auchCRCHi(139) = &H40
auchCRCHi(140) = &H1
auchCRCHi(141) = &HC0
auchCRCHi(142) = &H80
auchCRCHi(143) = &H41
auchCRCHi(144) = &H0
auchCRCHi(145) = &HC1
auchCRCHi(146) = &H81
auchCRCHi(147) = &H40
auchCRCHi(148) = &H1
auchCRCHi(149) = &HC0
auchCRCHi(150) = &H80
auchCRCHi(151) = &H41
auchCRCHi(152) = &H1
auchCRCHi(153) = &HC0
auchCRCHi(154) = &H80
auchCRCHi(155) = &H41
auchCRCHi(156) = &H0
auchCRCHi(157) = &HC1
auchCRCHi(158) = &H81
auchCRCHi(159) = &H40
auchCRCHi(160) = &H0
auchCRCHi(161) = &HC1
auchCRCHi(162) = &H81
auchCRCHi(163) = &H40
auchCRCHi(164) = &H1
auchCRCHi(165) = &HC0
auchCRCHi(166) = &H80
auchCRCHi(167) = &H41
auchCRCHi(168) = &H1
auchCRCHi(169) = &HC0
auchCRCHi(170) = &H80
auchCRCHi(171) = &H41
auchCRCHi(172) = &H0
auchCRCHi(173) = &HC1
auchCRCHi(174) = &H81
auchCRCHi(175) = &H40
auchCRCHi(176) = &H1
auchCRCHi(177) = &HC0
auchCRCHi(178) = &H80
auchCRCHi(179) = &H41
auchCRCHi(180) = &H0
auchCRCHi(181) = &HC1
auchCRCHi(182) = &H81
auchCRCHi(183) = &H40
auchCRCHi(184) = &H0
auchCRCHi(185) = &HC1
auchCRCHi(186) = &H81
auchCRCHi(187) = &H40
auchCRCHi(188) = &H1
auchCRCHi(189) = &HC0
auchCRCHi(190) = &H80
auchCRCHi(191) = &H41
auchCRCHi(192) = &H0
auchCRCHi(193) = &HC1
auchCRCHi(194) = &H81
auchCRCHi(195) = &H40
auchCRCHi(196) = &H1
auchCRCHi(197) = &HC0
auchCRCHi(198) = &H80
auchCRCHi(199) = &H41
auchCRCHi(200) = &H1
auchCRCHi(201) = &HC0
auchCRCHi(202) = &H80
auchCRCHi(203) = &H41
auchCRCHi(204) = &H0
auchCRCHi(205) = &HC1
auchCRCHi(206) = &H81
auchCRCHi(207) = &H40
auchCRCHi(208) = &H1
auchCRCHi(209) = &HC0
auchCRCHi(210) = &H80
auchCRCHi(211) = &H41
auchCRCHi(212) = &H0
auchCRCHi(213) = &HC1
auchCRCHi(214) = &H81
auchCRCHi(215) = &H40
auchCRCHi(216) = &H0
auchCRCHi(217) = &HC1
auchCRCHi(218) = &H81
auchCRCHi(219) = &H40
auchCRCHi(220) = &H1
auchCRCHi(221) = &HC0
auchCRCHi(222) = &H80
auchCRCHi(223) = &H41
auchCRCHi(224) = &H1
auchCRCHi(225) = &HC0
auchCRCHi(226) = &H80
auchCRCHi(227) = &H41
auchCRCHi(228) = &H0
auchCRCHi(229) = &HC1
auchCRCHi(230) = &H81
auchCRCHi(231) = &H40
auchCRCHi(232) = &H0
auchCRCHi(233) = &HC1
auchCRCHi(234) = &H81
auchCRCHi(235) = &H40
auchCRCHi(236) = &H1
auchCRCHi(237) = &HC0
auchCRCHi(238) = &H80
auchCRCHi(239) = &H41
auchCRCHi(240) = &H0
auchCRCHi(241) = &HC1
auchCRCHi(242) = &H81
auchCRCHi(243) = &H40
auchCRCHi(244) = &H1
auchCRCHi(245) = &HC0
auchCRCHi(246) = &H80
auchCRCHi(247) = &H41
auchCRCHi(248) = &H1
auchCRCHi(249) = &HC0
auchCRCHi(250) = &H80
auchCRCHi(251) = &H41
auchCRCHi(252) = &H0
auchCRCHi(253) = &HC1
auchCRCHi(254) = &H81
auchCRCHi(255) = &H40
auchCRCLo(0) = &H0
auchCRCLo(1) = &HC0
auchCRCLo(2) = &HC1
auchCRCLo(3) = &H1
auchCRCLo(4) = &HC3
auchCRCLo(5) = &H3
auchCRCLo(6) = &H2
auchCRCLo(7) = &HC2
auchCRCLo(8) = &HC6
auchCRCLo(9) = &H6
auchCRCLo(10) = &H7
auchCRCLo(11) = &HC7
auchCRCLo(12) = &H5
auchCRCLo(13) = &HC5
auchCRCLo(14) = &HC4
auchCRCLo(15) = &H4
auchCRCLo(16) = &HCC
auchCRCLo(17) = &HC
auchCRCLo(18) = &HD
auchCRCLo(19) = &HCD
auchCRCLo(20) = &HF
auchCRCLo(21) = &HCF
auchCRCLo(22) = &HCE
auchCRCLo(23) = &HE
auchCRCLo(24) = &HA
auchCRCLo(25) = &HCA
auchCRCLo(26) = &HCB
auchCRCLo(27) = &HB
auchCRCLo(28) = &HC9
auchCRCLo(29) = &H9
auchCRCLo(30) = &H8
auchCRCLo(31) = &HC8
auchCRCLo(32) = &HD8
auchCRCLo(33) = &H18
auchCRCLo(34) = &H19
auchCRCLo(35) = &HD9
auchCRCLo(36) = &H1B
auchCRCLo(37) = &HDB
auchCRCLo(38) = &HDA
auchCRCLo(39) = &H1A
auchCRCLo(40) = &H1E
auchCRCLo(41) = &HDE
auchCRCLo(42) = &HDF
auchCRCLo(43) = &H1F
auchCRCLo(44) = &HDD
auchCRCLo(45) = &H1D
auchCRCLo(46) = &H1C
auchCRCLo(47) = &HDC
auchCRCLo(48) = &H14
auchCRCLo(49) = &HD4
auchCRCLo(50) = &HD5
auchCRCLo(51) = &H15
auchCRCLo(52) = &HD7
auchCRCLo(53) = &H17
auchCRCLo(54) = &H16
auchCRCLo(55) = &HD6
auchCRCLo(56) = &HD2
auchCRCLo(57) = &H12
auchCRCLo(58) = &H13
auchCRCLo(59) = &HD3
auchCRCLo(60) = &H11
auchCRCLo(61) = &HD1
auchCRCLo(62) = &HD0
auchCRCLo(63) = &H10
auchCRCLo(64) = &HF0
auchCRCLo(65) = &H30
auchCRCLo(66) = &H31
auchCRCLo(67) = &HF1
auchCRCLo(68) = &H33
auchCRCLo(69) = &HF3
auchCRCLo(70) = &HF2
auchCRCLo(71) = &H32
auchCRCLo(72) = &H36
auchCRCLo(73) = &HF6
auchCRCLo(74) = &HF7
auchCRCLo(75) = &H37
auchCRCLo(76) = &HF5
auchCRCLo(77) = &H35
auchCRCLo(78) = &H34
auchCRCLo(79) = &HF4
auchCRCLo(80) = &H3C
auchCRCLo(81) = &HFC
auchCRCLo(82) = &HFD
auchCRCLo(83) = &H3D
auchCRCLo(84) = &HFF
auchCRCLo(85) = &H3F
auchCRCLo(86) = &H3E
auchCRCLo(87) = &HFE
auchCRCLo(88) = &HFA
auchCRCLo(89) = &H3A
auchCRCLo(90) = &H3B
auchCRCLo(91) = &HFB
auchCRCLo(92) = &H39
auchCRCLo(93) = &HF9
auchCRCLo(94) = &HF8
auchCRCLo(95) = &H38
auchCRCLo(96) = &H28
auchCRCLo(97) = &HE8
auchCRCLo(98) = &HE9
auchCRCLo(99) = &H29
auchCRCLo(100) = &HEB
auchCRCLo(101) = &H2B
auchCRCLo(102) = &H2A
auchCRCLo(103) = &HEA
auchCRCLo(104) = &HEE
auchCRCLo(105) = &H2E
auchCRCLo(106) = &H2F
auchCRCLo(107) = &HEF
auchCRCLo(108) = &H2D
auchCRCLo(109) = &HED
auchCRCLo(110) = &HEC
auchCRCLo(111) = &H2C
auchCRCLo(112) = &HE4
auchCRCLo(113) = &H24
auchCRCLo(114) = &H25
auchCRCLo(115) = &HE5
auchCRCLo(116) = &H27
auchCRCLo(117) = &HE7
auchCRCLo(118) = &HE6
auchCRCLo(119) = &H26
auchCRCLo(120) = &H22
auchCRCLo(121) = &HE2
auchCRCLo(122) = &HE3
auchCRCLo(123) = &H23
auchCRCLo(124) = &HE1
auchCRCLo(125) = &H21
auchCRCLo(126) = &H20
auchCRCLo(127) = &HE0
auchCRCLo(128) = &HA0
auchCRCLo(129) = &H60
auchCRCLo(130) = &H61
auchCRCLo(131) = &HA1
auchCRCLo(132) = &H63
auchCRCLo(133) = &HA3
auchCRCLo(134) = &HA2
auchCRCLo(135) = &H62
auchCRCLo(136) = &H66
auchCRCLo(137) = &HA6
auchCRCLo(138) = &HA7
auchCRCLo(139) = &H67
auchCRCLo(140) = &HA5
auchCRCLo(141) = &H65
auchCRCLo(142) = &H64
auchCRCLo(143) = &HA4
auchCRCLo(144) = &H6C
auchCRCLo(145) = &HAC
auchCRCLo(146) = &HAD
auchCRCLo(147) = &H6D
auchCRCLo(148) = &HAF
auchCRCLo(149) = &H6F
auchCRCLo(150) = &H6E
auchCRCLo(151) = &HAE
auchCRCLo(152) = &HAA
auchCRCLo(153) = &H6A
auchCRCLo(154) = &H6B
auchCRCLo(155) = &HAB
auchCRCLo(156) = &H69
auchCRCLo(157) = &HA9
auchCRCLo(158) = &HA8
auchCRCLo(159) = &H68
auchCRCLo(160) = &H78
auchCRCLo(161) = &HB8
auchCRCLo(162) = &HB9
auchCRCLo(163) = &H79
auchCRCLo(164) = &HBB
auchCRCLo(165) = &H7B '''
auchCRCLo(166) = &H7A
auchCRCLo(167) = &HBA
auchCRCLo(168) = &HBE
auchCRCLo(169) = &H7E
auchCRCLo(170) = &H7F
auchCRCLo(171) = &HBF
auchCRCLo(172) = &H7D
auchCRCLo(173) = &HBD
auchCRCLo(174) = &HBC
auchCRCLo(175) = &H7C
auchCRCLo(176) = &HB4
auchCRCLo(177) = &H74
auchCRCLo(178) = &H75
auchCRCLo(179) = &HB5
auchCRCLo(180) = &H77
auchCRCLo(181) = &HB7
auchCRCLo(182) = &HB6
auchCRCLo(183) = &H76
auchCRCLo(184) = &H72
auchCRCLo(185) = &HB2
auchCRCLo(186) = &HB3
auchCRCLo(187) = &H73
auchCRCLo(188) = &HB1
auchCRCLo(189) = &H71
auchCRCLo(190) = &H70
auchCRCLo(191) = &HB0
auchCRCLo(192) = &H50
auchCRCLo(193) = &H90
auchCRCLo(194) = &H91
auchCRCLo(195) = &H51
auchCRCLo(196) = &H93
auchCRCLo(197) = &H53
auchCRCLo(198) = &H52
auchCRCLo(199) = &H92
auchCRCLo(200) = &H96
auchCRCLo(201) = &H56
auchCRCLo(202) = &H57
auchCRCLo(203) = &H97
auchCRCLo(204) = &H55
auchCRCLo(205) = &H95
auchCRCLo(206) = &H94
auchCRCLo(207) = &H54
auchCRCLo(208) = &H9C
auchCRCLo(209) = &H5C
auchCRCLo(210) = &H5D
auchCRCLo(211) = &H9D
auchCRCLo(212) = &H5F
auchCRCLo(213) = &H9F
auchCRCLo(214) = &H9E
auchCRCLo(215) = &H5E
auchCRCLo(216) = &H5A
auchCRCLo(217) = &H9A
auchCRCLo(218) = &H9B
auchCRCLo(219) = &H5B
auchCRCLo(220) = &H99
auchCRCLo(221) = &H59
auchCRCLo(222) = &H58
auchCRCLo(223) = &H98
auchCRCLo(224) = &H88
auchCRCLo(225) = &H48
auchCRCLo(226) = &H49
auchCRCLo(227) = &H89
auchCRCLo(228) = &H4B
auchCRCLo(229) = &H8B
auchCRCLo(230) = &H8A
auchCRCLo(231) = &H4A
auchCRCLo(232) = &H4E
auchCRCLo(233) = &H8E
auchCRCLo(234) = &H8F
auchCRCLo(235) = &H4F
auchCRCLo(236) = &H8D
auchCRCLo(237) = &H4D
auchCRCLo(238) = &H4C
auchCRCLo(239) = &H8C
auchCRCLo(240) = &H44
auchCRCLo(241) = &H84
auchCRCLo(242) = &H85
auchCRCLo(243) = &H45
auchCRCLo(244) = &H87
auchCRCLo(245) = &H47
auchCRCLo(246) = &H46
auchCRCLo(247) = &H86
auchCRCLo(248) = &H82
auchCRCLo(249) = &H42
auchCRCLo(250) = &H43
auchCRCLo(251) = &H83
auchCRCLo(252) = &H41
auchCRCLo(253) = &H81
auchCRCLo(254) = &H80
auchCRCLo(255) = &H40
End Sub
Sub CRC16(ByRef checkstr() As Byte, ByVal ln As Integer) ', ByRef CRCHi As Byte, ByRef CRCLo As Byte)
Dim onechr, uchCRCHi, uchCRCLo, uIndex As Byte
Dim i As Integer
uchCRCHi = &HFF
uchCRCLo = &HFF
For i = 0 To ln
'onechr = Val(Asc(Mid$(checkstr, i, 1)))
onechr = checkstr(i)
uIndex = uchCRCHi Xor onechr
uchCRCHi = uchCRCLo Xor auchCRCHi(uIndex)
uchCRCLo = auchCRCLo(uIndex)
Next
'CRCHi = uchCRCHi
'CRCLo = uchCRCLo
checkstr(ln + 1) = uchCRCHi
checkstr(ln + 2) = uchCRCLo
End Sub