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

📄 mdlcom.bas

📁 FLA-502控制、标定、分析用
💻 BAS
📖 第 1 页 / 共 2 页
字号:
    Dim BufferLen As Integer
    Dim ReceivedBytes As Long
    Dim buffer() As Byte
    Dim i As Long
    Dim Count As Integer
    BufferLen = bytesNeed
    ReDim buffer(1 To BufferLen) As Byte
    SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
    If (SUCCESS <> 0) Then
       If ReceivedBytes > 0 Then
            ReDim returnBytes(1 To bytesNeed)
            For i = 1 To ReceivedBytes
                returnBytes(i) = buffer(i)
            Next i
            Count = ReceivedBytes
            If ReceivedBytes < bytesNeed Then
                Call Delay01(2)
                BufferLen = bytesNeed - ReceivedBytes
                ReceivedBytes = BufferLen
                SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
                If SUCCESS <> 0 And BufferLen = ReceivedBytes Then
                    For i = 1 To ReceivedBytes
                        returnBytes(Count + i) = buffer(i)
                    Next
                    getCommLongBytes = OP_SUCCESSED
                Else
                    getCommLongBytes = OP_FAILED
                End If
            ElseIf ReceivedBytes = bytesNeed Then
                getCommLongBytes = OP_SUCCESSED
            Else
                getCommLongBytes = OP_FAILED
            End If
      Else
            getCommLongBytes = OP_FAILED
      End If
    Else
             getCommLongBytes = OP_FAILED
    End If
    Call ClearCommError(commHandle, lpErrors, lpStat)
End Function

Public Function getCommData(commHandle As Long, bytesNeed As Integer) As Long
    Dim BufferLen As Integer
    Dim ReceivedBytes As Long
    Dim buffer() As Byte
    Dim i As Long
    Dim Count As Integer
    BufferLen = bytesNeed
    ReDim buffer(1 To BufferLen) As Byte
    SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
    If (SUCCESS <> 0) Then
       If ReceivedBytes > 0 Then
            ReDim returnBytes(1 To bytesNeed)
            For i = 1 To ReceivedBytes
                returnBytes(i) = buffer(i)
            Next i
            Count = ReceivedBytes
            If ReceivedBytes = bytesNeed Then
                getCommData = OP_SUCCESSED
            Else
                getCommData = OP_FAILED
            End If
       Else
            getCommData = OP_FAILED
       End If
    Else
        getCommData = OP_FAILED
    End If
    Call ClearCommError(commHandle, lpErrors, lpStat)
End Function

Public Sub Delay(PauseTime As Integer)
    Call HYEvents
    Call Sleep(PauseTime * 1000)
End Sub

Public Sub Delay01(PauseTime01 As Integer)
    Call HYEvents
    Call Sleep(PauseTime01 * 100)
End Sub
'*************************************************0.01秒延时***************************************************************
Public Sub Delay001(PauseTime001 As Integer)
    Call HYEvents
    Call Sleep(PauseTime001 * 10)
End Sub
'*************************************************0.001秒延时***************************************************************
Public Sub Delay0001(PauseTime0001 As Integer)
    Call HYEvents
    Call Sleep(PauseTime0001)
End Sub

Function GetTrueValue(hightByte As Byte, lowByte As Byte) As Long
   'getTrueValue = CInt("&H" & Format(Hex(hightByte), "00") & Format(Hex(lowByte), "00"))
   Dim Str1 As String
   Dim Str2 As String
   Str1 = Hex(hightByte)
   If Len(Str1) = 1 Then Str1 = "0" & Str1
   Str2 = Hex(lowByte)
   If Len(Str2) = 1 Then Str2 = "0" & Str2
   GetTrueValue = CInt("&H" & Str1 & Str2)
End Function

Function getBit(inputByte As Byte, bit As Byte) As Boolean
    getBit = False
    If (bit >= 0 And bit <= 7) Then
        If (inputByte And (2 ^ bit)) Then
          getBit = True
        End If
    Else
       getBit = False
    End If
End Function

Public Sub HYEvents()
   DoEvents
End Sub

Public Function SendCommBytes1(commHandle As Long, cmd() As Byte, BytesToBeSent As Byte) As Long
    Dim SentBytes As Long
    Dim buffer() As Byte
    Dim i As Long
    Call PurgeComm(commHandle, PURGE_TXCLEAR Or PURGE_RXCLEAR)
    ReDim buffer(1 To BytesToBeSent) As Byte
    For i = 1 To BytesToBeSent
        buffer(i) = cmd(i)
    Next
    SUCCESS = WriteFile(commHandle, buffer(1), BytesToBeSent, SentBytes, ByVal 0)
    If (SUCCESS <> 0) And (SentBytes = BytesToBeSent) Then
        FlushFileBuffers (commHandle)
        SendCommBytes1 = OP_SUCCESSED
    Else
        SendCommBytes1 = OP_FAILED
    End If
    Call ClearCommError(commHandle, lpErrors, lpStat)
End Function

Public Function getCommBytesWithReturn(commHandle As Long, bytesNeed As Byte) As Long
    Dim BufferLen As Byte
    Dim ReceivedBytes As Long
    Dim buffer() As Byte
    Dim i As Long
    Dim Count As Integer
    BufferLen = bytesNeed
    ReDim buffer(1 To BufferLen) As Byte
    SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
    If (SUCCESS <> 0) Then
        If ReceivedBytes > 0 And ReceivedBytes = bytesNeed Then
            ReDim returnBytes(1 To ReceivedBytes)
            For i = 1 To ReceivedBytes
                returnBytes(i) = buffer(i)
            Next i
            getCommBytesWithReturn = OP_SUCCESSED
        Else
            getCommBytesWithReturn = OP_FAILED
        End If
    Else
        getCommBytesWithReturn = OP_FAILED
    End If
    Call ClearCommError(commHandle, lpErrors, lpStat)
End Function

Function getBigBit(inputByte As Single, bit As Byte) As Boolean
    getBigBit = False
    If (bit >= 0 And bit <= 7) Then
        If (inputByte And (2 ^ bit)) Then
            getBigBit = True
        End If
    Else
       getBigBit = False
    End If
End Function

Public Sub ClearPort()
    Call PurgeComm(rpmEngineer.RpmHandle, PURGE_TXCLEAR Or PURGE_RXCLEAR)
End Sub

Public Function getCommBytesCount(commHandle As Long, bytesNeed As Byte) As Long
    Dim BufferLen As Byte
    Dim ReceivedBytes As Long
    Dim buffer() As Byte
    Dim i As Long
    Dim Count As Integer
    Dim T1 As Single
    T1 = Timer
    BufferLen = bytesNeed
    
    ReDim buffer(1 To BufferLen) As Byte
    SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
    If (SUCCESS <> 0) Then
            If ReceivedBytes > 0 Then
                ReDim returnBytes(1 To bytesNeed)
                For i = 1 To ReceivedBytes
                   returnBytes(i) = buffer(i)
                Next i
                '第一次Read字节数
                Count = ReceivedBytes
                '当真正收到的字节数< 想要收到的字节数时,再一次Read第一次没有Read出来的那部份
                If ReceivedBytes < bytesNeed Then
                   BufferLen = bytesNeed - ReceivedBytes
                   ReceivedBytes = BufferLen
                   SUCCESS = ReadFile(commHandle, buffer(1), BufferLen, ReceivedBytes, ByVal 0)
                   If SUCCESS <> 0 And ReceivedBytes >= 1 Then
                        For i = 1 To ReceivedBytes
                           returnBytes(Count + i) = buffer(i)
                        Next
                        ' '第一次Read字节数+ '第二次Read字节数
                        Count = Count + ReceivedBytes
                    End If
                 End If
                 getCommBytesCount = Count
            Else
                getCommBytesCount = OP_FAILED
            End If
    Else
        'SUCCESS=0,通讯失败
        getCommBytesCount = OP_FAILED
    End If
    Call ClearCommError(commHandle, lpErrors, lpStat)
End Function

⌨️ 快捷键说明

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