public void Disconnect() { if (iComm != null) { if (iComm.isConnected && DisconnectMessage != null && !(CommPort is UdpPort)) { iComm.isConnected = false; IHostMessage disconnectMessage = DisconnectMessage; Send(disconnectMessage, 500); Thread.Sleep(50); } iComm.isConnected = false; } if (iComm != null) { iComm.Close(); iComm.OnMsgReceived -= iConn_OnMsgReceived; iComm.OnBuffReceived -= iConn_OnBuffReceived; } if (iComm != null && iComm.threadProcess != null && iComm.threadProcess.ThreadState != ThreadState.Stopped) { try { iComm.threadProcess.Abort(); } catch { } } iComm = null; }
public ReceivedInfo(byte[] buff) : base(buff) { if (buff.Length >= 6) { tParam = new GpiTriggerParameter(); tParam.PortNO = buff[1]; tParam.TriggerCondition = (GpiTriggerCondition)buff[2]; tParam.StopCondition = (GpiStopCondition)buff[3]; tParam.DelayTime = (ushort)((buff[4] << 8) + buff[5]); if (buff.Length == 8 && buff[6] == 0 && buff[7] == 0) { tParam.TriggerMsg = null; } if (buff.Length >= 10) { IHostMessage hostMessage = null; ushort key = (ushort)((buff[8] << 8) + buff[9]); if (MessageType.msgType.ContainsKey(key)) { Type type = Type.GetType("NetAPI.Protocol.VRP." + MessageType.msgType[key], throwOnError: true); hostMessage = (IHostMessage)Activator.CreateInstance(type, null); int num = buff.Length - 10; msgbody = new byte[num]; Array.Copy(buff, 10, msgbody, 0, num); ((MessageFrame)hostMessage).msgBody = msgbody; } tParam.TriggerMsg = hostMessage; } } }
public bool Send(IHostMessage msg) { if (msg == null) { return(false); } ((MessageFrame)msg).isRS485 = true; ((MessageFrame)msg).address = address; return(pReader.Send(msg)); }
public override bool Send(IHostMessage msg) { if (msg == null) { return(false); } if (isStart_AutoPowerConfig && !isPause_AutoPowerConfig) { if (msg is MsgTagInventory && !((MsgTagInventory)msg).isAutoPowerConft) { isPause_AutoPowerConfig = true; for (int i = 0; i < 200; i++) { Thread.Sleep(10); if (!isStart_AutoPowerConfig) { break; } } } if (msg is MsgTagRead && !msg.IsReturn) { isPause_AutoPowerConfig = true; for (int j = 0; j < 200; j++) { Thread.Sleep(10); if (!isStart_AutoPowerConfig) { break; } } } } else if (!isStart_AutoPowerConfig && isPause_AutoPowerConfig && msg is MsgPowerOff) { isPause_AutoPowerConfig = false; } return(base.Send(msg)); }
public virtual bool Send(IHostMessage msg) { if (msg == null) { return(false); } try { msg.TrigerOnExecuting(this); } catch (Exception ex) { Log.Debug(ReaderName + ":" + ex.Message); return(false); } if (iComm == null) { return(false); } bool result = iComm.Send(msg, msg.Timeout); msg.TrigerOnExecuted(this); return(result); }
internal bool Send(IHostMessage msg, int timeout) { if (msg == null) { Log.Debug("ICommunication:" + ErrInfoList.ErrDictionary["FF05"]); return(false); } bool flag = false; if (msg.IsReturn) { lock (lockEvent) { lock (lockinfo) { info = new messageInfo(); info.msg = msg; info.ev = new AutoResetEvent(initialState: false); } byte[] transmitterData = msg.TransmitterData; try { Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "]发送数据:" + Util.ConvertbyteArrayToHexWordstring(transmitterData)); } catch (Exception ex) { Log.Error(ex.Message); } Log.Debug("TXD:[" + Util.ConvertbyteArrayToHexstring(transmitterData) + "]"); int num = Send(transmitterData); if (num > 0 && num == transmitterData.Length) { flag = info.ev.WaitOne(timeout, exitContext: true); if (flag) { if (msg.Status != 0) { flag = false; } } else if (!isReturnReadTag) { msg.Status = MsgStatus.Timeout; } } lock (lockinfo) { info = null; } } } else { byte[] transmitterData2 = msg.TransmitterData; Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "]发送数据:" + Util.ConvertbyteArrayToHexWordstring(transmitterData2)); Log.Debug("TXD:[" + Util.ConvertbyteArrayToHexstring(transmitterData2) + "]"); int num2 = Send(transmitterData2); if (num2 > 0 && num2 == transmitterData2.Length) { flag = true; } } if (isReturnReadTag) { isReturnReadTag = false; } if (isGetOneTag) { isGetOneTag = false; } return(flag); }
public bool Send(IHostMessage msg, int timeout) { msg.Timeout = timeout; return(Send(msg)); }
protected bool Connect(out ErrInfo err) { err = new ErrInfo("FF01", ""); if (iComm == null) { try { string text = CommPort.Port.ToString(); if (text == "RS232" || text == "RS485") { //text = "COM"; iComm = new COM(); } else { iComm = new NetAPI.Communication.TcpClient(); } //Type type = Type.GetType("NetAPI.Communication." + text, throwOnError: true); //iComm = (ICommunication)Activator.CreateInstance(type); iComm.readerName = ReaderName; } catch (Exception ex) { err = new ErrInfo("FF01", ex.Message); Log.Fatal(CommPort.Port.ToString() + ":" + ex.Message); return(false); } } if (iComm != null) { //Assembly assembly = Assembly.LoadFrom(APIPath.folderName + "\\API.dll"); //Type type2 = assembly.GetType("NetAPI.Protocol.VRP.Decode", throwOnError: true); //iComm.iProcess = (IProcess)Activator.CreateInstance(type2); iComm.iProcess = new Decode(); try { if (iComm.Open(CommPort.ConnStr)) { iComm.OnMsgReceived += iConn_OnMsgReceived; iComm.OnBuffReceived += iConn_OnBuffReceived; iComm.threadProcess = new Thread(iComm.process); iComm.threadProcess.Start(); if (ConnectMessage != null && !(CommPort is UdpPort)) { bool flag = false; for (int i = 0; i < 2; i++) { IHostMessage connectMessage = ConnectMessage; bool flag2 = Send(connectMessage); if (connectMessage.Status != MsgStatus.Timeout) { flag = true; break; } } if (!flag) { err = new ErrInfo("FF01", "协议消息测试失败"); Disconnect(); return(false); } } return(true); } } catch (Exception ex2) { err = new ErrInfo("FF01", ex2.Message); Log.Error("iComm:" + ex2.Message); return(false); } } return(false); }