⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmodbusplat.frm

📁 一个modbus的测试工具
💻 FRM
📖 第 1 页 / 共 4 页
字号:
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "3"
                        Else
                            byByteCount = iDataCount * 2
                            iPkgLen = 8 + byByteCount * 2 + gtPLSet.byCRCByte
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "0"
                            strOutBuffer(4) = "4"
                            strOutBuffer(5) = Mid$(Hex$(byByteCount), 1, 1)
                            strOutBuffer(6) = Mid$(Hex$(byByteCount), 2, 1)
                            k = 0
                            For i = 0 To byByteCount - 1 Step 2
                                byData = gfunRightMove(giInputReg(iAddress), 8)
                                strOutBuffer(7 + k) = Mid$(Hex$(byData), 1, 1)
                                strOutBuffer(8 + k) = Mid$(Hex$(byData), 2, 1)
                                k = k + 2
                                byData = giInputReg(iAddress) And &HFF
                                strOutBuffer(7 + k) = Mid$(Hex$(byData), 1, 1)
                                strOutBuffer(8 + k) = Mid$(Hex$(byData), 2, 1)
                                k = k + 2
                                iAddress = iAddress + 1
                            Next i
                        End If
                    Case 5              ' force single coil
                        iAddress = (CByte(strInBuffer(5)) * &H10 + CByte(strInBuffer(6))) _
                            * &H100 + CByte(strInBuffer(7)) * &H10 + CByte(strInBuffer(8))
                        iAddress = iAddress - gtPLSet.iForceCoilAddress
                        If iAddress < 0 Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "2"
                        Else
                            byData = CByte(strInBuffer(11)) * &H10 + CByte(strInBuffer(12))
                            If byData <> 0 Then
                                iPkgLen = 8 + gtPLSet.byCRCByte
                                ReDim strOutBuffer(iPkgLen)
                                strOutBuffer(0) = ":"
                                strOutBuffer(1) = strInBuffer(1)
                                strOutBuffer(2) = strInBuffer(2)
                                strOutBuffer(3) = "8"
                                strOutBuffer(4) = "1"
                                strOutBuffer(5) = "0"
                                strOutBuffer(6) = "2"
                            Else
                                byData = CByte(strInBuffer(9)) * &H10 + CByte(strInBuffer(10))
                                If byData = &HFF Then
                                    gbyForceCoil(iAddress) = 1
                                    iPkgLen = 14 + gtPLSet.byCRCByte
                                    ReDim strOutBuffer(iPkgLen)
                                    strOutBuffer(0) = ":"
                                    For i = 1 To 12
                                        strOutBuffer(i) = strInBuffer(i)
                                    Next i
                                ElseIf byData = &H0 Then
                                    gbyForceCoil(iAddress) = 0
                                    iPkgLen = 14 + gtPLSet.byCRCByte
                                    ReDim strOutBuffer(iPkgLen)
                                    strOutBuffer(0) = ":"
                                    For i = 1 To 12
                                        strOutBuffer(i) = strInBuffer(i)
                                    Next i
                                Else
                                    iPkgLen = 8 + gtPLSet.byCRCByte
                                    ReDim strOutBuffer(iPkgLen)
                                    strOutBuffer(0) = ":"
                                    strOutBuffer(1) = strInBuffer(1)
                                    strOutBuffer(2) = strInBuffer(2)
                                    strOutBuffer(3) = "8"
                                    strOutBuffer(4) = "1"
                                    strOutBuffer(5) = "0"
                                    strOutBuffer(6) = "2"
                                End If
                            End If
                        End If
                    Case 6              ' preset single register
                        iAddress = (CByte(strInBuffer(5)) * &H10 + CByte(strInBuffer(6))) _
                            * &H100 + CByte(strInBuffer(7)) * &H10 + CByte(strInBuffer(8))
                        iAddress = iAddress - gtPLSet.iPresetRegAddress
                        If iAddress < 0 Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "2"
                        Else
                            giPresetReg(iAddress) = (CByte(strInBuffer(9)) * &H10 + CByte(strInBuffer(10))) _
                            * &H100 + (CByte(strInBuffer(11)) * &H10 + CByte(strInBuffer(12)))
                            iPkgLen = 14 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            For i = 1 To 12
                                strOutBuffer(i) = strInBuffer(i)
                            Next i
                        End If
                    Case 15             ' force multiple coils
                        iAddress = (CByte(strInBuffer(5)) * &H10 + CByte(strInBuffer(6))) _
                            * &H100 + CByte(strInBuffer(7)) * &H10 + CByte(strInBuffer(8))
                        iAddress = iAddress - gtPLSet.iForceCoilAddress
                        iDataCount = (CByte(strInBuffer(9)) * &H10 + CByte(strInBuffer(10))) _
                            * &H100 + CByte(strInBuffer(11)) * &H10 + CByte(strInBuffer(12))
                        If iDataCount Mod 8 = 0 Then
                            byByteCount = Int(iDataCount / 8)
                        Else
                            byByteCount = Int(iDataCount / 8) + 1
                        End If
                        If iAddress < 0 Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "2"
                        ElseIf iDataCount > gcMAXFORCECOIL Or iDataCount < 1 Or _
                            byByteCount <> (CByte(strInBuffer(13)) * &H10 + CByte(strInBuffer(14))) Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "3"
                        Else
                            k = 15
                            For i = 0 To byByteCount - 1
                                byData = CByte(strInBuffer(k)) * &H10 + CByte(strInBuffer(k + 1))
                                k = k + 2
                                For j = 0 To 7
                                    If byData And 2 ^ j Then
                                        gbyForceCoil(iAddress + j) = 1
                                    Else
                                        gbyForceCoil(iAddress + j) = 0
                                    End If
                                Next j
                                iAddress = iAddress + 8
                            Next i
                            iPkgLen = 14 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            For i = 1 To 12
                                strOutBuffer(i) = strInBuffer(i)
                            Next i
                        End If
                    Case 16             ' preset multiple registers
                        iAddress = iAddress = (CByte(strInBuffer(5)) * &H10 + CByte(strInBuffer(6))) _
                            * &H100 + CByte(strInBuffer(7)) * &H10 + CByte(strInBuffer(8))
                        iAddress = iAddress - gtPLSet.iForceCoilAddress
                        iDataCount = (CByte(strInBuffer(9)) * &H10 + CByte(strInBuffer(10))) _
                            * &H100 + CByte(strInBuffer(11)) * &H10 + CByte(strInBuffer(12))
                        byByteCount = iDataCount * 2
                        If iAddress < 0 Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "2"
                        ElseIf iDataCount > gcMAXFORCECOIL Or iDataCount < 1 Or _
                            byByteCount <> (CByte(strInBuffer(13)) * &H10 + CByte(strInBuffer(14))) Then
                            iPkgLen = 8 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            strOutBuffer(1) = strInBuffer(1)
                            strOutBuffer(2) = strInBuffer(2)
                            strOutBuffer(3) = "8"
                            strOutBuffer(4) = "1"
                            strOutBuffer(5) = "0"
                            strOutBuffer(6) = "3"
                        Else
                            k = 15
                            For i = 0 To byByteCount - 1 Step 2
                                giPresetReg(iAddress) = (CByte(strInBuffer(k)) * &H10 + CByte(strInBuffer(k + 1))) _
                                * &H100 + CByte(strInBuffer(k + 2)) * &H10 + CByte(strInBuffer(k + 3))
                                k = k + 4
                                iAddress = iAddress + 1
                            Next i
                            iPkgLen = 14 + gtPLSet.byCRCByte
                            ReDim strOutBuffer(iPkgLen)
                            strOutBuffer(0) = ":"
                            For i = 1 To 12
                                strOutBuffer(i) = strInBuffer(i)
                            Next i
                        End If
                    Case Else
                        iPkgLen = 8 + gtPLSet.byCRCByte
                        ReDim strOutBuffer(iPkgLen)
                        strOutBuffer(0) = ":"
                        strOutBuffer(1) = strInBuffer(1)
                        strOutBuffer(2) = strInBuffer(2)
                        strOutBuffer(3) = "8"
                        strOutBuffer(4) = "1"
                        strOutBuffer(5) = "0"
                        strOutBuffer(6) = "1"
                End Select
            Else
                Select Case byInBuffer(1)
                    Case 1          'coil
                        iAddress = byInBuffer(2) * &H100 + byInBuffer(3)
                        iAddress = iAddress - gtPLSet.iCoilAddress
                        iDataCount = byInBuffer(4) * &H100 + byInBuffer(5)
                        If iAddress < 0 Then
                            iPkgLen = 2 + gtPLSet.byCRCByte
                            ReDim byOutBuffer(iPkgLen)
                            byOutBuffer(0) = gtPLSet.byAddress
                            byOutBuffer(1) = &H81
                            byOutBuffer(2) = &H2
                        ElseIf iDataCount > gcMAXCOIL Or iDataCount < 1 Then
                            iPkgLen = 2 + gtPLSet.byCRCByte
                            ReDim byOutBuffer(iPkgLen)
                            byOutBuffer(0) = gtPLSet.byAddress
                            byOutBuffer(1) = &H81
                            byOutBuffer(2) = &H3
                        Else
                            If iDataCount Mod 8 = 0 Then
                                byByteCount = iDataCount / 8
                            Else
                                byByteCount = iDataCount / 8 + 1
                            End If
                            iPkgLen = 2 + byByteCount + gtPLSet.byCRCByte
                            ReDim byOutBuffer(iPkgLen)
                            byOutBuffer(0) = gtPLSet.byAddress
                            byOutBuffer(1) = &H1
                            byOutBuffer(2) = byByteCount
                            For i = 0 To byByteCount - 1
                                byOutBuffer(3 + i) = 0
                                For j = 0 To 15
                                    byOutBuffer(3 + i) = byOutBuffer(3 + i) + gbyCoil(iAddress) * 2 ^ j
                                    iAddress = iAddress + 1
                                Next j
                            Next i
                        End If
                    Case 2          ' input

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -