public LedDevice(string portName, LedDevice original) { if (portName != null) { _port = new SerialPort(portName, 115200) { DataBits = 8, StopBits = StopBits.One, Parity = Parity.None, Encoding = Encoding.ASCII, ReadTimeout = 3000, WriteTimeout = 3000 }; _port.Open(); } try { Write(new byte[256 * 3]); _port?.Write("LEDS"); WriteByte(0); ReadResponse(); Ticks.Add(); } catch { _port?.Close(); throw; } if (original != null) { _colors = original._colors.ToArray(); _fadeStartTime = original._fadeStartTime; _fadeDuration = original._fadeDuration; _fadeEndValue = original._fadeEndValue; _fadeStartValue = original._fadeStartValue; } _thread = new Thread(LedDeviceThreadProc) { IsBackground = true }; _thread.Start(); }