?? 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 + -