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

📄 main.bas

📁 无线传感器网络节点的定位引擎程序
💻 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 + -