自已想開發一個工具,自動下載中控考勤機考勤資料,
定義如下:
Function boolean Connect_Net(string ip,ref long interface) Library "zkemkeeper.dll"
但呼叫時總是報下面的錯誤:
bad runtime function refenrence這個錯誤,
中控的zkemkeeper.dll檔案已經注冊過了,實再無法搞定,請有經驗的大神幫我診斷下
uj5u.com熱心網友回復:
自己頂下,希望有大神可以幫到我uj5u.com熱心網友回復:
用delphi重新封閉dll,再給pb呼叫。uj5u.com熱心網友回復:
DELPHI我不會用,非要重新封裝么uj5u.com熱心網友回復:
以前用過中控的 是OCX的那種 insert olecontrol 樓主沒用錯吧uj5u.com熱心網友回復:
Function boolean Connect_Net(string ip,ref long interface) Library "zkemkeeper.dll" alias for "Connect_Net;Ansi"
這樣宣告試試
uj5u.com熱心網友回復:
4 樓說的沒錯,須要直接插入一個 OLE 控制元件才能用的,具體呼叫看看中控自帶的 pb 示例代碼,不同型號有區別。。// 連接機子
boolean bConn
if zkem.object.SetCommPassword(is_pass) then
if zkem.object.connect_net(is_ip, is_port) then
// bConn=true
MachineNum =1
else
MessageBox("錯誤", "連接失敗!")
end if
end if
// 下載資料
machineNum=1
if w_kqj.ZKEM.object.ReadGeneralLogData(machineNum) then
do while w_kqj.ZKEM.object.SSR_GetGeneralLogData(machineNum,ref dwEnrollNumber,ref dwVerifyMode,ref dwInOutMode,ref dwYear,ref dwMonth,ref dwDay,ref dwHour,ref dwMinute, ref dwSecond, ref dwWorkcode)
dw_1.insertrow(0) // ...
loop
end if
uj5u.com熱心網友回復:
插入一個OLE控制元件來做,代碼
string ls_machineno,ls_empno,ls_qdfs,ls_kqzt
long ll_empno,ll_qdfs,ll_kqzt,ll_currow,ll_year,ll_month,ll_day,ll_hour,ll_minute,ll_second
date ld_qdrq
time lt_qdsj
string ls_ipaddress,ls_ljfs,ls_pinpai,ls_qdsj
long ll_ipport,ll_comport,ll_boudrate
int i,j,k
boolean lb_connect
datetime ldt_downtime
ldt_downtime = datetime(today(),now())
cleargdata = true
for i = 1 to dw_kqjinfo_list.rowcount()
ll_machineno = dw_kqjinfo_list.getitemnumber(i,'machinenumber')
ls_ljfs = dw_kqjinfo_list.getitemstring(i,'ljfs')
ls_ipaddress = dw_kqjinfo_list.getitemstring(i,'ipadress')
// messagebox(ls_ljfs,ls_ipaddress)
ll_ipport = 4370
ll_comport = dw_kqjinfo_list.getitemnumber(i,'comport')
ll_boudrate = dw_kqjinfo_list.getitemnumber(i,'boudrate')
ls_pinpai = dw_kqjinfo_list.getitemstring(i,'pinpai')
choose case ls_ljfs
case 'TCP/IP'
st_1.text = '正在連接考勤機,請稍后...'
czkem.object.setcommpassword(123456)
lb_connect = czkem.object.connect_net(ls_ipaddress,ll_ipport)
if lb_connect then
st_1.text = '連接成功,開始下載資料'
if czkem.object.readallglogdata(ll_machineno) then
czkem.object.EnableDevice(ll_machineno,false)
do while czkem.object.GetGeneralLogData(ll_machineno,ref ll_machineno,ref ll_empno,ref ll_machineno,ref ll_qdfs,ref ll_kqzt,ref ll_year,ref ll_month,ref ll_day,ref ll_hour,ref ll_minute)
ls_machineno = string(ll_machineno,'0')
ls_empno = string(ll_empno,'00000')
ls_qdfs = string(ll_qdfs)
ld_qdrq = date(string(ll_year,'0000') + '-' +string(ll_month,'00') + '-' + string(ll_day,'00'))
lt_qdsj = time(string(ll_hour) + ':' + string(ll_minute))
ll_currow = dw_kqjrec.insertrow(0)
dw_kqjrec.setitem(ll_currow,'sbbh',ls_machineno)
dw_kqjrec.setitem(ll_currow,'empno',ls_empno)
dw_kqjrec.setitem(ll_currow,'qdfs',ls_qdfs)
dw_kqjrec.setitem(ll_currow,'qdrq',ld_qdrq)
dw_kqjrec.setitem(ll_currow,'qdsj',datetime(ld_qdrq,lt_qdsj))
loop
dw_1.retrieve(string(i),ldt_downtime)
for k = 1 to dw_1.rowcount()
ll_currow = dw_kqjrec.insertrow(0)
dw_kqjrec.setitem(ll_currow,'sbbh',dw_1.getitemstring(k,'sbbh'))
dw_kqjrec.setitem(ll_currow,'empno',dw_1.getitemstring(k,'empno'))
dw_kqjrec.setitem(ll_currow,'qdfs',dw_1.getitemstring(k,'qdfs'))
dw_kqjrec.setitem(ll_currow,'qdrq',dw_1.getitemdatetime(k,'qdrq'))
dw_kqjrec.setitem(ll_currow,'qdsj',dw_1.getitemdatetime(k,'qdsj'))
dw_1.setitem(k,'stat','1')
next
czkem.object.EnableDevice(ll_machineno,true)
st_1.text = string(ll_machineno) + '號考勤機資料下載完畢!'
triggerevent('ue_save')
else
st_1.text = string(ll_machineno) + '號考勤機無考勤資料!'
end if
else
st_1.text = string(ll_machineno) + '號考勤機連接失敗,請檢查考勤機配置!'
end if
case 'RS232/RS485'
// if j = i then
// end if
end choose
next
uj5u.com熱心網友回復:
用C#呼叫一下試試。我遇到過pb調不了但c#能調。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/28174.html
標籤:API 調用
上一篇:PB開發的C/S 程式 可以在 SURFACE PRO上發布嗎
下一篇:急急。。請幫忙解決問題,重分答謝
