📄 len2.frm
字号:
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) = &H7E
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
'计算字符串长度
lenth = ln + 1 ' Len(checkstr)
For i = 1 To lenth
'onechr = Val(Asc(Mid$(checkstr, i, 1)))
onechr = checkstr(i - 1)
uIndex = uchCRCHi Xor onechr
uchCRCHi = uchCRCLo Xor auchCRCHi(uIndex)
uchCRCLo = auchCRCLo(uIndex)
Next
HiByte = uchCRCHi
LoByte = uchCRCLo
End Sub
Private Sub Check1_Click()
If Check1.Value = 0 Then
Check1.Caption = "写数据"
Command1(0).Enabled = True
Else
Check1.Caption = "读数据"
End If
End Sub
Private Sub Command1_Click(Index As Integer)
Select Case Index:
Case 0:
Command1(0).Enabled = False
'Command1(1).Enabled = True
Check1.Value = 1
Case 1:
Timer1.Enabled = False
End
End Select
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF1
Command1(0).Enabled = False
'Command1(1).Enabled = True
Check1.Value = 1
Case vbKeyEscape
Timer1.Enabled = False
End
End Select
End Sub
Private Sub Form_Load()
MSComm1.Settings = "19200,n,8,1"
'"9600,e,8,1"
MSComm1.CommPort = 1
MSComm1.InputLen = 0
If Not MSComm1.PortOpen Then MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim strr() As Long
If Check1.Value Then
' Timer1.Interval = 500
Dim SendStr(7) As Byte
Dim RcvStr() As Byte
SendStr(0) = &H1 'Val(Text2.Text)
SendStr(1) = &H3
SendStr(2) = &H0 'Int(Val(Text3.Text) / 256) '&H0
SendStr(3) = &H64 'Val(Text3.Text) Mod 256
SendStr(4) = &H0
SendStr(5) = &H14 'Val(Text4.Text)
'ReadMWStr = Chr$(Val(Text2.Text)) & Chr$(&H3) & Chr$(&H0) & Chr$(Text3.Text) & Chr$(&H0) & Chr$(Val(Text4.Text))
'ReadMWStr = Chr$(&H1) & Chr$(&H3) & Chr$(&H0) & Chr$(&H0) & Chr$(&H0) & Chr$(&H1)
Call CRC16(SendStr(), 5) 'ReadMWStr)
SendStr(6) = HiByte
SendStr(7) = LoByte
MSComm1.InBufferCount = 0
MSComm1.Output = SendStr
Do
i = i + 1 '通讯终止时跳出
For j = 1 To 10000
Next
' 如果缓冲区非空,则读出
If MSComm1.InBufferCount >= (5 + 20 * 2) Then
LenOfReturn = MSComm1.InBufferCount
RcvStr = MSComm1.Input
Beep
'****
Exit Do
End If
If i > 1000 Then Exit Sub
Loop
For k = 3 To LenOfReturn - 3
tmpstr = tmpstr & "/" & Hex(RcvStr(k)) '& "/" & RcvStr(1) & "/" & RcvStr(2) & "/" & RcvStr(3) & "/" & RcvStr(4) & "/" & RcvStr(5) & "/" & RcvStr(6)
Next
Text1.Text = tmpstr
Text6(0).Text = RcvStr(3) * 256 + RcvStr(4)
Text6(1).Text = RcvStr(5) * 256 + RcvStr(6)
Text6(2).Text = RcvStr(7) * 256 + RcvStr(8)
Text6(3).Text = RcvStr(9) * 256 + RcvStr(10)
Text6(4).Text = RcvStr(11) * 256 + RcvStr(12)
Text6(5).Text = RcvStr(13) * 256 + RcvStr(14)
Text6(6).Text = RcvStr(15) * 256 + RcvStr(16)
Text6(7).Text = RcvStr(17) * 256 + RcvStr(18)
Text6(8).Text = RcvStr(19) * 256 + RcvStr(20)
Text6(9).Text = RcvStr(21) * 256 + RcvStr(22)
Text6(10).Text = RcvStr(23) * 256 + RcvStr(24)
Text6(11).Text = RcvStr(25) * 256 + RcvStr(26)
Text6(12).Text = RcvStr(27) * 256 + RcvStr(28)
Text6(13).Text = RcvStr(29) * 256 + RcvStr(30)
Text6(14).Text = RcvStr(31) * 256 + RcvStr(32)
Text6(15).Text = RcvStr(33) * 256 + RcvStr(34)
Text6(16).Text = RcvStr(35) * 256 + RcvStr(36)
Text6(17).Text = RcvStr(37) * 256 + RcvStr(38)
Label2.Caption = RcvStr(39) * 256 + RcvStr(40)
Text2.Text = RcvStr(41) * 256 + RcvStr(42)
Else
'Timer1.Interval = 2500
Dim WriteStr() As Byte
' k = Len(Text5.Text) / 3
' If k = 0 Then Exit Sub
ReDim WriteStr(9 + 20 * 2 - 1)
'Dim RcvStr() As Byte
WriteStr(0) = &H1 ' Hex(Text2.Text)
WriteStr(1) = &H10
WriteStr(2) = &H0 'Hex(Int(Val(Text3.Text) / 256)) '&H0
WriteStr(3) = &H64 'Hex(Text3.Text) Mod 256
WriteStr(4) = &H0 'Hex(Int(Val(Text4.Text) / 256)) '&H0
WriteStr(5) = &H14 'Hex(Text4.Text)
WriteStr(6) = &H28 ' Hex(Val(Text4.Text) * 2)
WriteStr(7) = Int(Val(Text6(0).Text) / 256)
WriteStr(8) = Val(Text6(0).Text) Mod 256
WriteStr(9) = Int(Val(Text6(1).Text) / 256)
WriteStr(10) = Val(Text6(1).Text) Mod 256
WriteStr(11) = Int(Val(Text6(2).Text) / 256)
WriteStr(12) = Val(Text6(2).Text) Mod 256
WriteStr(13) = Int(Val(Text6(3).Text) / 256)
WriteStr(14) = Val(Text6(3).Text) Mod 256
WriteStr(15) = Int(Val(Text6(4).Text) / 256)
WriteStr(16) = Val(Text6(4).Text) Mod 256
WriteStr(17) = Int(Val(Text6(5).Text) / 256)
WriteStr(18) = Val(Text6(5).Text) Mod 256
WriteStr(19) = Int(Val(Text6(6).Text) / 256)
WriteStr(20) = Val(Text6(6).Text) Mod 256
WriteStr(21) = Int(Val(Text6(7).Text) / 256)
WriteStr(22) = Val(Text6(7).Text) Mod 256
WriteStr(23) = Int(Val(Text6(8).Text) / 256)
WriteStr(24) = Val(Text6(8).Text) Mod 256
WriteStr(25) = Int(Val(Text6(9).Text) / 256)
WriteStr(26) = Val(Text6(9).Text) Mod 256
WriteStr(27) = Int(Val(Text6(10).Text) / 256)
WriteStr(28) = Val(Text6(10).Text) Mod 256
WriteStr(29) = Int(Val(Text6(11).Text) / 256)
WriteStr(30) = Val(Text6(11).Text) Mod 256
WriteStr(31) = Int(Val(Text6(12).Text) / 256)
WriteStr(32) = Val(Text6(12).Text) Mod 256
WriteStr(33) = Int(Val(Text6(13).Text) / 256)
WriteStr(34) = Val(Text6(13).Text) Mod 256
WriteStr(35) = Int(Val(Text6(14).Text) / 256)
WriteStr(36) = Val(Text6(14).Text) Mod 256
WriteStr(37) = Int(Val(Text6(15).Text) / 256)
WriteStr(38) = Val(Text6(15).Text) Mod 256
WriteStr(39) = Int(Val(Text6(16).Text) / 256)
WriteStr(40) = Val(Text6(16).Text) Mod 256
WriteStr(41) = Int(Val(Text6(17).Text) / 256)
WriteStr(42) = Val(Text6(17).Text) Mod 256
WriteStr(43) = Int(Val(Label2.Caption) / 256)
WriteStr(44) = Val(Label2.Caption) Mod 256
WriteStr(45) = Int(Val(Text2.Text) / 256)
WriteStr(46) = Val(Text2.Text) Mod 256
Call CRC16(WriteStr(), 6 + 20 * 2)
WriteStr(9 + (20 - 1) * 2) = HiByte
WriteStr(10 + (20 - 1) * 2) = LoByte
MSComm1.InBufferCount = 0
MSComm1.Output = WriteStr
Do
i = i + 1 '通讯终止时跳出
For j = 1 To 10000
Next
' 如果缓冲区非空,则读出
If MSComm1.InBufferCount Then '>= (5 + Val(Text4.Text) * 2) Then
LenOfReturn = MSComm1.InBufferCount
RcvStr = MSComm1.Input
Beep
'****
Exit Do
End If
If i > 1000 Then Exit Sub
Loop
For k = 0 To LenOfReturn - 1
tmpstr = tmpstr & "/" & RcvStr(k) '& "/" & RcvStr(1) & "/" & RcvStr(2) & "/" & RcvStr(3) & "/" & RcvStr(4) & "/" & RcvStr(5) & "/" & RcvStr(6)
Next
' If Left$(tmpstr, 6) = "/1/16/" Then Check1.Value = 1
Text1.Text = tmpstr
'Debug.Print RcvStr
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -