我正在使用arduino和蓝牙模块构建项目,该设备发送串行端口数据,并且在c#中构建的软件正确接收了数据,我需要检测设备何时断开连接并向用户显示一条消息,但是当我断开设备的连接时,该应用程序不会启动任何异常,并且不会显示任何错误消息。
我正在使用后台工作程序,我试图检测设备是否在无限循环中断开连接,因为我需要不断显示数据并将其保存在确定的时间内。我也使用了异步方法,但是结果是一样的。
getDataNow=true;
var worktest = new BackgroundWorker()
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
worktest.DoWork += UpdateData;
worktest.RunWorkerAsync();
private void UpdateData(object sender, DoWorkEventArgs e)
{
while (getDataNow)
{
try
{
string serialData = "";
Console.WriteLine("status " + serialPort.IsOpen);
if (serialPort.IsOpen == true)
{
serialData = serialPort.ReadLine();
}
else
{
BtnDetectStyle("detect");
MessageBox.Show("El dispositivo ha sido desconectado", device,
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
getDataNow = false;
}
Console.WriteLine("serial port data " + serialData);
if (serialData.Length > 0)
{
GetDataSensor(serialData, out string temperature, out string humidity);
this.Invoke((MethodInvoker)delegate ()
{
this.lblHum.Text = humidity;
this.lblTemp.Text = temperature;
});
Console.Write("7");
if (DateTime.Now.ToString("h:mm tt") == conf.GetDateMorning)
{
Thread.Sleep(60000);
}
if (DateTime.Now.ToString("h:mm tt") == conf.GetDateAfternoon)
{
Thread.Sleep(60000);
}
}
}
catch (TimeoutException te)
{
Console.WriteLine(te);
}
}
}
我期望出现异常或“设备已断开连接”消息,但是我得到了 “线程xx以代码0结尾”
感谢您的帮助。