123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- #include "stdafx.h"
- #include "CDFKAttendOcx.h"
- #include "FKAttendCtrlMgr.h"
- CFKAttendCtrlMgr::CFKAttendCtrlMgr()
- {
- m_nHandleIndex = 0;
- }
- CFKAttendCtrlMgr::CFKAttendCtrlMgr(CWnd* pOcx)
- : CMachineMgrBase(pOcx)
- {
- m_nHandleIndex = 0;
- }
- CFKAttendCtrlMgr::~CFKAttendCtrlMgr()
- {
- CloseDevice();
- }
- int CFKAttendCtrlMgr::OpenDevice()
- {
- CString strShow;
- if(!m_pOcxCtrl)
- {
- strShow = "";
- strShow.Format(_T("没有初始化设备"));
- SendMessage(g_hwnd, MSG_SHOWPROMPTING,(WPARAM)&strShow, 0);
- return 0;
- }
- strShow = "";
- CDFKAttendOcx* p = (CDFKAttendOcx*)m_pOcxCtrl;
- switch (m_lpCfg->nType)
- {
- case 1: //optNetworkDevice tcp通信
- {
- char szIp[260] = {0};
- WChar2Char(szIp, m_lpCfg->szIpAddress);
- m_nHandleIndex = p->ConnectNet(m_lpCfg->lMachineNumber, szIp, m_lpCfg->lPort, m_lpCfg->lTimeOut, m_lpCfg->lProtocolType, m_lpCfg->lNetPassword, m_lpCfg->lLicense);
- }
- break;
- case 2: //optSerialDevice 串口通信
- {
- char szTelNumBer[260] = {0};
- WChar2Char(szTelNumBer, m_lpCfg->szTelNumber);
- m_nHandleIndex = p->ConnectComm(m_lpCfg->lMachineNumber, m_lpCfg->lComPort, m_lpCfg->lBaudRate, szTelNumBer, m_lpCfg->lWaitDialTime, m_lpCfg->lLicense);
- }
- break;
- case 3: //OptIsUSB USB通信
- m_nHandleIndex = p->ConnectUSB(m_lpCfg->lMachineNumber, m_lpCfg->lLicense);
- break;
- case 4: //optServer
- break;
- }
- if (m_nHandleIndex > 0)
- {
- strShow.Format(_T("连接设置成功"));
- m_bOpenDevice = 1;
- }
- else
- {
- strShow.Format(_T("连接设置失败"));
- SolveError(m_nHandleIndex);
- m_bOpenDevice = 0;
- }
- SendMessage(g_hwnd, MSG_SHOWPROMPTING,(WPARAM)&strShow, 0);
- return m_bOpenDevice;
- }
- int CFKAttendCtrlMgr::CloseDevice()
- {
- if(m_pOcxCtrl == NULL)
- return 0;
- ((CDFKAttendOcx*)m_pOcxCtrl)->DisConnect(m_nHandleIndex);
- m_pOcxCtrl == NULL;
- CString strShow = _T("");
- strShow.Format(_T("已断开连接"));
- SendMessage(g_hwnd, MSG_SHOWPROMPTING,(WPARAM)&strShow, 0);
- m_bOpenDevice = 0;
- return 1;
- }
- //读取记录
- int CFKAttendCtrlMgr::ReadGeneralLogData(std::vector<STGeneralLogData>* pVData)
- {
- if(!m_pOcxCtrl || pVData == NULL)
- return -1;
- int nCount = 0;
- int nErroCode = ((CDFKAttendOcx*)m_pOcxCtrl)->LoadGeneralLogData(m_nHandleIndex, 1); // ==0 读取全部记录,==1 读取最新的记录;
- if (nErroCode != 1)
- {
- SolveError(nErroCode);
- LOG4C((LOG_NOTICE, "设置指纹机读取模式失败"));
- return FALSE;
- }
- // 循环读取全部记录;
- int nRet = 0;
- long lEnrollNumber = 0;
- long lEMachineNumber = 0;
- long lVerifyMode = 0;
- long lInOutMode = 0;
- DATE dDateTime;
- int nYear = 0;
- int nMonth = 0;
- int nDay = 0;
- int nHour = 0;
- int nMinute = 0;
- do
- {
- nRet = ((CDFKAttendOcx*)m_pOcxCtrl)->GetGeneralLogData(m_nHandleIndex, &lEnrollNumber, &lVerifyMode, &lInOutMode, &dDateTime);
- if (nRet == 1)
- {
- nCount++;
- COleDateTime cOleTime(dDateTime);
- SYSTEMTIME systime;
- VariantTimeToSystemTime(cOleTime, &systime);
- CTime ct(systime);
- nYear = ct.GetYear();
- nMonth = ct.GetMonth();
- nDay = ct.GetDay();
- nHour = ct.GetHour();
- nMinute = ct.GetMinute();
- STGeneralLogData data;
- data.Clone(m_lpCfg->lMachineNumber, lEnrollNumber, lEMachineNumber, lVerifyMode, lInOutMode, nYear, nMonth, nDay, nHour, nMinute);
- pVData->push_back(data);
- }
- } while (nRet == 1);
- return nCount;
- }
- int CFKAttendCtrlMgr::ReadAllGlLogData(std::vector<STGeneralLogData>* pVData)
- {
- if(!m_pOcxCtrl || pVData == NULL)
- return -1;
- int nCount = 0;
- int nErroCode = ((CDFKAttendOcx*)m_pOcxCtrl)->LoadGeneralLogData(m_nHandleIndex, 0); // ==0 读取全部记录,==1 读取最新的记录;
- if (nErroCode != 1)
- {
- SolveError(nErroCode);
- LOG4C((LOG_NOTICE, "设置指纹机读取模式失败"));
- return FALSE;
- }
- // 循环读取全部记录;
- long dwEnrollNumber = 0;
- long dwEMachineNumber = 0;
- long dwVerifyMode = 0;
- long dwInOutMode = 0;
- DATE dDateTime;
- int nYear = 0;
- int nMonth = 0;
- int nDay = 0;
- int nHour = 0;
- int nMinute = 0;
- int nRet = 0;
- do
- {
- nRet = ((CDFKAttendOcx*)m_pOcxCtrl)->GetGeneralLogData(m_nHandleIndex, &dwEnrollNumber, &dwVerifyMode, &dwInOutMode, &dDateTime);
- if (nRet == 1)
- {
- nCount++;
- COleDateTime cOleTime(dDateTime);
- SYSTEMTIME systime;
- VariantTimeToSystemTime(cOleTime, &systime);
- CTime ct(systime);
- nYear = ct.GetYear();
- nMonth = ct.GetMonth();
- nDay = ct.GetDay();
- nHour = ct.GetHour();
- nMinute = ct.GetMinute();
- STGeneralLogData data;
- data.Clone(m_lpCfg->lMachineNumber, dwEnrollNumber, dwEMachineNumber, dwVerifyMode, dwInOutMode, nYear, nMonth, nDay, nHour, nMinute);
- pVData->push_back(data);
- }
- } while (nRet == 1);
- return nCount;
- }
- int CFKAttendCtrlMgr::USBReadSuperLogData(LPWSTR LPSZFileName)
- {
- if(m_pOcxCtrl)
- {
- char szFileName[256] = {0};
- WChar2Char(szFileName, LPSZFileName);
- return ((CDFKAttendOcx*)m_pOcxCtrl)->USBLoadSuperLogDataFromFile(m_nHandleIndex, szFileName);
- }
- return 0;
- }
- //设置指纹机可用/不可用
- BOOL CFKAttendCtrlMgr::SetMachineEnable(BOOL bEnable/*=TRUE*/)
- {
- if (m_pOcxCtrl)
- {
- BOOL ret = ((CDFKAttendOcx*)m_pOcxCtrl)->EnableDevice(m_nHandleIndex, bEnable);
- if(!ret)
- {
- long nErroCode = 0;
- ((CDFKAttendOcx*)m_pOcxCtrl)->GetLastError(&nErroCode);
- SolveError(nErroCode);
- //LOG4C((LOG_NOTICE, "设置指纹机可用/不可用状态失败"));
- return FALSE;
- }
- }
- else
- {
- LOG4C((LOG_NOTICE, "CFKAttendCtrlMgr SetMachineEnable方法无效"));
- return FALSE;
- }
- return TRUE;
- }
- BOOL CFKAttendCtrlMgr::DelLogData()
- {
- if(m_pOcxCtrl == NULL)
- return FALSE;
- return ((CDFKAttendOcx*)m_pOcxCtrl)->EmptyGeneralLogData(m_nHandleIndex);
- }
- //清除所有管理员
- int CFKAttendCtrlMgr::BenumbAllManager()
- {
- if(m_bOpenDevice == 0)
- {
- AfxMessageBox(_T("没有连接指纹机"));
- return 0;
- }
- SetMachineEnable(FALSE);
- LOG4C((LOG_NOTICE, "CFKAttendCtrlMgr BenumbAllManager Index=%d", m_nHandleIndex));
- long ret = ((CDFKAttendOcx*)m_pOcxCtrl)->BenumbAllManager(m_nHandleIndex);
- LOG4C((LOG_NOTICE, "CFKAttendCtrlMgr BenumbAllManager ret=%d", ret));
- return ret;
- }
- //错误输出
- BOOL CFKAttendCtrlMgr::SolveError(CONST LONG& nErroCode)
- {
- /*
- 1: RUN_SUCCESS 表示指令成功的通知
- 0: RUNERR_NOSUPPORT表示机器不支持对应指令的错误代码
- -1: RUNERR_UNKNOWNERROR表示不明错误代码
- -2: RUNERR_NO_OPEN_COMM表示机器没有连接的错误代码
- -3: RUNERR_WRITE_FAIL表示机器上不能传送数据的错误代码
- -4: RUNERR_READ_FAIL表示从机器上不能读数据的错误代码
- -5: RUNERR_INVALID_PARAM表示读的参数不正确的错误代码
- -6: RUNERR_NON_CARRYOUT表示指令失败的错误代码
- -7: RUNERR_DATAARRAY_END表示读完数据的通知
- -8: RUNERR_DATAARRAY_NONE表示数据不存在的错误代码
- -9: RUNERR_MEMORY表示 PC 的内存不足的错误代码
- -10: RUNERR_MIS_PASSWORD表示连接机器许可号码是不正确的错误代码
- -11: RUNERR_MEMORYOVER表示机器上不足存储器的错误代码
- -12: RUNERR_DATADOUBLE表示要登记的号码已经在机器数据里存在的错误代码
- -14: RUNERR_MANAGEROVER表示机器里没有空间,未能登记管理者.数据的错误代码
- -15: RUNERR_FPDATAVERSION表示要用的指纹数据的版本不正确的错误代码
- */
- static CString strErrorDescriptor;
- switch (nErroCode)
- {
- case RUNERR_NOSUPPORT: // 表示机器不支持对应指令的错误代码;
- strErrorDescriptor = _T("机器不支持对应指令,请重试");
- break;
- case RUNERR_UNKNOWERROR: // 表示不明错误代码;
- strErrorDescriptor = _T("不明错误代码");
- break;
- case RUNERR_NO_OPEN_COMM: // 表示机器没有连接的错误代码;
- strErrorDescriptor = _T("机器没有连接的错误代码");
- break;
- case RUNERR_WRITE_FAIL: // 表示机器上不能传送数据的错误代码;
- {
- //g_phWnd->OnBnClickedDisconnectdevice();
- PostMessage(g_hwnd, MSG_DISCONNECT, 0, 0);
- //PostMessage(g_hwnd, MSG_CONNECT, 0, 0);
- strErrorDescriptor = _T("机器上不能传送数据的错误代码,请断开连接重新连接指纹机");
- }
- break;
- case RUNERR_READ_FAIL: // 表示从机器上不能读数据;
- strErrorDescriptor = _T("从机器上不能读数据");
- break;
- case RUNERR_INVALID_PARAM: // 表示读的参数不正确;
- strErrorDescriptor = _T("读的参数不正确");
- break;
- case RUNERR_NON_CARRYOUT: // 表示指令失败;
- strErrorDescriptor = _T("指令失败");
- break;
- case RUNERR_DATAARRAY_END: // 表示读完数据的通知;
- strErrorDescriptor = _T("读完数据的通知");
- break;
- case RUNERR_DATAARRAY_NONE: // 表示数据不存在;
- strErrorDescriptor = _T("指纹机已无最新数据");
- break;
- case RUNERR_MEMORY: // 表示PC的内存不足;
- strErrorDescriptor = _T("PC的内存不足");
- break;
- case RUNERR_MIS_PASSWORD: // 表示连接机器许可号码是不正确;
- strErrorDescriptor = _T("连接机器许可号码是不正确");
- break;
- case RUNERR_MEMORYOVER: // 表示指纹机内存不足;
- strErrorDescriptor = _T("指纹机内存不足");
- break;
- case RUNERR_DATADOUBLE: // 表示要登记的号码已经在机器数据里存在;
- strErrorDescriptor = _T("要登记的号码已经在机器数据里存在");
- break;
- case RUNERR_MANAGEROVER: // 表示机器里没有内存空间,未能登记管理者数据;
- strErrorDescriptor = _T("机器里没有内存空间,未能登记管理者数据");
- break;
- case RUNERR_FPDATAVERSION: // 表示要用的指纹数据的版本不正确;
- strErrorDescriptor = _T("要用的指纹数据的版本不正确");
- break;
- default:
- break;
- }
- PostMessage(g_hwnd, MSG_SHOWPROMPTING, (WPARAM)&strErrorDescriptor, 1);
- return TRUE;
- }
|