/// <summary> /// 关闭注销设备 /// </summary> /// <returns></returns> public bool Close() { bool rtn = false; if (_isDeviceOpen) { Stop(); try { if (_curRfidCfg.ConType == DeviceConType.Net) { ReaderB.StaticClassReaderB.CloseNetPort(_readerHandel); } else//串口 { ReaderB.StaticClassReaderB.CloseSpecComPort(comPort); ReaderB.StaticClassReaderB.CloseComPort(); } rtn = true; RFIDReaderLogger.Debug("关闭读卡器。", _curRfidCfg.Ip); } catch (Exception ex) { RFIDReaderLogger.Error("关闭设备异常。", _curRfidCfg.Ip, ex); } } else { RFIDReaderLogger.Error("关闭设备时,设备未打开。", _curRfidCfg.Ip); } return(rtn); }
/// <summary> /// 连接初始化设备 /// </summary> /// <returns></returns> public bool Open() { bool rtn = false; //FileHelpClass.WriteLog("Ljyzn102准备打开RFID设备:" + _curRfidCfg.IsUse, "RFID"); if (_curRfidCfg != null && _curRfidCfg.IsUse) { //FileHelpClass.WriteLog(string.Format("Ljyzn102读写器连接方式:{0}", _curRfidCfg.ConType), "RFID"); if (!OpenReader(_curRfidCfg)) { //FileHelpClass.WriteLog("Ljyzn102启动RFID设备失败。", "RFID"); ShowErrorMsg("打开RFID设备失败。"); } else { _isDeviceOpen = true; rtn = true; RFIDReaderLogger.Debug("打开RFID设备成功。", _curRfidCfg.Ip); } } else { RFIDReaderLogger.Error("打开RFID设备失败,配置信息不存在或读写器未启用。", _curRfidCfg.Ip); rtn = false; } return(rtn); }
public List <string> ReadCardId() { List <string> rtn = new List <string>(); try { int i; int CardNum = 0; int Totallen = 0; int EPClen, m; byte[] EPC = new byte[5000]; int CardIndex; string temps; string sEPC; byte AdrTID = 0; byte LenTID = 0; byte TIDFlag = 0; int fCmdRet = ReaderB.StaticClassReaderB.Inventory_G2(ref _readerAddr, AdrTID, LenTID, TIDFlag, EPC, ref Totallen, ref CardNum, _readerHandel); //FileHelpClass.WriteLog("读取厂家接口程序返回:" + fCmdRet + "CardNum=" + CardNum, "RFID"); if ((fCmdRet == 1) | (fCmdRet == 2) | (fCmdRet == 3) | (fCmdRet == 4) | (fCmdRet == 0xFB))//代表已查找结束, { byte[] daw = new byte[Totallen]; Array.Copy(EPC, daw, Totallen); temps = ByteArrayToHexString(daw); m = 0; for (CardIndex = 0; CardIndex < CardNum; CardIndex++) { EPClen = daw[m]; sEPC = temps.Substring(m * 2 + 2, EPClen * 2); m = m + EPClen + 1; if (sEPC.Length == EPClen * 2) { if (!rtn.Contains(sEPC)) { rtn.Add(sEPC); } } } } } catch (Exception ex) { RFIDReaderLogger.Error("寻卡时,读取卡片ID异常。", _curRfidCfg.Ip, ex); } return(rtn); }
/// <summary> /// 打开读写器 /// </summary> /// <param name="pRfidCfg"></param> private bool OpenReader(RfidCfg pRfidCfg) { bool rtn = false; try { if (pRfidCfg.ConType == DeviceConType.Net) { int temp = ReaderB.StaticClassReaderB.OpenNetPort(int.Parse(pRfidCfg.Port), pRfidCfg.Ip, ref _readerAddr, ref _readerHandel); if (temp != 0) { RFIDReaderLogger.Error(string.Format("打开RFID读写器失败。IP={0},端口={1}", pRfidCfg.Ip, pRfidCfg.Port), pRfidCfg.Ip); } else { rtn = true; } } else //if (pRfidCfg.ConType == "串口") { byte indexBaud = GetBaudrateIndex(pRfidCfg.Baudrate); comPort = int.Parse(pRfidCfg.ComPort.ToUpper().Replace("COM", "")); if (indexBaud != byte.MaxValue) { int temp = StaticClassReaderB.OpenComPort(comPort, ref _readerAddr, indexBaud, ref _readerHandel); if (temp != 0) { RFIDReaderLogger.Error(string.Format("打开RFID读写器失败。ComPort={0}", pRfidCfg.ComPort), pRfidCfg.ComPort); } else { rtn = true; } } } } catch (Exception ex) { RFIDReaderLogger.Error("连接RFID读写器异常。", pRfidCfg.Ip, ex); } return(rtn); }
/// <summary> /// 启动定时读取功能 /// </summary> /// <param name="tIp"></param> /// <param name="tPort"></param> /// <returns></returns> public bool Start() { bool rtn = false; if (!_isDeviceOpen) { Open(); } if (_isDeviceOpen) { try { if (_isDeviceOpen) { if (tsRfidReader != null) { while (tsRfidReader.IsAlive) { tsRfidReader.Abort(); RFIDReaderLogger.Debug("启动寻卡时先强制结束寻卡线程。", _curRfidCfg.Ip); } } // tsRfidReader = new Thread(new ThreadStart(ReadData)); tsRfidReader.IsBackground = true; _searchCard = true; tsRfidReader.Start(); RFIDReaderLogger.Debug("启动寻卡线程。", _curRfidCfg.Ip); rtn = true; } else { RFIDReaderLogger.Debug("启动寻卡时设备未打开。", _curRfidCfg.Ip); } } catch (Exception ex) { RFIDReaderLogger.Error("启动寻卡时异常。", _curRfidCfg.Ip, ex); } } return(rtn); }
/// <summary> /// 创建RFID实例 /// </summary> /// <returns></returns> private IRfidController CreateInstance(RfidCfg rf) { try { string driverPath = System.AppDomain.CurrentDomain.BaseDirectory; driverPath = Path.Combine(driverPath, rf.EquDll); Assembly assembly = Assembly.LoadFile(driverPath); RFIDReaderLogger.Debug("载入硬件封装模块。driverPath=" + driverPath, ""); string name = assembly.FullName.Split(',')[0] + ".RfidController"; Type type = assembly.GetType(name); IRfidController irfid = Activator.CreateInstance(type, rf) as IRfidController; return(irfid); } catch (Exception ex) { RFIDReaderLogger.Error("CreateInstance异常。", "", ex); return(null); } }