📄 rfidctrl.ctl
字号:
VERSION 5.00
Object = "{077A7F52-008F-409F-A28D-9EB006AA742B}#2.0#0"; "CompressBarcode.ocx"
Begin VB.UserControl RFIDCtrl
ClientHeight = 1020
ClientLeft = 0
ClientTop = 0
ClientWidth = 2985
InvisibleAtRuntime= -1 'True
ScaleHeight = 1020
ScaleWidth = 2985
Begin VB.Timer PingTimer
Enabled = 0 'False
Left = 2520
Top = 360
End
Begin CompressBarcode.ComDecompressBarcode ComDecompressBarcode1
Left = 840
Top = 120
_ExtentX = 873
_ExtentY = 873
End
Begin VB.Timer PollingTimer
Enabled = 0 'False
Interval = 1
Left = 1800
Top = 240
End
Begin VB.PictureBox Picture1
BorderStyle = 0 'None
Height = 495
Left = 0
Picture = "RFIDCtrl.ctx":0000
ScaleHeight = 495
ScaleWidth = 495
TabIndex = 0
Top = 0
Width = 495
End
End
Attribute VB_Name = "RFIDCtrl"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Private LongIdentifyTickCount As Long
Private InnerReLongIdentify As Long '重发Indentify的时间间隔,0则不重发
Private InnerAvailReport As Long 'Report的有效次数
Private AlertTime As Long '报警EX的时间点GetTickCount
Private NeedNextAlert As Boolean '是否要发送NEXT的报警信号
Private AlertInterval As Long '发送NEXT的报警信号的时间间隔
Private NextAlert As Integer 'NEXT的报警信号
Private InnerReaderSN As String
Private InnerCommType As Integer
Private InnerCommParam As String
Private InnerAutoRead As Integer
Private InnerReadCtrlInfoWhenCallingReadIDs As Boolean
'*********************************************************
Private InnerLogLevel As Integer
Private InnerLogKeepDays As Integer
Private InnerLogPath As String
Private GLFS As Scripting.FileSystemObject
Private LogIndex As Integer
'*********************************************************
'Private Const READER_INI_ITEM = "XCRF-500W Reader"
Private RFIDCtrlINISettingFile As String 'INI文件名,包含绝对路径
Private RFID_API_INISettingFile As String 'INI文件名,包含绝对路径
'Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
'Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
'Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'
'*********************************************************
Private InnerPollingInterval As Long
Private InnerDispatchMethodWhenGetID As Integer
Private InnerSameIDinterval As Long
Private InnerReaderResponseTimeout As Long
Private InnerWorkingFolder As String
Private InnerMinCmdInterval As Long
'*********************************************************
'定义远望谷RFID设备的读写参数
Private InnerRE_POWEROFF_TIMES As Integer
Private InnerXC_SCAN_TRIES As Integer
Private InnerXC_RETRIES As Integer
Private InnerXC_READ_TRIES As Integer
Private InnerXC_WRITE_TRIES As Integer
Private InnerXC_ANTENNAS As Integer
Private InnerXC_ANTENNA_CONCTL As Integer
Private InnerXC_SAVE_LOG_FILE As Integer
Private InnerXC_LOG_FILE_NAME As String
'Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Public Declare Function GetTickCount Lib "kernel32" () As Long
'
'Public Type IDInfo
' id As String
' LastReadTickCount As Long '上次读取到的tickcount
'End Type
'*********************************************************
Private glbIdStr As String '保存读到标签的id,用于传递给其他窗体 2004-10-29 sunming 增加
Private isReaderOpen As Boolean ' 读写器是否已经打开
Private hCom As Long ' 串口句柄
Private aStatus As Long ' api 函数状态
Private aCardType As Byte ' 标签类型
'*********************************************************
'******************************************
'网络测试参数
Private InnerTestTimerInterval As Long
Private InnerPingTimes As Integer
'******************************************
'网络状态:False表示断开,True表示连接
Private NetState As Boolean
Private InnerOtherParam As String
Private LengthAndCtrlInfo() As Byte
Private LCtrlByte As Byte
Private HCtrlByte As Byte
Private CodeLength As Long
Private IDInfos() As IDInfo
'当前rfid reader状态
Private CurState As Integer
Private Const StateOpenned = 1
Private Const StateClosed = 2
Private Const AntennaNum = 1
Public Event GotIDs(IDs As String)
Public Event ErrorOccured(ErrorID As Integer, ErrorType As String, ErrorDesc As String)
'*********************************************************
'WorkingFolder: 工作目录
'Private InnerWorkingFolder As String
'*********************************************************
Public Property Get WorkingFolder() As Variant
WorkingFolder = InnerWorkingFolder
End Property
Public Property Let WorkingFolder(ByVal vNewValue As Variant)
InnerWorkingFolder = vNewValue
PropertyChanged "WorkingFolder"
End Property
'*********************************************************
'CommType通讯方式:
' 0 TCP/IP方式
' 1 串口方式
'Private InnerCommType As Integer
'*********************************************************
Public Property Get CommType() As Variant
CommType = InnerCommType
End Property
Public Property Let CommType(ByVal vNewValue As Variant)
InnerCommType = vNewValue
PropertyChanged "CommType"
End Property
'*********************************************************
'通讯相关参数 (IP地址、端口号或COM口号等):
' 如果是TCP/IP方式,应该是"IP;子网掩;网关""192.9.100.1;255.255.255.0;192.9.100.254"的样式
' 如果是串口方式,应该是"COM1;9600,n,8,1"的样式
'Private InnerCommParam As String
'*********************************************************
Public Property Get CommParam() As Variant
CommParam = InnerCommParam
End Property
Public Property Let CommParam(ByVal vNewValue As Variant)
InnerCommParam = vNewValue
PropertyChanged "CommParam"
End Property
'*********************************************************
'RFID设备的编号。
'Private InnerReaderSN As String
'*********************************************************
Public Property Get ReaderSN() As Variant
ReaderSN = InnerReaderSN
End Property
Public Property Let ReaderSN(ByVal vNewValue As Variant)
InnerReaderSN = vNewValue
PropertyChanged "ReaderSN"
End Property
'*********************************************************
'自动读取电子标签方式
'说明:
'AutoRead=0,不做Polling;
'AutoRead=1,定时Polling读取电子标签ID;
'AutoRead=2,定时Polling读取电子标签ID和电子标签的控制信息。
'
'Private InnerAutoRead As Integer
'*********************************************************
Public Property Get AutoRead() As Variant
AutoRead = InnerAutoRead
End Property
Public Property Let AutoRead(ByVal vNewValue As Variant)
InnerAutoRead = vNewValue
PropertyChanged "AutoRead"
End Property
'*********************************************************
'同时读取电子标签数据位设置
''在读取电子标签ID的时是否需要读取出控制位数据的标志
'Private InnerReadCtrlInfoWhenCallingReadIDs As Boolean
'*********************************************************
Public Property Get ReadCtrlInfoWhenCallingReadIDs() As Variant
ReadCtrlInfoWhenCallingReadIDs = InnerReadCtrlInfoWhenCallingReadIDs
End Property
Public Property Let ReadCtrlInfoWhenCallingReadIDs(ByVal vNewValue As Variant)
InnerReadCtrlInfoWhenCallingReadIDs = vNewValue
PropertyChanged "ReadCtrlInfoWhenCallingReadIDs"
End Property
''*********************************************************
''Polling定时器定期执行的时间间隔
''Private InnerPollingInterval As Long
''*********************************************************
'Public Property Get PollingInterval() As Variant
' PollingInterval = InnerPollingInterval
'End Property
'Public Property Let PollingInterval(ByVal vNewValue As Variant)
' InnerPollingInterval = vNewValue
' PropertyChanged "PollingInterval"
'End Property
''*********************************************************
''Polling的时候获取ID后的处理方式
''是否得到ID之后就触发GotIDs事件
''Private InnerDispatchMethodWhenGetID as Integer
''*********************************************************
'Public Property Get DispatchMethodWhenGetID() As Variant
' DispatchMethodWhenGetID = InnerDispatchMethodWhenGetID
'End Property
'Public Property Let DispatchMethodWhenGetID(ByVal vNewValue As Variant)
' InnerDispatchMethodWhenGetID = vNewValue
' PropertyChanged "DispatchMethodWhenGetID"
'End Property
'
''*********************************************************
''Polling的时候获取ID认为是同一个ID的时间间隔
''Private InnerSameIDinterval As Long
''*********************************************************
'Public Property Get SameIDinterval() As Variant
' SameIDinterval = InnerSameIDinterval
'End Property
'Public Property Let SameIDinterval(ByVal vNewValue As Variant)
' InnerSameIDinterval = vNewValue
' PropertyChanged "SameIDinterval"
'End Property
'
''*********************************************************
''向Reader发送指令后,需要等待一段时间才能够得到反馈,
''反馈超时是等待的最长时间,如果等待超过了这个时间,
''我们认为出现了错误。
''Private InnerReaderResponseTimeout As Long
''*********************************************************
'Public Property Get ReaderResponseTimeout() As Variant
' ReaderResponseTimeout = InnerReaderResponseTimeout
'End Property
'Public Property Let ReaderResponseTimeout(ByVal vNewValue As Variant)
' InnerReaderResponseTimeout = vNewValue
' PropertyChanged "ReaderResponseTimeout"
'End Property
'
''*********************************************************
''当前的日志级别
''Private InnerLogLevel As Integer
''*********************************************************
'Public Property Get LogLevel() As Variant
' LogLevel = InnerLogLevel
'End Property
'Public Property Let LogLevel(ByVal vNewValue As Variant)
' InnerLogLevel = vNewValue
' PropertyChanged "LogLevel"
'End Property
'
''*********************************************************
''Log保存的天数期限,超过了这个期限的Log文件,将会被自动删除
''Private InnerLogKeepDays As Integer
''*********************************************************
'Public Property Get LogKeepDays() As Variant
' LogKeepDays = InnerLogKeepDays
'End Property
'Public Property Let LogKeepDays(ByVal vNewValue As Variant)
' InnerLogKeepDays = vNewValue
' PropertyChanged "LogKeepDays"
'End Property
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'**********************************************************
'初始化RFID设备,使RFID设备处于操作准备状态
' 输入: 无
' 输出: 成功与否标志,错误描述。
'**********************************************************
Public Function OpenReader(ErrorDesc As String) As Boolean
Call PDTRACELOG(2, "000-RFIDCtrl", "------In OpenReader")
If CurState = StateOpenned Then
Call PDTRACELOG(3, "000-RFIDCtrl", "------In OpenReader" & "|Reader already openned!")
OpenReader = True
Exit Function
End If
On Error GoTo ErrDeal
Call ChechWorkingFolder
'生成控件本身需要的ini文件和生成相应的ini文件供RFID的API使用
'读取ini文件中的相应配置
RFIDCtrlINISettingFile = InnerWorkingFolder & "\RFIDCtrl.ini"
InitCfgFromINIFile
'得到了log的级别和存放路径,之后可以记录日志
'生成RFID API需要的ini文件
RFID_API_INISettingFile = InnerWorkingFolder & "\ReaderAPI.ini"
Call CheckRFID_API_INIExist(Me)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -