Exemplo n.º 1
0
        static int DeleteFingerPrint(string strOldRecord, out string strError)
        {
            strError = "";
            XmlDocument old_dom = new XmlDocument();

            old_dom.LoadXml(strOldRecord);

            string strReaderBarcode = GetReaderBarcode(old_dom);

            if (string.IsNullOrEmpty(strReaderBarcode) == false)
            {
                FingerprintItem item = new FingerprintItem
                {
                    FingerprintString = "",
                    ReaderBarcode     = strReaderBarcode
                };
                // return:
                //      0   成功
                //      其他  失败。错误码
                int nRet = AddItems(
                    new List <FingerprintItem> {
                    item
                },
                    out strError);
                if (nRet != 0)
                {
                    return(-1);
                }
            }

            return(0);
        }
Exemplo n.º 2
0
        // 验证读者指纹. 1:1比对
        // parameters:
        //      item    读者信息。ReaderBarcode成员提供了读者证条码号,FingerprintString提供了指纹特征码
        //              如果 FingerprintString 不为空,则用它和当前采集的指纹进行比对;
        //              否则用 ReaderBarcode,对高速缓存中的指纹进行比对
        // return:
        //      -1  出错
        //      0   不匹配
        //      1   匹配
        public int VerifyFingerprint(FingerprintItem item,
                                     out string strError)
        {
            strError = "";

            return(0);

#if NO
            // 等到扫描一次指纹
            // 这次的扫描不要进行自动比对,也不要键盘仿真

            string strTemplate = item.FingerprintString;

            bool bRet = this.m_host.VerFingerFromStr(ref strTemplate,
                                                     strThisString,
                                                     false,
                                                     ref bChanged);
#endif
        }
Exemplo n.º 3
0
        // 写入新记录的指纹缓存
        static int AddFingerPrint(string strRecord, out string strError)
        {
            strError = "";

            XmlDocument new_dom = new XmlDocument();

            new_dom.LoadXml(strRecord);

            string strReaderBarcode = GetReaderBarcode(new_dom);

            if (string.IsNullOrEmpty(strReaderBarcode))
            {
                return(0);
            }
            string strFingerPrintString = DomUtil.GetElementText(new_dom.DocumentElement, "fingerprint");

            // TODO: 看新旧记录之间 fingerprint 之间的差异。有差异才需要覆盖进入高速缓存
            FingerprintItem item = new FingerprintItem
            {
                FingerprintString = strFingerPrintString,
                ReaderBarcode     = strReaderBarcode
            };
            // return:
            //      0   成功
            //      其他  失败。错误码
            int nRet = AddItems(
                new List <FingerprintItem> {
                item
            },
                out strError);

            if (nRet != 0)
            {
                return(-1);
            }

            return(1);
        }
Exemplo n.º 4
0
        // return:
        //      -2  remoting服务器连接失败。驱动程序尚未启动
        //      -1  出错
        //      >=0 实际发送给接口程序的事项数目
        static int CreateFingerprintCache(DpResultSet resultset,
                                          out string strError)
        {
            strError = "";
            int nRet = 0;

            ShowMessage("加入高速缓存");

            try
            {
                if (resultset == null)
                {
                    // 清空以前的全部缓存内容,以便重新建立
                    // return:
                    //      -2  remoting服务器连接失败。驱动程序尚未启动
                    //      -1  出错
                    //      0   成功
                    nRet = AddItems(
                        //channel,
                        null,
                        out strError);
                    if (nRet == -1)
                    {
                        return(-1);
                    }
                    if (nRet == -2)
                    {
                        return(-2);
                    }

                    return(0);
                }

                int  nSendCount = 0;
                long nCount     = resultset.Count;
                List <FingerprintItem> items = new List <FingerprintItem>();
                for (long i = 0; i < nCount; i++)
                {
                    DpRecord record = resultset[i];

                    string strTimestamp   = "";
                    string strBarcode     = "";
                    string strFingerprint = "";
                    ParseResultItemString(record.BrowseText,
                                          out strTimestamp,
                                          out strBarcode,
                                          out strFingerprint);
                    // TODO: 注意读者证条码号为空的,不要发送出去


                    FingerprintItem item = new FingerprintItem();
                    item.ReaderBarcode     = strBarcode;
                    item.FingerprintString = strFingerprint;

                    items.Add(item);
                    if (items.Count >= 100)
                    {
                        // return:
                        //      -2  remoting服务器连接失败。驱动程序尚未启动
                        //      -1  出错
                        //      0   成功
                        nRet = AddItems(
                            //channel,
                            items,
                            out strError);
                        if (nRet == -1)
                        {
                            return(-1);
                        }
                        if (nRet == -2)
                        {
                            return(-2);
                        }
                        nSendCount += items.Count;
                        items.Clear();
                    }
                }

                if (items.Count > 0)
                {
                    // return:
                    //      -2  remoting服务器连接失败。驱动程序尚未启动
                    //      -1  出错
                    //      0   成功
                    nRet = AddItems(
                        //channel,
                        items,
                        out strError);
                    if (nRet == -1)
                    {
                        return(-1);
                    }
                    if (nRet == -2)
                    {
                        return(-2);
                    }
                    nSendCount += items.Count;
                }

                // Console.Beep(); // 表示读取成功
                return(nSendCount);
            }
            finally
            {
            }
        }