浩順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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM