'DLT 645-2007 采集程序 Public Function Cmd_DLT645(Address As Integer, Parameter As Integer) Dim FrameSend(13) As Integer '定义发送报文 FrameSend(0) = &HFE '帧起始符1 FrameSend(1) = &HFE '帧起始符2 FrameSend(2) = &H68 '帧长度 FrameSend(3) = &H8 + 6 '起始符 FrameSend(4) = &H11 '控制码 FrameSend(5) = 0 '系统地址高字节 FrameSend(6) = Address &HFF '系统地址低字 FrameSend(7) = 0 '功能码 FrameSend(8) = Parameter \ 256 '参数高字 FrameSend(9) = Parameter And &HFF '参数低字 FrameSend(10) = FrameSend(2) + FrameSend(3) + FrameSend(4) + FrameSend(5) + FrameSend(6) + FrameSend(7) + FrameSend(8) + FrameSend(9) '校验 FrameSend(11) = &H16 '结束符 FrameSend(12) = &HFE '帧尾符1 FrameSend(13) = &HFE '帧尾符2 '发送报文 SerialWrite FrameSend End Function '读取报文 Public Sub SerialRead() Dim FrameRec(13) As Integer SerialRead FrameRec '校验帧起始符 If FrameRec(0) = &HFE And FrameRec(1) = &HFE Then '校验结束符 If FrameRec(10) = &H16 And FrameRec(11) = &HFE And FrameRec(12) = &HFE Then '校验报文长度 If FrameRec(2) = &H8 + FrameRec(3) Then '校验校验码 Dim Crc As Integer For i = 2 To 10 Crc = Crc + FrameRec(i) Next '校验码比较 If Crc = FrameRec(10) Then 'success End If End If End If End If End Sub