comm.bas
来自「主要用于控制三相电能表检验装置」· BAS 代码 · 共 110 行
BAS
110 行
Attribute VB_Name = "Module4"
'组要发送的帧
Function FaSong(Data() As Byte, DataLen As Integer)
Dim tmp() As Byte
ReDim tmp(DataLen - 1) As Byte
Dim i As Integer
For i = 0 To DataLen - 1
tmp(i) = Data(i)
Next i
'Form1.MSComm1.Output = tmp
OutLen = DataLen
If OutCiShu > 0 Then
OutCiShu = OutCiShu - 1
End If
End Function
Function ZuZheng(DataID As String, Data() As Byte, DataLen As Byte, DataType As Byte) As Byte
Dim TempData(1) As Byte
Dim dlen As Byte
Dim CRC As Long
outdata(0) = &H68
Dim tempstring As String
tempstring = DataID
StringToHex tempstring, TempData
If DataType = 1 Then '读参数
outdata(1) = &H5
outdata(2) = &H19
outdata(3) = &O2 '数据长度
outdata(4) = TempData(1) '低位在前
outdata(5) = TempData(0) '高位在后
'/Outdata(6)
CRC = CRC_Cal(0, outdata, 6) '计算CRC
outdata(6) = CRC And &HFF
CRC = CRC And &HFF00
CRC = CRC / 256
outdata(7) = CRC And &HFF
outdata(8) = &H16
outdata(9) = &HFF
'OutCiShu = 3 '出错重复次数3
'FaSong outdata, 9
ElseIf DataType = 2 Then '写参数 '
outdata(1) = &H5
outdata(2) = &H1A
outdata(3) = DataLen + 2 '数据长度
outdata(4) = TempData(1) '低位在前
outdata(5) = TempData(0) '高位在后
Dim i As Byte
For i = 0 To DataLen - 1
outdata(6 + i) = Data(i)
Next i
CRC = CRC_Cal(0, outdata, 6 + DataLen) '计算CRC
outdata(6 + i) = CRC And &HFF
CRC = CRC And &HFF00
CRC = CRC / 256
outdata(7 + i) = CRC And &HFF
outdata(8 + i) = &H16
outdata(9 + i) = &HFF
'OutCiShu = 3 '出错重复次数3
'FaSong outdata, 9 + i
ElseIf DataType = 3 Then '读电流 电压
outdata(1) = &H1 '读电压参数
outdata(2) = &H2 '固定长度
outdata(3) = TempData(1) '低位在前
outdata(4) = TempData(0) '高位在后
outdata(5) = XuHao
outdata(6) = Wendu
CRC = CRC_Cal(0, outdata, 7) '计算CRC
outdata(7) = CRC And &HFF
CRC = CRC And &HFF00
CRC = CRC / 256
outdata(8) = CRC And &HFF
outdata(9) = &H16
outdata(10) = &HFF
'FaSong outdata, 10
'OutCiShu = 3 '出错重复次数3
ElseIf DataType = 4 Then '保存到FLASH中
outdata(1) = &H5
outdata(2) = &H20
outdata(3) = 2 '数据长度
outdata(4) = &HFF '低位在前
outdata(5) = &HFF '高位在后 无效的命令
CRC = CRC_Cal(0, outdata, 6 + DataLen) '计算CRC
outdata(6) = CRC And &HFF
CRC = CRC And &HFF00
CRC = CRC / 256
outdata(7) = CRC And &HFF
outdata(8) = &H16
outdata(9) = &HFF
'OutCiShu = 3 '出错重复次数3
'FaSong outdata, 9
ElseIf DataType = 5 Then '恢复默认值
outdata(1) = &H5
outdata(2) = &H21
outdata(3) = 2 '数据长度
outdata(4) = &HFF '低位在前
outdata(5) = &HFF '高位在后 无效的命令
CRC = CRC_Cal(0, outdata, 6 + DataLen) '计算CRC
outdata(6) = CRC And &HFF
CRC = CRC And &HFF00
CRC = CRC / 256
outdata(7) = CRC And &HFF
outdata(8) = &H16
outdata(9) = &HFF
'OutCiShu = 3 '出错重复次数3
'FaSong outdata, 9
End If
End Function
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?