zoukankan      html  css  js  c++  java
  • 浩顺AC671指纹考勤机二次开发(demo)

    关于考勤机

    AC671,是新换的机器,以前的那部机器,通过网络死活连接不上,换了AC671网络连接是好用了.但是,我要吐槽
    浩顺的考勤机应该是卖了很多了吧,可是自带的软件太不给力,最后分析出来的数据一大堆,并不好用.so,试试看二次开发

    联系卖家要来了二次开发包,是一个EXE文件,安装,下一步直到完成.安装后的内容包含例程(VB程序,我没写错,是VB工程,不是VB.NET,为了看代码我又装了一个VB6.0),
    DLL和OCX(功能基本一样,都是com组件),PDF(接口说明文档),可执行文件(测试用).

    二次开发

    看了两遍文档,基本上了解接口的使用,新建工程作下测试.工程就是普通的winform工程,工程建好后添加控件引用,
    开始添加dll的引用,死活添加不了,转换成托管代码时也是报错,把能试的方法都用过了,dll的引用也没添加上.
    dll的引用不行,还有一个OCX,添加对OCX的引用,具体方法是,在toolbox上添加自定义控件的方式来使用ocx控件
    其中,FOWAttend.ocx是用来和考勤机通信的;FKRealSvr.ocx是用来建立考勤机实时监控的.两个OCX在安装后自动注册到系统中(我的是win7 32位中文)

    下面两个控件使用后,得到的是你在登记指纹时的登记号,如我的是0000007,没有录名字,但是我们开发的软件不知道这个00000007是谁
    所以还要用DB(文件)记录下登记号000007所对应的人的名字,以方便后续的分析

    FOWAttend.ocx的使用

    新建普通winform工程后,拖一个FOWAttend.ocx的控件到form1上,下面上代码

    private void button1_Click(object sender, EventArgs e)
    {
        // 通过网络连接到考勤机
        int machineNo = 1;
        string IP = "192.168.1.240";  // 考勤机IP
        int port = 5005;
        int timeOut = 5000;
        int protocolType = 0;
        int netPassword = 0;
        int license = 1261;
    
        int ret = axFOWAttend1.ConnectNet(machineNo, IP, port, timeOut, protocolType, netPassword, license);
        Debug.WriteLine("ret:" + ret); // 返回1,连接正常,其它有错误
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        // 断开连接
        axFOWAttend1.DisConnect();
    }
    
    private void button3_Click(object sender, EventArgs e)
    {
        // 文档上有说明,要读取数据必须用两个方法,LoadGeneralLogData和GetGeneralLogData
        int ret = axFOWAttend1.LoadGeneralLogData(0);
        int ret2 = 0;
    
        if (ret == 1)
        {
    	int enrollNum = 7;
    	int verifyMode = 1;
    	int inOutMode = 1;
    	while (ret2 != -7) // -7是最后一条时的返回值
    	{
    	    DateTime dt = DateTime.Now;
                // GetGeneralLogData方法参数是ref的,是把考勤信息写到ref变量中,供后面使用,参数意义可参考文档.需要自己循环读取全部考勤记录
    	    ret2 = axFOWAttend1.GetGeneralLogData(ref enrollNum, ref verifyMode, ref inOutMode, ref dt);
    	    Debug.WriteLine(string.Format("ret:{0}, user:{1}, datetime:{2}", ret2, enrollNum, dt.ToString("yyyy-MM-dd HH:mm:ss")));
    	}
        }
    }
    

    FKRealSvr.ocx的使用

    新建普通winform工程,添加FKRealSvr.ocx到toobox上,并拖一个到form1上,接着上代码

    public Form1()
    {
        InitializeComponent();
    
        axFKRealSvr1.OnReceiveGLogData += new AxFKREALSVRLib._DFKRealSvrEvents_OnReceiveGLogDataEventHandler(axFKRealSvr1_OnReceiveGLogData);
    
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        int ret = axFKRealSvr1.OpenNetwork(7005);
        Debug.WriteLine("open ret:" + ret);
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        int ret = axFKRealSvr1.CloseNetwork(7005);
        Debug.WriteLine("close ret:" + ret);
    }
    
    public void axFKRealSvr1_OnReceiveGLogData(object sender , AxFKREALSVRLib._DFKRealSvrEvents_OnReceiveGLogDataEvent e)
    {
        // 这里的e还其它值,按需要使用
        Debug.WriteLine(string.Format("num: {0}, date: {1}", e.anSEnrollNumber, e.anLogDate.ToString("yyyy-mm-dd HH:mm:ss")));
    }
    

    最后使用FKRealSvr.ocx还有一个要注意的地方,否则就不会得到任何数据
    要注意的地方是,要在考勤机上作以下三个设置,服务器IP, 服务器端口, 是否同步传输选择是
    这样就可以实时的收到打指纹的数据

    最后

    说明文档的说明写的有点绕口,而且我还没找到通过软件进行打卡的功能,如果找到这个,写个程序,每天在一定时间内自动打卡,呵呵!!!

    最后的最后

    二次开发包下载
    我的demo

  • 相关阅读:
    抽象类、接口
    静态联编、动态联编
    多态
    QML、Qt Quick
    重载、多态、继承、封装
    异步消息postEvent更新界面
    联合体union
    使用 Git@OSC 管理代码
    excel数据生成sql insert语句
    excel数据生成sql insert语句
  • 原文地址:https://www.cnblogs.com/lost0/p/5216010.html
Copyright © 2011-2022 走看看