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); }
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); } } } } }
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); } } } } }