请开发过中控考勤机的大神帮忙看下

我是_怪胎 2015-11-30 09:30:21
自已想开发一个工具,自动下载中控考勤机考勤数据,
定义如下:
Function boolean Connect_Net(string ip,ref long interface) Library "zkemkeeper.dll"
但调用时总是报下面的错误:
bad runtime function refenrence这个错误,
中控的zkemkeeper.dll文件已经注册过了,实再无法搞定,请有经验的大神帮我诊断下
...全文
3152 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hovoy 2016-05-17
  • 打赏
  • 举报
回复
用C#调用一下试试。我遇到过pb调不了但c#能调。
DD 2016-01-22
  • 打赏
  • 举报
回复
插入一个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
做梦的猫 2016-01-21
  • 打赏
  • 举报
回复
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
A啦Dbit 2016-01-19
  • 打赏
  • 举报
回复
以前用过中控的 是OCX的那种 insert olecontrol 楼主没用错吧
WorldMobile 2016-01-19
  • 打赏
  • 举报
回复
引用 楼主 wxqbhscl 的回复:
自已想开发一个工具,自动下载中控考勤机考勤数据, 定义如下: Function boolean Connect_Net(string ip,ref long interface) Library "zkemkeeper.dll" 但调用时总是报下面的错误: bad runtime function refenrence这个错误, 中控的zkemkeeper.dll文件已经注册过了,实再无法搞定,请有经验的大神帮我诊断下
Function boolean Connect_Net(string ip,ref long interface) Library "zkemkeeper.dll" alias for "Connect_Net;Ansi" 这样声明试试
我是_怪胎 2016-01-18
  • 打赏
  • 举报
回复
DELPHI我不会用,非要重新封装么
qq_1919561306 2015-12-02
  • 打赏
  • 举报
回复
用delphi重新封闭dll,再给pb调用。
我是_怪胎 2015-11-30
  • 打赏
  • 举报
回复
自己顶下,希望有大神可以帮到我

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧