public WeldingControlForm(SerialPort serialPort) { InitializeComponent(); CurrentSerialPort = serialPort; dataReceivedEventHandler = new SerialDataReceivedEventHandler(serialPortDataReceived); CurrentSerialPort.DataReceived += dataReceivedEventHandler; History = History.LatestHistory(); }
private void AutoControlButton_Click(object sender, EventArgs e) { var history = History.LatestHistory(); var template = AppController.Shared.CurrentTemplate; if (template != null) { history = template.History; } if (history == null) { AutoClosingMessageBox.Show("尚未记录任何焊接数据,请记录几次焊接流程后再尝试自动控制。\r\n\r\n本对话框将在5秒内自动关闭", "提示", 5000); return; } else if (history.Signals.Count == 0) { AutoClosingMessageBox.Show("无效的焊接记录:不包含任何信号数据。请你选择一个模板,或采集一次焊接数据后再进行自动焊接。\r\n\r\n本对话框将在5秒内自动关闭", "提示", 5000); return; } else { var serialPort = currentSerialPort; if (serialPort == null) { MessageBox.Show("请选择一个端口并打开。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // 在显示对话框前删除事件监听器 serialPort.DataReceived -= dataReceivedEventHandler; var form = new WeldingControlForm(serialPort, history); form.AutoControl = !manualControl; // Start auto control if event comes from signal! manualControl = true; // revert it back to manual control. form.ShowDialog(this); // 对话框完成后继续事件监听 serialPort.DataReceived += dataReceivedEventHandler; //SimulateSignal(0); } }