问题:现在我提供一个ICdm.dll函数的内容,请做过考勤系统的朋友帮忙看看,我想自已调用这些函数去设置IC卡的卡号和工号是同一个号的.比如说我有一个数据表P_PersonDetail,里面记录了内容为:
P_PersonDetail表的字段及内容如下:P_PersonID为工号,P_PersonName姓名,P_careNo为卡号
P_PersonID,P_PersonName,P_careNo
001502 小明
001503 小李
001504 小王
我要设置小明的卡号,怎样去设置呢,以下是调用icdm.dll文件函数是用VB写的,这是一个考勤供应商提供与考勤机取数据的函数,我这里有一个例子,是调用这个icdm.dll里的函数去读取每一个考勤机的记录,生成记事本的形式保存下来.
P_PersonDetail表的字段及内容如下:P_PersonID为工号,P_PersonName姓名,P_careNo为卡号
P_PersonID,P_PersonName,P_careNo
001502 小明
001503 小李
001504 小王
我要设置小明的卡号,怎样去设置呢,以下是调用icdm.dll文件函数是用VB写的,这是一个考勤供应商提供与考勤机取数据的函数,我这里有一个例子,是调用这个icdm.dll里的函数去读取每一个考勤机的记录,生成记事本的形式保存下来.
'//命令字
Public Const gconSetTime = 1 '// 广播校时
Public Const gconSetDMAddress = 2 '// 取考勤门禁记录序号
Public Const gconSearchDMOnline = 3 '// 单机寻机
Public Const gconSearchOnline = 4 '//联机寻机
Public Const gconRecvRecord = 16 '// 取考勤门禁记录
Public Const gconRecvRecIndex = 17 '// 取考勤门禁记录序号
Public Const gconSetDMProperty = 18 '// 设置机具属性
Public Const gconRecvDMStatus = 22 '//取机具状态
Public Const gconDelRecvAttRecord = 28 ''//删除方式取考勤门禁记录
Public Const gconRecvDelRecordRlt = 29 ''//删除方式取考勤门禁记录确认删除
'/////////////////////////////////////////////////////////////////////////
'//返回信息代码
Public Const gconSendSuccess = 0 '//发送成功(成功,广播命令)
Public Const gconCommError = 1 '//通讯错误
Public Const gconTagAdrError = 2 '//目标地址错误
Public Const gconSourAdrError = 3 '//源地址错误
Public Const gconCheckError = 4 '//校验错误
Public Const gconOverTime = 5 '//超时错误
Public Const gconNotRecvFrm = 6 '//未收到返回帧
Public Const gconRecvFrm = 7 '//收到返回帧
Public Const gconSuccess = 8 '//命令执行成功(成功)
Public Const gconFail = 9 '//命令执行失败
Public Const gconNotSend = 10 '//未发送错误
Public Const gconCmdError = 11 '//返回命令字错误
Public Const gconDataError = 12 '//返回数据错误
Public Const gconRecvSuccess = 13 '//成功取信息(成功,取信息)
Public Const gconFormatError = 14 '//格式错误
Public Const gconInitCardKey = 101 '//销卡'//取记录序号发送结构
Public Type typeSendRecIndex ''SENDRECINDEX
bLinerSearch As Long
nBeginYear As Long
nBeginMonth As Long
nBeginDay As Long
nEndYear As Long
nEndMonth As Long
nEndDay As Long
End Type
'//销卡
Public Type typeInitCardKey ''InitCARDKEY
nSectorNum As Long
strOldKeyA As String * 16
strOldKeyB As String * 16
End Type'//取记录序号接收结构
Public Type typeRecvrecIndex ''RECVRECINDEX
nBeginIndex As Long
nEndIndex As Long
End Type
'//取考勤门禁记录结构
Public Type typeRecvattGuardRec ''RECVATTGUARDREC
nRecIndex As Long
nRecCount As Long
End Type'//考勤门禁系统刷卡记录结构
Public Type typeAttendRecord ''ATTENDRECORD
nPersonID As String * 7
nYear As Long
nMonth As Long
nDay As Long
nHour As Long
nMinute As Long
nSecond As Long
bOnDuty As Boolean
bBC As Long
nAddress As Long
End Type'//取机具状态结构
Public Type typeRecvStatus ''RECVSTATUS
nYear As Long
nMonth As Long
nDay As Long
nWeek As Long
nHour As Long
nMinute As Long
nSecond As Long
nRecordCount As Long
End Type
'//取刷卡记录结构
Public Type typeRecvattendRecord ''RECVATTENDRECORD
Record(1 To 256) As typeAttendRecord
End Type'//联机寻址
Public Type typeSearchDMonLine
nCount As Long
nDMAadr(1 To 256) As Long
End Type'//联机设置地址
Public Type typeSetDMAddress
unSerialNum As Long
nAddress As Long
End Type'//本地设置地址
Public Type typeSetDMProperty
nIndex As Long
nProperty As Long
End Type
'//考勤门禁卡存储信息结构
Public Type typeCardInfoAttend ''CARDINFO_ATTEND
nFileSort As Long
nCardID As Long
nPersonID As String * 7
nGradeID As Long
nAttGroup As Long
strUserKey As String * 4
strName As String * 8
nLimitYear As Long
nLimitMonth As Long
nLimitDay As Long
End Type'//下载LCD显示题头结构
Public Type typeLCDTitle ''LCDTITLE
strTitle1 As String * 16
strTitle2 As String * 16
strTitle3 As String * 16
End Type'//收费机消费卡发卡数据结构
Public Type typeCardInfo_Pos
nFileSort As Long
nCardID As Long
nInfoID As Long
nstrName As String * 8
nStrUserKey As String * 4
nLimitYear As Long
nLimitMonth As Long
nLimitDay As Long
nMoneyCent As Long
End Type
'//调用动态库函数声明
Declare Function OpenDevice Lib "ICDM.dll" _
(ByVal nMyAddress As Long, _
ByVal hwnd As Long) As Long
Declare Sub RecvEdition Lib "ICDM.dll" _
(ByVal lpRecvData As String)
Declare Function ConnectPort Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal lpCommDef As String) As Boolean
Declare Sub SetAddLog Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal bAddLog As Long)
Declare Sub SetInnerCode Lib "ICDM.dll" _
(ByVal pDevice As Long, ByVal bBig5 As Long)
Declare Function StartICDMCommand Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal nAddress As Long, _
ByVal ICDMCmd As Long, _
ByRef pParameters As Any, _
ByVal nSizeOfParameter As Long) As Long
Declare Function GetSizeOfData Lib "ICDM.dll" _
(ByVal pCommand As Long) As Long
Declare Function GetData Lib "ICDM.dll" _
(ByVal pCommand As Long, _
ByRef pDataBuffer As Any, _
ByVal nSize As Long) As Boolean
Declare Function GetCmdResult Lib "ICDM.dll" _
(ByVal pCommand As Long) As Long
Declare Sub EndICDMCommand Lib "ICDM.dll" _
(ByVal pCommand As Long)
Declare Function DisConnectPort Lib "ICDM.dll" _
(ByVal pDevice As Long) As Boolean
Declare Sub CloseDevice Lib "ICDM.dll" _
(ByVal pDevice As Long)
Declare Sub SetCommKey Lib "ICDM.dll" _
(ByVal pDevice As Long, _
IpCommKey As String)
Declare Sub SetWaitTime Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal nTime As Long)
''''********************** 数据库方面 *********************************
Public gConn As New ADODB.Connection ''数据库连接对象
Public gstrServer As String ''服务器名称
Public gstrDataBase As String ''数据库名称
Public gstrDBUserID As String ''连接数据库的用户名
Public gstrDBPassWord As String ''连接数据库的密码''''********************** API *****************************************Public 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
Public 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''''**********************程序方面 ***********************************
Public Const gconSuccessResult = "!!OK" ''返回正确字符串
Public Const gconErrorResult = "!!CANCEL" ''返回错误字符串
Public gstrDataFilePath As String ''数据文件存放路径
Public gstrReadFileResult() As String ''读取文件返回值的传值数组
Public gstrDataFile As String ''数据文件名称
上面有些函数我不知道该怎么去用,请懂得这方面的朋友帮忙分析一下,我只要设置卡号就行了,怎样调用上面的函数设定卡号就行了.请帮帮忙.谢了
Public Type typeSearchDMonLine
nCount As Long
nDMAadr(1 To 256) As Long
End Type=======Delphi============
type typeSearchDMonLine=packed record
nCount:integer;
nDMAdr: array [1..256] of integer;
end;
========VB================
Declare Function StartICDMCommand Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal nAddress As Long, _
ByVal ICDMCmd As Long, _
ByRef pParameters As Any, _
ByVal nSizeOfParameter As Long) As Long
=========Delphi===========
Function StartICDMCommand(pDevice:integer;nAddress:integer;ICDMCmd:integer;pParameters:pointer;nSizeOfParameter:integer):integer;stdcall;external 'ICDM.dll';
如果你要更加的OO话,你就需要再对这些DLL内的函数进行新的面向对象的封装,然后放在一个单独的类里面。
就上面函数!
'//考勤门禁卡存储信息结构
Public Type typeCardInfoAttend ''CARDINFO_ATTEND
nFileSort As Long
nCardID As Long
nPersonID As String * 7
nGradeID As Long
nAttGroup As Long
strUserKey As String * 4
strName As String * 8
nLimitYear As Long
nLimitMonth As Long
nLimitDay As Long
End Type发送函数为
Declare Function StartICDMCommand Lib "ICDM.dll" _
(ByVal pDevice As Long, _
ByVal nAddress As Long, _
ByVal ICDMCmd As Long, _
ByRef pParameters As Any, _
ByVal nSizeOfParameter As Long) As Long
发卡问题搞定!!!!
还得多谢hotyten说的DELPHI方法使用!谢了