📄 modulecomcmd.bas
字号:
Attribute VB_Name = "命令分析"
Option Explicit
Public StsLedFlag(30) As Integer
'串口命令类型
Public Enum enum_ComSendType
SendIs_Connect = 65 '"A"
SendIs_ReadSave
SendIs_ReadWorkTimes
SendIs_WritePara
SendIs_ReadPara
SendIs_ReadDepth '"F"
SendIs_ReadSpeed
SendIs_ReadStatus
SendIs_ReadOutput
SendIs_ReadClick
SendIs_ReadErr '"K"
SendIs_ReadSts '"L"
SendIs_SerialKey '"M"
End Enum
Public Const ComCmdMax = 12 '@20050523
Public Enum enum_ComReceiveType
Is_Up = 1
Is_Down
Is_Center
Is_OverSpeed '超速 err
Is_SlowSpeed '减速点 err
Is_LimitSpeed '限速 err
Is_OverTop '过卷 err
Is_Halt '卡斗 err
Is_OnTop '到位
Is_DeepFalse '深失 err
Is_RopeLoose '松绳 err
Is_Stop '制动 err all
Is_Depth '
Is_Speed '
Is_Click '
Is_ParaID
Is_ParaData
Is_ifProtect
End Enum
'Public Type type_CommandS
'End Type
Public Sub InitComCmd()
'数码管状态
StsLedFlag(Is_Up) = &H4000 '上
StsLedFlag(Is_Down) = &H8000 '下
StsLedFlag(Is_Center) = &H2000 '中心
StsLedFlag(Is_OverSpeed) = &H1000 '超速
StsLedFlag(Is_SlowSpeed) = &H800 '减速
StsLedFlag(Is_LimitSpeed) = &H400 '限速
StsLedFlag(Is_OverTop) = &H200 '过卷
StsLedFlag(Is_Halt) = &H100 '卡斗
StsLedFlag(Is_OnTop) = &H80 '到位
StsLedFlag(Is_DeepFalse) = &H40 '深失
StsLedFlag(Is_RopeLoose) = &H20 '松绳
StsLedFlag(Is_Stop) = &H10 '制动
End Sub
Public Sub ComSendAnalize(SendType As enum_ComSendType, val1 As Integer, val2 As Integer) '发送分析
Dim s As String
s = Trim(Chr(SendType))
Select Case SendType
Case SendIs_Connect: '连接 A
s = s
Case SendIs_ReadSave: ' 保存的速度数据 B
If val1 = 0 Then
s = s + "0"
Else
s = s + "1"
End If
s = s + Right("000" & Trim(Hex(val2)), 4)
Case SendIs_ReadWorkTimes: ' 读勾数 C
Case SendIs_WritePara: ' 写参数D
s = s + Right("0" & Trim(Hex(val1)), 2) + _
Right("000" & Trim(Hex(val2)), 4)
Case SendIs_ReadPara: '读参数E
s = s + Right("0" & Trim(Hex(val1)), 2)
Case SendIs_ReadDepth To SendIs_ReadClick: ' 读深度F ~ 打点J
If s = "F" Then
s = s
End If
Case SendIs_ReadErr ' 读错误K
s = s + Right("0" & Trim(Hex(val1)), 1)
Case SendIs_ReadSts ' 读保护状态L
Case SendIs_SerialKey '串口键盘M
s = s & Right("0" & Trim(Hex(val1)), 2)
End Select
frmDebug.ComSend s
s = Trim(Chr(comStartflag)) + s + Trim(Chr(comEndflag))
frmMain.ComSend s '发送s
End Sub
Public Sub ComReceiveAnalize(ComCmdS As String) '接收分析
Dim i As enum_ComReceiveType
Dim j As Integer
On Error GoTo aErr
frmDebug.ComReceive ComCmdS
Select Case Asc(Left(ComCmdS, 1))
Case SendIs_Connect: ' "A"'按键应答
frmMain.ConnectSuccess
Case SendIs_ReadSave: 'B读到保存的速度数据
j = Asc(Mid(ComCmdS, 2, 1)) - Asc("0")
If j = 0 Or j = 1 Then
frmMain.ReceiveSaveSpeed j, "&H" + Mid(ComCmdS, 3, 4), "&H" + Mid(ComCmdS, 7, 2)
End If
Case SendIs_ReadWorkTimes: 'C读到勾数
frmMain.ReceiveWorkTimes "&h" + Mid(ComCmdS, 2, 4)
Case SendIs_WritePara 'D写参数
frmPara.ReceivePara "&h" + Mid(ComCmdS, 2, 2), "&h" + Mid(ComCmdS, 4, 4), False
Case SendIs_ReadPara 'E读参数
frmPara.ReceivePara "&h" + Mid(ComCmdS, 2, 2), "&h" + Mid(ComCmdS, 4, 4), True
'
Case SendIs_ReadDepth 'F读深度
If frmMain.Receive(Is_Depth, "&h" + Right(ComCmdS, Len(ComCmdS) - 1)) = False Then
Call SaveComLog("接收分析:" & ComCmdS)
End If
Case SendIs_ReadSpeed 'G读速度
If frmMain.Receive(Is_Speed, "&h" + Right(ComCmdS, Len(ComCmdS) - 1)) = False Then
Call SaveComLog("接收分析:" & ComCmdS)
End If
Case SendIs_ReadStatus 'H读显示状态
j = "&h" + Mid(ComCmdS, 2, 4)
For i = Is_Up To Is_Stop
frmMain.Receive i, IIf((j And StsLedFlag(i)) <> 0, True, False)
Next i
If (j And StsLedFlag(Is_OnTop)) <> 0 Then ComSendAnalize SendIs_ReadDepth, 0, 0
Case SendIs_ReadOutput 'I读输出
'读输出需要加入代码
Case SendIs_ReadClick 'J读打点
frmMain.ReceiveClick Right(ComCmdS, Len(ComCmdS) - 1)
Case SendIs_ReadErr 'K读错误
frmMain.ReceiveErr Asc(Mid(ComCmdS, 2, 1)) - Asc("0"), Trim(Str("&h" + Mid(ComCmdS, 3, 2)))
Case SendIs_ReadSts 'L读保护...状态
frmMain.ReceiveSts "&h" & Mid(ComCmdS, 2, 2)
Case SendIs_SerialKey 'M读显示
frmMain.ReceiveLedSts Right(ComCmdS, 9)
End Select
Call frmMain.ReceiveAny '通知有收到数据
Exit Sub
aErr:
Call SaveComLog("接收分析:" & ComCmdS)
End Sub
Public Sub SaveComLog(s As String) '接收分析
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -