示例#1
0
 public static void TrigerErrorMessage(IReaderMessage e)
 {
     if (AbstractReader.OnErrorMessage != null)
     {
         AbstractReader.OnErrorMessage(e);
     }
 }
示例#2
0
 private void iConn_OnMsgReceived(IReaderMessage e)
 {
     if (this.OnReaderMessageReceived != null)
     {
         this.OnReaderMessageReceived(this, e);
     }
 }
示例#3
0
 public void Log(string msg, IReaderMessage e)
 {
     Console.WriteLine(msg);
     Log(string.Format("MessageID:{0}" +
                       "\r\nStatus:{1}" +
                       "\r\nErrorInfo.ErrCode:{2}" +
                       "\r\nErrorInfo.ErrMsg:{3}" +
                       "\r\nReceivedData={4}", e.MessageID, e.Status, e.ErrorInfo.ErrCode, e.ErrorInfo.ErrMsg, ByteFormat.ToHex(e.ReceivedData, "", " ")));
 }
示例#4
0
        public override async Task <Boolean> ProcessMessageInputAsync(IReaderMessage <T> message)
        {
            if (message.Count > 0 && Rules.TryGetValue(message[0], out ICommandRule <T> rule))
            {
                return(await rule.ExecuteAsync(message).ConfigureAwait(false));
            }

            return(await Rule.ExecuteAsync(message).ConfigureAwait(false));
        }
示例#5
0
        public IReaderMessage ParseMessageNotification(byte[] recvMsg)
        {
            IReaderMessage readerMessage = null;
            ushort         messageType   = GetMessageType(recvMsg);

            if (MessageType.msgType.ContainsKey(messageType))
            {
                Type type = Type.GetType("NetAPI.Protocol.VRP." + MessageType.msgType[messageType], throwOnError: true);
                readerMessage = (IReaderMessage)Activator.CreateInstance(type, null);
                readerMessage.ReceivedData = recvMsg;
            }
            return(readerMessage);
        }
示例#6
0
        protected override async Task <Boolean> RunAsync(IConsoleRule <T> rule, IReaderMessage <T> message)
        {
            if (message.Count > 0 && Rules.TryGetValue(message[0], out ICommandRule <T> nrule))
            {
                return(await nrule.ExecuteAsync(message).ConfigureAwait(false));
            }

            if (DefaultHandler is null)
            {
                return(false);
            }

            return(await DefaultHandler.Invoke(this, message).ConfigureAwait(false));
        }
示例#7
0
 internal void process()
 {
     while (isConnected)
     {
         List <byte[]> msgs        = null;
         byte[]        bufferQueue = BufferQueue;
         iProcess.Parse(bufferQueue, out msgs);
         if (msgs != null && msgs.Count > 0)
         {
             foreach (byte[] item in msgs)
             {
                 try
                 {
                     Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "]接收数据:" + Util.ConvertbyteArrayToHexWordstring(item));
                     Console.WriteLine("");
                 }
                 catch (Exception ex)
                 {
                     Log.Error(ex.Message);
                 }
                 lock (lockinfo)
                 {
                     if (info != null && !info.isDone && iProcess.GetMessageID(item) == info.msg.MessageID)
                     {
                         info.msg.ReceivedData = item;
                         info.isDone           = true;
                         info.ev.Set();
                         continue;
                     }
                 }
                 IReaderMessage readerMessage = null;
                 try
                 {
                     readerMessage = iProcess.ParseMessageNotification(item);
                     if (this.OnMsgReceived != null && readerMessage != null)
                     {
                         this.OnMsgReceived.BeginInvoke(readerMessage, null, null);
                     }
                 }
                 catch (Exception ex2)
                 {
                     string text = "";
                     if (readerMessage != null)
                     {
                         text = readerMessage.MessageID.ToString("X4");
                     }
                     if (text.Length % 2 == 1)
                     {
                         text = "0" + text;
                     }
                     Log.Error("ICommunication:" + ex2.Message + "|MsgID:" + text);
                 }
             }
         }
         if (this.OnBuffReceived != null)
         {
             this.OnBuffReceived(bufferQueue);
         }
     }
     Log.Info("ICommunication:线程退出");
 }
示例#8
0
 protected override Boolean Check(IReaderMessage <T> message)
 {
     return(message.Count > 0 && Equals(message[0], Id));
 }
示例#9
0
 protected override Boolean CheckMessage(IReaderMessage <String> message)
 {
     return(message.IsExternal);
 }
示例#10
0
 protected override Task <Boolean> DefaultHandlerAsync(IConsoleRule <String> rule, IReaderMessage <String> message)
 {
     return(TaskUtils.True);
 }
示例#11
0
        protected sealed override async Task <Boolean> RunAsync(IConsoleRule <ConsoleKeyInfo> rule, IReaderMessage <ConsoleKeyInfo> message)
        {
            if (_active is not null)
            {
                if (message.Value.Key != ConsoleKey.Escape)
                {
                    return(await _active.ExecuteAsync(message).ConfigureAwait(false));
                }

                _active = null;
                return(true);
            }

            if (Rules.Count < 1)
            {
                return(true);
            }

            Action action = message.Value.Key switch
            {
                ConsoleKey.Enter => Enter,
                ConsoleKey.UpArrow => RuleUp,
                ConsoleKey.DownArrow => RuleDown,
                _ => null
            };

            if (action is null)
            {
                return(true);
            }

            action.Invoke();
            await RefreshAsync().ConfigureAwait(false);

            return(true);
        }
示例#12
0
 protected override Boolean Check(IReaderMessage <T> message)
 {
     return(true);
 }
示例#13
0
 private void Reader_OnMessageNotificationReceived(AbstractReader reader, IReaderMessage msg)
 {
     if (msg.Status == MsgStatus.Success || msg is MsgActiveTagActive || msg is MsgActiveTagSleep)
     {
         if (msg is MsgTagInventory)
         {
             if (isStart_AutoPowerConfig && !isPause_AutoPowerConfig)
             {
                 if (this.OnAutoPowerConfigInventoryReceived != null)
                 {
                     MsgTagInventory msgTagInventory = msg as MsgTagInventory;
                     if (IsEnableAntenna || IsEnableRSSI)
                     {
                         msgTagInventory.ReceivedMessage.setAntennaAndRSSI(IsEnableAntenna, IsEnableRSSI);
                     }
                     this.OnAutoPowerConfigInventoryReceived(reader.ReaderName, msgTagInventory.ReceivedMessage.TagData);
                 }
             }
             else if (this.OnInventoryReceived != null)
             {
                 MsgTagInventory msgTagInventory2 = msg as MsgTagInventory;
                 if (msgTagInventory2.isRS485)
                 {
                     RS485Item[] rS485Items = RS485Items;
                     foreach (RS485Item rS485Item in rS485Items)
                     {
                         if (rS485Item.Address == msgTagInventory2.address)
                         {
                             if (rS485Item.IsEnableAntenna || rS485Item.IsEnableRSSI)
                             {
                                 msgTagInventory2.ReceivedMessage.setAntennaAndRSSI(IsEnableAntenna, IsEnableRSSI);
                             }
                             break;
                         }
                     }
                 }
                 else if (IsEnableAntenna || IsEnableRSSI)
                 {
                     msgTagInventory2.ReceivedMessage.setAntennaAndRSSI(IsEnableAntenna, IsEnableRSSI);
                 }
                 this.OnInventoryReceived(reader.ReaderName, msgTagInventory2.ReceivedMessage.TagData);
             }
         }
         if (msg is MsgTagRead && this.OnInventoryReceived != null)
         {
             MsgTagRead msgTagRead = msg as MsgTagRead;
             if (msgTagRead.isRS485)
             {
                 RS485Item[] rS485Items2 = RS485Items;
                 foreach (RS485Item rS485Item2 in rS485Items2)
                 {
                     if (rS485Item2.Address == msgTagRead.address)
                     {
                         if (rS485Item2.IsEnableAntenna || rS485Item2.IsEnableRSSI)
                         {
                             msgTagRead.ReceivedMessage.setAntennaAndRSSI(IsEnableAntenna, IsEnableRSSI);
                         }
                         break;
                     }
                 }
             }
             else if (IsEnableAntenna || IsEnableRSSI)
             {
                 msgTagRead.ReceivedMessage.setAntennaAndRSSI(IsEnableAntenna, IsEnableRSSI);
             }
             this.OnInventoryReceived(reader.ReaderName, msgTagRead.ReceivedMessage.TagData);
         }
         if (msg is MsgAlarmInfo_AccessControl && this.OnMsgAlarmInfo_AccessControl != null)
         {
             MsgAlarmInfo_AccessControl msgAlarmInfo_AccessControl = msg as MsgAlarmInfo_AccessControl;
             this.OnMsgAlarmInfo_AccessControl(reader.ReaderName, msgAlarmInfo_AccessControl.ReceivedMessage.TagData);
         }
         if (msg is MsgActiveTagInventory && this.OnActiveTagInventoryReceived != null)
         {
             MsgActiveTagInventory msgActiveTagInventory = msg as MsgActiveTagInventory;
             this.OnActiveTagInventoryReceived(reader.ReaderName, msgActiveTagInventory.ReceivedMessage.ActiveTagList);
         }
         if (msg is MsgActiveTagInventory2 && this.OnActiveTagInventoryReceived != null)
         {
             MsgActiveTagInventory2 msgActiveTagInventory2 = msg as MsgActiveTagInventory2;
             this.OnActiveTagInventoryReceived(reader.ReaderName, msgActiveTagInventory2.ReceivedMessage.ActiveTagList);
         }
         if (msg is MsgActiveTagActive && this.OnMsgActiveTagActiveReceivedHandle != null)
         {
             MsgActiveTagActive msg2 = msg as MsgActiveTagActive;
             this.OnMsgActiveTagActiveReceivedHandle(reader.ReaderName, msg2);
         }
         if (msg is MsgActiveTagSleep && this.OnMsgActiveTagSleepReceivedHandle != null)
         {
             MsgActiveTagSleep msg3 = msg as MsgActiveTagSleep;
             this.OnMsgActiveTagSleepReceivedHandle(reader.ReaderName, msg3);
         }
         if (msg is MsgFirmwareOnlineUpgrade && this.OnFirmwareOnlineUpgradeReceived != null)
         {
             MsgFirmwareOnlineUpgrade msgFirmwareOnlineUpgrade = msg as MsgFirmwareOnlineUpgrade;
             uint   frameAddress = msgFirmwareOnlineUpgrade.ReceivedMessage.FrameAddress;
             ushort total        = (ushort)(frameAddress >> 16);
             ushort rate         = (ushort)frameAddress;
             this.OnFirmwareOnlineUpgradeReceived(total, rate);
         }
         if (msg is MsgAppFirmwareOnlineUpgrade && this.OnFirmwareOnlineUpgradeReceived != null)
         {
             MsgAppFirmwareOnlineUpgrade msgAppFirmwareOnlineUpgrade = msg as MsgAppFirmwareOnlineUpgrade;
             uint   frameAddress2 = msgAppFirmwareOnlineUpgrade.ReceivedMessage.FrameAddress;
             ushort total2        = (ushort)(frameAddress2 >> 16);
             ushort rate2         = (ushort)frameAddress2;
             this.OnAppFirmwareOnlineUpgradeReceived(total2, rate2);
         }
         if (msg is MsgCtrlUpdata_YC001 && this.OnCtrlUpdata_YC001 != null)
         {
             MsgCtrlUpdata_YC001 msgCtrlUpdata_YC = msg as MsgCtrlUpdata_YC001;
             byte             ctrlBoardNO         = msgCtrlUpdata_YC.ReceivedMessage.CtrlBoardNO;
             IrTrigger[]      irStates            = msgCtrlUpdata_YC.ReceivedMessage.IrStates;
             SenssorTrigger[] senssorStates       = msgCtrlUpdata_YC.ReceivedMessage.SenssorStates;
             this.OnCtrlUpdata_YC001(ctrlBoardNO, irStates, senssorStates);
         }
         if (msg is MsgKeepAlive_YC001 && this.OnKeepAlive_YC001 != null)
         {
             this.OnKeepAlive_YC001();
         }
         if (msg is MsgKeepAlive)
         {
             if (keepAliveInterval == 0)
             {
                 MsgKeepAliveConfig msgKeepAliveConfig = new MsgKeepAliveConfig();
                 if (Send(msgKeepAliveConfig, 2000))
                 {
                     isEnableKeepAlive = msgKeepAliveConfig.ReceivedMessage.IsEnable;
                     keepAliveInterval = msgKeepAliveConfig.ReceivedMessage.Interval;
                 }
             }
             if (threadKeepAlive == null || !threadKeepAlive.IsAlive)
             {
                 threadKeepAlive = new Thread(threadKeepAliveMethod);
                 threadKeepAlive.Start();
             }
             dtKeepAlive = DateTime.Now;
         }
         if (msg is MsgSearchIp)
         {
             MsgSearchIp info = msg as MsgSearchIp;
             if (this.OnUdpSearchIpReceived != null)
             {
                 this.OnUdpSearchIpReceived(ReaderName, info);
             }
         }
     }
 }
示例#14
0
 protected virtual Task <Boolean> RunAsync(IConsoleRule <T> rule, IReaderMessage <T> message)
 {
     return(TaskUtils.False);
 }
示例#15
0
 public async Task <Boolean> ExecuteAsync(IReaderMessage <T> message)
 {
     return(Check(message) && await Handler.Invoke(this, message.Next).ConfigureAwait(false));
 }
示例#16
0
 protected virtual Boolean Check(IReaderMessage <T> message)
 {
     return(true);
 }