關於考勤機
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, 服務器端口, 是否同步傳輸選擇是
這樣就可以實時的收到打指紋的數據
最后
說明文檔的說明寫的有點繞口,而且我還沒找到通過軟件進行打卡的功能,如果找到這個,寫個程序,每天在一定時間內自動打卡,呵呵!!!