我正在使用SerialPort连接到arduino设备。现在,当设备断开连接时,程序不知道发生了什么。因为它会很糟糕,所以我把port.WriteLine()放在try catch中。
因为我使用定时器(ElapsedEventHandler
)函数来定期检查连接,所以在端口重新打开/设备重新连接后,我会以某种方式重用此方法。
港口开放功能
private void timer_Tick(object sender, ElapsedEventArgs e)
{
try
{
port.BaudRate = 9600;
port.PortName = "COM14";
port.DtrEnable = true;
port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
port.Open();
}
catch { }
string msg;
if (port.IsOpen)
{
msg = "Status: device connected";
timer.Stop();
}
else { msg = "Device disconnected"; }
this.Dispatcher.Invoke(() => { status_lbl.Content = msg; });
}
端口打开后,方法停止。
现在我写了一些代码,以便在设备拔出时重新启动它,但端口似乎是打开的。我也用port.Close()
尝试了它,但它仍然不起作用。还尝试重新定义serialport,结果相同。
我错过了什么?