Пример #1
0
        protected bool IfReceived(SerialPortManager sp, ProtocolBase protocol, IOBuffer buffer, SynchronizationContext syncContext)
        {
            byte receivedByte;

            if (sp.ReadByte(out receivedByte))
            {
                switch (step)
                {
                case 0:
                    if (receivedByte == protocol.Header)
                    {
                        step++;
                        buffer[counterOfTheReceivedBytes++] = receivedByte;
                    }
                    break;

                case 1:
                    if ((receivedByte & 0x80) == 0x80)
                    {
                        RestartReceiv();
                    }
                    else
                    {
                        buffer[counterOfTheReceivedBytes++] = receivedByte;
                        if (counterOfTheReceivedBytes == buffer.Size)
                        {
                            if (protocol.UnPack(buffer))
                            {
                                syncContext.Post(delegate
                                {
                                    logger.Log(string.Format("Rx: {0}", buffer.ToString()), Category.Debug, Priority.None);
                                }, null);
                                return(true);
                            }
                            else
                            {
                                RestartReceiv();
                            }
                        }
                    }
                    break;
                }
            }
            return(false);
        }
Пример #2
0
 protected bool IfReceived(SerialPortManager sp, ProtocolBase protocol, IOBuffer buffer, SynchronizationContext syncContext)
 {
     byte receivedByte;
     if (sp.ReadByte(out receivedByte))
     {
         switch (step)
         {
             case 0:
                 if (receivedByte == protocol.Header)
                 {
                     step++;
                     buffer[counterOfTheReceivedBytes++] = receivedByte;
                 }
                 break;
             case 1:
                 if ((receivedByte & 0x80) == 0x80)
                     RestartReceiv();
                 else
                 {
                     buffer[counterOfTheReceivedBytes++] = receivedByte;
                     if (counterOfTheReceivedBytes == buffer.Size)
                     {
                         if (protocol.UnPack(buffer))
                         {
                             syncContext.Post(delegate
                             {
                                 logger.Log(string.Format("Rx: {0}", buffer.ToString()), Category.Debug, Priority.None);
                             }, null);
                             return true;
                         }
                         else
                             RestartReceiv();
                     }
                 }
                 break;
         }
     }
     return false;
 }