📄 main.bas
字号:
Attribute VB_Name = "Module1"
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Const COMMAND_SET_NODE_ADDRESS = &H1
Public Const COMMAND_SET_NODE_ADDRESS_RESPONSE = &HA1
Public Const COMMAND_SET_LOCATION = &H2
Public Const COMMAND_SET_LOCATION_RESPONSE = &HA2
Public Const COMMAND_QUERY_ADDRESS = &H3
Public Const COMMAND_QUERY_ADDRESS_RESPONSE = &HA3
Public Const COMMAND_QUERY_LOCATION = &H4
Public Const COMMAND_QUERY_LOCATION_RESPONSE = &HA4
Public Const COMMAND_SET_AD = &H5
Public Const COMMAND_SET_AD_RESPONSE = &HA5
Public Const COMMAND_QUERY_AD = &H6
Public Const COMMAND_QUERY_AD_RESPONSE = &HA6
Public Const COMMAND_START_LOCATION = &H7
Public Const COMMAND_START_LOCATION_RESPONSE = &HA7
Public Const COMMAND_SEND_RSSI_LOCATION = &H8
Public Const COMMAND_SEND_RSSI_LOCATION_RESPONSE = &HA8
Public Const COMMAND_SEND_ANCHOR_NODE_ADDRESS = &H9
Public Const COMMAND_SEND_ANCHOR_NODE_ADDRESS_RESPONSE = &HA9
Public Const COMMAND_RESET_CURRENT_RECV_RSSI_NUMBER = &H11
Public Const COMMAND_RESET_CURRENT_RECV_RSSI_NUMBER_RESPONSE = &HB1
Public Const COMMAND_ERROR = &H9F
Public Const COMMAND_ERROR_RESPONSE = &HAF
Public Const COMMAND_QUEUE_FULL_RESPONSE = &H9D
Public Const COMMAND_RADIO_QUEUE_FULL_RESPONSE = &HAD
Public Const COMMAND_RADIO_NOT_FULL = &H9C
Public Const COMMAND_RADIO_NOT_FULL_RESPONSE = &HAC
Public Const COMMAND_RADIO_RESPONSE_NOT_FULL = &H9B
Public Const COMMAND_RADIO_RESPONSE_NOT_FULL_RESPONSE = &HAB
Public Const SUCCESS_RESPONSE = &H1
Public Const ERROR_RESPONSE = &HFF
Public Const ERROR_COMMAND = &H1
Public Const MY_OWN_ADDRESS_NOT_SET = &H2
Public Const SET_LOCATION_LENGTH_ERROR = &H3
Public Const ADDRESS_ERROR = &H4
Public Const LOCATION_NOT_SET = &H5
Public Const RADIO_NOT_RESPONSE = &H6
Public Const COMMAND_QUEUE_FULL = &H7
Public Const COMMAND_RADIO_QUEUE_FULL = &H8
Public Const WAITING_FOR_RADIO_RESPONSE = &H9
Public Const RADIO_RESPONSE_NOT_FULL = &HA0
Public Const RADIO_NOT_FULL = &HA1
Public Const AD_NOT_SET = &HA2
Public Const ANCHOR_INDEX_OVERFLOW = &HA3
Public Const NO_ENOUGH_AHCHOR_NODE_NOT_RESPONSE = &HA4
Public Const NET_GATE_WAY_NODE_ADDRESS = &HA4
Public Const PC_ADDRESS = &HFF
Public Const COMMAND_RESPONSE_LENGTH = 20
Public Const UART_RADIO_RETRY_COUNT = &H10
Public Const UART_RADIO_HAL_TIME = &HFF
Public seqno As Integer
Public ConfigFilePath As String
Public isCommOpen As Boolean
Public Command(9) As Byte
Public queryorsetlocation As Integer '0 query 1 set
Public QueryorSetAN As Integer '0 query 1 set
Function isHex(c)
If InStr("0123456789ABCDEFabcdef", c) <> 0 Then
isHex = True
Else
isHex = False
End If
End Function
Function openComm(comm As MSComm, portNo As Integer)
On Error GoTo errorhander
comm.CommPort = portNo
comm.InBufferSize = 1024
comm.RThreshold = 1
comm.DTREnable = True
comm.InputMode = comInputModeBinary
If comm.PortOpen = False Then
comm.Settings = "57600,n,8,1" '9600波特率,无校验,8位数据位,1位停止位
comm.PortOpen = True '打开串口
End If
comm.OutBufferCount = 0 '清空发送缓冲区
comm.InBufferCount = 0 '滑空接收缓冲区
openComm = True
Exit Function
errorhander:
'If (Err = 8002) Then
MsgBox Error, vbOKOnly, "Error"
openComm = False
'End If
End Function
Function AscToHex(sIn As String)
For i = 1 To Len(sIn)
MsgBox Hex(AscW(Mid(sIn, i, 1)))
Next
End Function
Sub Int2BYTE(i As Integer, arr1 As Byte, arr2 As Byte)
Dim arr(2) As Byte
CopyMemory arr(0), i, 2
arr1 = arr(0)
arr2 = arr(1)
End Sub
Sub msgErrorMessage(messageindex As Integer)
Select Case messageindex
Case ERROR_COMMAND
MsgBox "错误的命令格式", , "Error"
Case MY_OWN_ADDRESS_NOT_SET
MsgBox "自身地址没有设置", , "Error"
Case SET_LOCATION_LENGTH_ERROR
MsgBox "设置坐标的命令长度不够", , "Error"
Case ADDRESS_ERROR
MsgBox "地址错误", , "Error"
Case LOCATION_NOT_SET
MsgBox "节点坐标没有设定", , "Error"
Case RADIO_NOT_RESPONSE
MsgBox "远程射频没有响应", , "Error"
Case COMMAND_QUEUE_FULL
MsgBox "命令队列满", , "Error"
Case COMMAND_RADIO_QUEUE_FULL
MsgBox "射频命令队列满", , "Error"
Case WAITING_FOR_RADIO_RESPONSE
MsgBox "等待远程射频响应", , "Error"
Case RADIO_RESPONSE_NOT_FULL
MsgBox "远程射频响应不完全", , "Error"
Case RADIO_NOT_FULL
MsgBox "射频命令不完整", , "Error"
Case AD_NOT_SET
MsgBox "没有设置A和N", , "Error"
Case ANCHOR_INDEX_OVERFLOW
MsgBox "锚节点坐标索引溢出", , "Error"
Case NO_ENOUGH_AHCHOR_NODE_NOT_RESPONSE
MsgBox "没有足够的锚节点响应", , "Error"
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -