根据网上内容搜索以及不断尝试,总结出以下java使用jacob调用中控考勤机sdk方法
1、jacob-1.18版本
2、jdk1.732位(经过测试jacob目前只支持32位jdk,64位下报错);
3、将jacob.jar 放入项目 WEB-INFO/lib下导入:
4、将jacob-1.18-x64.dll 放入32位 jdk/bin目录下,我的是:C:\Program Files (x86)\Java\jdk1.7.0_79\bin;
5、将中控考勤机sdk 的dll文件全部放入 c:\windows\syswow64 目录下(我的是64位系统,32位的话没测试,放入system32目录下);
6、运行cmd 注册zkemkeeper.dll --->regsvr32 c:\windows\syswow64\zkemkeeper.dll
7、成功后如下提示:
8、已经配置完毕,进行代码测试:
//zkemkeeper.ZKEM.1 为zkemkeeper.dll 注册成功后 在注册表可以查看:HKEY_CLASSES_ROOT最下面
import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * 中控考勤机sdk函数调用类 * @author wangchao * */ public class ZkemSDK { private static ActiveXComponent zkem = new ActiveXComponent("zkemkeeper.ZKEM.1"); /** * 链接考勤机 * @param address 考勤机地址 * @param port 端口号 * @return */ public boolean connect(String address,int port){ boolean result = zkem.invoke("Connect_NET",address,port).getBoolean(); return result; } /** * 断开考勤机链接 */ public void disConnect(){ zkem.invoke("Disconnect"); } }
/** * 考勤机链接测试 * @author wangchao * */ public class Main { public static void main(String[] args) { ZkemSDK sdk = new ZkemSDK(); boolean connFlag = sdk.connect("192.168.1.100", 4370); System.out.println("conn:"+connFlag); } }