/// <summary> /// 循环匹配所有协议 /// 数据符合 /// 1.找到合适的协议并更新 /// 数据不符合 /// 1. /// </summary> /// <param name="data"></param> /// <returns></returns> private bool MatchWithProtocol(ref byte[] data) { ushort head = BitConverter.ToUInt16(ShiftBytes(data, 0, 2), 0); ushort tail = BitConverter.ToUInt16(ShiftBytes(data, mMinProtLength - 2, 2), 0); if (head == SocketConst.CARRIER_HEAD_KEY && tail == SocketConst.TAIL_KEY) { byte[] pdata = new byte[SocketConst.CARRIER_STATUS_SIZE]; Array.Copy(data, 0, pdata, 0, SocketConst.CARRIER_STATUS_SIZE); DevCarrier device = mProcess.GetStatus(pdata); if (device.IsUpdate || mTimer.IsTimeOutAndReset(TimerTag.DevTcpDateRefresh, (int)DevID, 2)) { SendMsg(SocketMsgTypeE.DataReiceive, SocketConnectStatusE.通信正常, device); if (device.IsUpdate) { _mLog.Status(true, device.ToString()); } } if (device.IsAlertUpdate) { _mLog.Alert(true, device.AlertToString()); } // remove from data array data = data.Skip(SocketConst.CARRIER_STATUS_SIZE).ToArray(); return(true); } return(false); }
private void MsgSend(CarrierTask task, DevCarrier carrier) { if (Monitor.TryEnter(_objmsg, TimeSpan.FromSeconds(5))) { try { mMsg.ID = task.ID; mMsg.Name = task.Device.name; mMsg.o1 = carrier; mMsg.o2 = task.ConnStatus; Messenger.Default.Send(mMsg, MsgToken.CarrierStatusUpdate); } finally { Monitor.Exit(_objmsg); } } }
public CarrierProcesser() { mDev = new DevCarrier(); }