Я строю проект с модулем arduino и bluetooth, устройство отправляет данные для последовательного порта, а сборка программного обеспечения в 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»
Спасибо за вашу помощь.