private void ThreadLoop(object arg) { var portName = (string)arg; _serialPort = new SerialPort { PortName = portName, BaudRate = 19200, Parity = Parity.None, DataBits = 8, StopBits = StopBits.One, Handshake = Handshake.None, ReadTimeout = 100, WriteTimeout = 100 }; _serialPort.Open(); if (!Sync()) { throw new Exception("Unable to sync"); } Console.WriteLine("Synced"); var newFrame = new InputFrame(); while (true) { if (newFrame.Wait <= 0) { if (_queuedFrames.TryDequeue(out var queuedFrame)) { newFrame = queuedFrame; ApplyFrameToState(newFrame); _callback?.Invoke(GetStateStr()); var packet = TranslateState(_state); _serialPort.Write(packet, 0, packet.Length); } } else { newFrame.Wait--; } var resp = _serialPort.ReadByte(); if (resp == 0x92) { Console.Error.WriteLine("NACK"); if (!Sync()) { throw new Exception("Unable to sync after NACK"); } } else if (resp != 0x90) { // Unknown response } } }
public void KeepAlive() { while (Program.botRunning) { if (newFrame.Wait <= 0) { if (_queuedFrames.TryDequeue(out var queuedFrame)) { newFrame = queuedFrame; ApplyFrameToState(newFrame); _callback?.Invoke(GetStateStr()); var packet = TranslateState(_state); _serialPort.Write(packet, 0, packet.Length); } } else { newFrame.Wait--; Reset(); } try { var resp = _serialPort.ReadByte(); if (resp == 0x92) { Console.Error.WriteLine("NACK"); if (!Sync()) { throw new Exception("Unable to sync after NACK"); } } else if (resp != 0x90) { // Unknown response } } catch { Program.form.ApplyLog("Connection lost!"); Program.botConnected = false; Program.botRunning = false; } Thread.Sleep(10); } _serialPort.Dispose(); _serialPort.Close(); Program.form.UpdateStatus("Disconnected!"); Program.form.UpdateUSBDisplay(false); }
private void UpdateInner() { ComputeFft(); OnUpdateCallback?.Invoke(); }
private void UpdateInner() { UpdatePlots(); OnUpdateCallback?.Invoke(); }