Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 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);
         }
     }
 }
Ejemplo n.º 3
0
 public CarrierProcesser()
 {
     mDev = new DevCarrier();
 }