📄 mdldefine.bas
字号:
Attribute VB_Name = "mdlDef"
Option Explicit
'---------------------------------------------------------------------------
' 常量定义
'---------------------------------------------------------------------------
Public Const HDA_REQMESSAGEOFBACKGROUND = 1 '// 后台请求报文
Public Const HDA_REQMESSAGEOFTERMINAL = 0 '// 终端请求报文
Public Const HDA_BROADCASTSN = 0 '// 广播序列号
Public Const HDA_BROADCASTTERMINALID = 0 '// 广播终端号
Public Const HDA_BROADCASTADDRESSOFALL = &HFFFF '// CAN全网广播地址
Public Const HDA_BROADCASTADDRESSOFONE = &HFF '// CAN广播地址
Public Const HDA_SYSTEMIDOFATT1_1 = &H400 '// CAN1.1考勤系统子系统号
Public Const HDA_SYSTEMIDOFACC1_1 = &H500 '// CAN1.1门禁系统子系统号
Public Const HDA_SYSTEMIDOFPOS1_1 = &H600 '// CAN1.1收费系统子系统号
Public Const PINOFOPERATETERMINAL = "37495642"
'---------------------------------------------------------------------------
' 枚举类型
'---------------------------------------------------------------------------
'汉字内码
Public Enum CHINESETYPE
GB_GB = 0 ' 后台-GB / 终端-GB
GB_BIG5 = 1 ' 后台-GB / 终端-BIG5
BIG5_GB = 2 ' 后台-BIG5 / 终端-GB
BIG5_BIG5 = 3 ' 后台-BIG5 / 终端-BIG5
End Enum
'通讯方式
Public Enum COMMTYPE
COMMTYPE_CAN1_0 = 0 'CAN 1.0(地址1B)
COMMTYPE_CAN1_1 = 1 'CAN 1.1(地址2B)
COMMTYPE_CAN2_0 = 2 'CAN 2.0(地址2B)
COMMTYPE_RS232 = 3 'RS232
COMMTYPE_TCP_IP = 4 'TCP/IP
COMMTYPE_GPRS = 5 'GPRS
COMMTYPE_ZIGBEE = 6 'ZigBee
End Enum
'信息码(为偶数的值表示报文发起方为终端一方,为奇数表示报文发起方为后台一方)
Public Enum MessageType
MT_ONLINENOTICE1 = &H26 '终端在线通知
MT_ONLINENOTICE2 = &H27 '
MT_REECHO1 = &H28 '回响测试
MT_REECHO2 = &H29 '
MT_SETZIGBEEMODULE2 = &H49 '设置ZIGBEE模块
MT_SEARCHNETWORKOFZIGBEEMODULE1 = &H4A '网络发现-ZIGBEE模块
MT_SEARCHNETWORKOFZIGBEEMODULE2 = &H4B
MT_GETMACOFZIGBEEMODULE2 = &H4D '获取ZIGBEE模块MAC地址
End Enum
'报文响应码
Public Enum RESPONSECODE
RC_SUCCESS = 0 ' // 批准或成功地完成
RC_ENQUIRECENTER = 1 ' // 请查询管理中心
RC_ADDRESSCONFLICT = 2 ' // 地址冲突
RC_INVALIDMERCHANT = 3 ' // 无效商户
RC_SEIZURECARD = 4 ' // 没收卡
RC_TERMINALSTATEERROR = 5 ' // 终端状态错误
RC_INVALIDMESSAGE = 12 ' // 无效报文
RC_INVALIDAMOUNT = 13 ' // 无效金额
RC_INVALIDCARDNO = 14 ' // 无效卡号
RC_INVALIDOPRCARDNO = 15 ' // 无效操作员卡号
RC_NOORIGINALTRANS = 25 ' // 未能找到原交易
RC_DATAGRAMERROR = 30 ' // 报文错
RC_MACERROR = 31 ' // 产生MAC错
RC_PINFORMATERROR = 32 ' // PIN格式错
RC_CONFIOVERDUECARD = 33 ' // 过期的卡-没收
RC_CONFIPINWRONGOVERTIMES = 38 ' // 超过允许的PIN试输入-没收
RC_LISTVERSIONERROR = 39 ' // 黑名单版本错误
RC_CONFIREPORTLOSSCARD = 41 ' // 挂失卡-没收
RC_CONFIBESTOLENCARD = 43 ' // 被窃卡-没收
RC_TARIFFVERSIONERROR = 44 ' // 价目表版本错误
RC_NOTSUFFICIENT = 51 ' // 无足够的存款
RC_OVERDUECARD = 54 ' // 过期的卡
RC_PINWRONG = 55 ' // 不正确的PIN
RC_UNALLOWEDTRANSFORCARDHOLDER = 57 ' // 不允许持卡人进行的交易
RC_UNALLOWEDTRANSFORTERMINAL = 58 ' // 不允许终端进行的交易
RC_ORIGINALAMOUNTWRONG = 64 ' // 原始金额不正确
RC_GETCASHOVERTIMES = 65 ' // 超出取款次数限制
RC_PINWRONGOVERTIMES = 75 ' // 允许的输入PIN次数超限
RC_BALANCEWRONG = 77 ' // 结算不平
RC_VOUCHERIDWRONG = 78 ' // 凭证号错误
RC_BATCHIDWRONG = 80 ' // 批号错误
RC_ORIGINALTRANSBECHANGED = 86 ' // 原交易已改变
RC_NOANSWER = 87 ' // 收不到发卡方的应答
RC_INVALIDTERMINAL = 89 ' // 无效终端
RC_INDATESWITCHING = 90 ' // 日期切换正在处理
RC_TRANSUNALLOWEDTEMP = 91 ' // 发卡方或POS中心不能操作
RC_TRANSREPEATED = 94 ' // 交易重复
RC_BALANCEWRONGANDBATCHSEND = 95 ' // 结算不平,要求批上送
RC_SYSTEMDISABLED = 96 ' // 系统异常、失效
End Enum
'---------------------------------------------------------------------------
' 结构
'---------------------------------------------------------------------------
Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
'日期时间结构
Type MYDATETIMESTRUCT
Year As Byte ' // 年
Month As Byte ' // 月
Day As Byte ' // 日
Hour As Byte ' // 时
Minute As Byte ' // 分
Second As Byte ' // 秒
DayOfWeek As Byte ' // 周
End Type
'按结构方式调用报文结构
Type HD8583STRUCT
Message_Type As Byte ' // 信息码(报文类型)
Response_Code As Byte ' // 响应码
TerminalType As Byte ' // 终端类型
WorkMode As Byte ' // 终端工作模式
IndexOfEW As Byte ' // 电子钱包索引号
DateTime As MYDATETIMESTRUCT ' // 日期和时间
CardNumber As Long ' // 卡号
Amount As Long ' // 交易金额
AdditionalAmount1 As Long ' // 附加金额1
AdditionalAmount2 As Long ' // 附加金额2
TraceOfPOS As Long ' // POS流水号
OrgTransTrace As Long ' // 原交易POS流水号
OperatorID As Long ' // 操作员号
TerminalSN As Long ' // 终端序列号
VerOfList As Long ' // 黑名单版本
TraceOfEW As Integer ' // 电子钱包流水号
TerminalID As Integer ' // 终端号
MerchantID As Integer ' // 商户号
Address As Integer ' // 终端地址
LenOfAdditionalData1 As Integer ' // 附加数据1长度
AdditionalData1(0 To 2499) As Byte ' // 附加数据1
LenOfAdditionalData2 As Integer ' // 附加数据2长度
AdditionalData2(0 To 2499) As Byte ' // 附加数据2
LenOfAdditionalData3 As Integer ' // 附加数据3长度
AdditionalData3 As String * 2500 ' // 附加数据3
LenOfAdditionalData4 As Integer ' // 附加数据4长度
AdditionalData4 As String * 2500 ' // 附加数据4
PIN(0 To 7) As Byte ' // 个人识别码
WorkKey(0 To 7) As Byte ' // 工作密钥
End Type
'Buffer结构
Type BUFFERSTRUCT
Buffer(0 To 4095) As Byte ' // 4k Bytes
End Type
'---------------------------------------------------------------------------
' 库函数调用声明
'---------------------------------------------------------------------------
' 库函数调用声明-KERNEL32
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' 库函数调用声明-HD8583
Public Declare Function CreateObject Lib "HD8583.dll" (ByVal hwnd As Long, ByVal COMMTYPE As COMMTYPE, ByVal BasalBitmap As Long, ByVal Lang As CHINESETYPE) As Boolean
Public Declare Sub DestroyObject Lib "HD8583.dll" ()
Public Declare Function SendHD8583 Lib "HD8583.dll" (ByRef HD8583 As HD8583STRUCT, ByRef Buffer As Any, ByRef BufferLength As Long, ByVal OnlyBackData As Long) As Boolean
Public Declare Function GetHD8583 Lib "HD8583.dll" (ByRef Buffer As Any, ByVal BufferLength As Long, ByRef HD8583 As HD8583STRUCT) As Boolean
Public Declare Function UnPackHD8583A Lib "HD8583.dll" (ByRef Buffer As Any, ByVal BufferLength As Long, ByRef DataLength As Long) As Long
Public Declare Function IsMACValid Lib "HD8583.dll" (ByRef WorkKey As Any) As Boolean
Public Declare Function IsPINValid Lib "HD8583.dll" (ByRef WorkKey As Any, ByVal CardID As Long, ByVal Password As String, ByRef PIN As Any) As Boolean
' 库函数调用声明-Stdfun_HD
Public Declare Function EnumCommPorts Lib "Stdfun_HD.dll" () As String
Public Declare Sub MemSet_HD Lib "Stdfun_HD.dll" (ByRef Dest As Any, ByVal Data As Byte, ByVal Length As Long)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -