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

📄 rfidctrl.ctl

📁 这个是我们为烟草行业出厂管理编写的RFID读写软件
💻 CTL
📖 第 1 页 / 共 4 页
字号:
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 + -