Esempio n. 1
0
        public bool mainControl()
        {
            bool rcvFlg = false;

            if (myComponents.ReceiveStream.Count != 0)
            {
                rcvFlg = true;
            }

            if (myComponents.CommMode == Components.RmMode.COMMAND)
            {
                if (CommSentFlg == false)
                {
                }
                else
                {
                    if (TxDataStream.Count == 0)
                    {
                    }
                    else
                    {
                        while (myComponents.ReceiveStream.Count != 0)
                        {
                            RxDataParam rxStream = myComponents.ReceiveStream.Dequeue();

                            List <byte> txBuff = TxDataStream.Peek();

                            if ((txBuff[0] & 0xF0) == (rxStream.Data[0] & 0xF0))
                            {
                                CommSentFlg = false;

                                TxDataStream.Dequeue();

                                byte req = (byte)(txBuff[0] & 0x0F);

                                switch (req)
                                {
                                case (byte)RmInstr.StartLog:
                                    break;

                                case (byte)RmInstr.StopLog:
                                    break;

                                case (byte)RmInstr.SetTiming:
                                    break;

                                case (byte)RmInstr.Write:
                                    break;

                                case (byte)RmInstr.SetAddr:
                                    break;

                                case (byte)RmInstr.ReadInfo:
                                    rxStream.Data.RemoveRange(0, 1);                                                    // delete count code
                                    myComponents.DutVersion = System.Text.Encoding.ASCII.GetString(rxStream.Data.ToArray());
                                    break;

                                case (byte)RmInstr.ReadDump:
                                    rxStream.Data.RemoveRange(0, 1);                                                    // delete count code
                                    myComponents.DumpData = BitConverter.ToString(rxStream.Data.ToArray());
                                    break;

                                default:
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            else if (myComponents.CommMode == Components.RmMode.LOG)
            {
            }

            return(rcvFlg);
        }
Esempio n. 2
0
		public void decode(byte[] bytes)
		{
			foreach (var tmp in bytes)
			{
				RxBytes.Enqueue(tmp);

			}

			while( RxBytes.Count != 0 )
			{
				byte tmp = RxBytes.Dequeue();

				if (tmp == (byte)FrameChar.END)
				{
					// Start SLIP Frame
					if (RcvFlg == false)
					{
						RcvFlg = true;
						RcvFrame = new List<byte>();

					}
					else
					{
						if( RcvFrame.Count == 0 )
						{
							// receive order FRAMECHAR.END,FRAMECHAR.END
							// Last FRAMECHAR.END might be Start of Frame
							RcvFlg = true;
							
						}
						else
						{
							byte crc = Crc8.Calculate(RcvFrame);
							
							if( ( crc == 0x00 ) &&
								( RcvFrame.Count >= 2 ) )
							{
								// End SLIP Frame

								// delete useless crc data size
								RcvFrame.RemoveRange((RcvFrame.Count - 1), 1);

								string time = setCommLog(RcvFrame, "Rx");

								RxDataParam rxData = new RxDataParam();

								rxData.Time = time;
								rxData.Data = new List<byte>(RcvFrame);

								myComponents.ReceiveStream.Enqueue(rxData);
				
								RcvFrame = new List<byte>();

								RcvFlg = false;

							}
							else
							{
								RcvFlg = true;
								RcvFrame = new List<byte>();
								
							}
							
						}
						
					}

				}
				else
				{
					if (EscFlg == true)
					{
						EscFlg = false;

						switch (tmp)
						{
							case (byte)FrameChar.ESC_END:
								RcvFrame.Add((byte)FrameChar.END);
								break;
							case (byte)FrameChar.ESC_ESC:
								RcvFrame.Add((byte)FrameChar.ESC);
								break;

						}

					}
					else if (tmp == (byte)FrameChar.ESC)
					{
						EscFlg = true;
					}
					else
					{
						if (RcvFlg == true)
						{
							RcvFrame.Add(tmp);
						}

					}

				}

			}

		}
Esempio n. 3
0
        public void decode(byte[] bytes)
        {
            foreach (var tmp in bytes)
            {
                RxBytes.Enqueue(tmp);
            }

            while (RxBytes.Count != 0)
            {
                byte tmp = RxBytes.Dequeue();

                if (tmp == (byte)FrameChar.END)
                {
                    // Start SLIP Frame
                    if (RcvFlg == false)
                    {
                        RcvFlg   = true;
                        RcvFrame = new List <byte>();
                    }
                    else
                    {
                        if (RcvFrame.Count == 0)
                        {
                            // receive order FRAMECHAR.END,FRAMECHAR.END
                            // Last FRAMECHAR.END might be Start of Frame
                            RcvFlg = true;
                        }
                        else
                        {
                            byte crc = Crc8.Calculate(RcvFrame);

                            if ((crc == 0x00) &&
                                (RcvFrame.Count >= 2))
                            {
                                // End SLIP Frame

                                // delete useless crc data size
                                RcvFrame.RemoveRange((RcvFrame.Count - 1), 1);

                                string time = setCommLog(RcvFrame, "Rx");

                                RxDataParam rxData = new RxDataParam();

                                rxData.Time = time;
                                rxData.Data = new List <byte>(RcvFrame);

                                myComponents.ReceiveStream.Enqueue(rxData);

                                RcvFrame = new List <byte>();

                                RcvFlg = false;
                            }
                            else
                            {
                                RcvFlg   = true;
                                RcvFrame = new List <byte>();
                            }
                        }
                    }
                }
                else
                {
                    if (EscFlg == true)
                    {
                        EscFlg = false;

                        switch (tmp)
                        {
                        case (byte)FrameChar.ESC_END:
                            RcvFrame.Add((byte)FrameChar.END);
                            break;

                        case (byte)FrameChar.ESC_ESC:
                            RcvFrame.Add((byte)FrameChar.ESC);
                            break;
                        }
                    }
                    else if (tmp == (byte)FrameChar.ESC)
                    {
                        EscFlg = true;
                    }
                    else
                    {
                        if (RcvFlg == true)
                        {
                            RcvFrame.Add(tmp);
                        }
                    }
                }
            }
        }