private static bool TestSerialPort(SerialPort serialPort) { var escapedAck = EscapedBinaryProtocol.Write(_ack); serialPort.Write(escapedAck, 0, escapedAck.Length); var memory = new MemoryStream(); var writer = new BinaryWriter(memory); try { while (true) { var read = serialPort.ReadByte(); if (read >= 0) { writer.Write((byte)read); } } } catch (TimeoutException) { memory.Position = 0; try { var message = EscapedBinaryProtocol.Read(memory); return(message.SequenceEqual(_ack)); } catch { return(false); } } }
public void SetColors(RGBColor[] colors) { if (!_serial.IsOpen) { throw new InvalidOperationException("Color cannot be set. Serial device unavailable"); } _lastColorAmount = colors.Length; var colorBytes = colors.SelectMany(c => c.ToByteArray()).ToArray(); var converted = EscapedBinaryProtocol.Write(colorBytes); _serial.Write(converted, 0, converted.Length); }