public void OpenPort() { _serialPort?.Open(); Task.Run(() => { try { while (true) { if (_serialPort?.IsOpen == true) { byte[] data = { ComPacket.Header, (byte)GameStatus, }; _serialPort.Write(data, 0, data.Length); } if (Buffers.Count >= PacketLength) { var comPacket = new ComPacket(); if (Buffers.Dequeue() == ComPacket.Header) { comPacket.MsgType = (MsgType)Buffers.Dequeue(); comPacket.KeyValue = (KeyValue)Buffers.Dequeue(); _dip.Invoke(new Action(() => { GameCommandRecieved?.Invoke(this, new GameComEventArgs() { ComPacket = comPacket }); })); } } Thread.Sleep(10); } } catch (Exception) { throw; } }); }
public Buffer GetBuffer() => Buffers.Count == 0 ? new Buffer(1, 1) : Buffers.Dequeue();