На прошлой неделе моя программа работала нормально с потоком, предназначенным для чтения строк, передаваемых из моего последовательного порта (3D-принтер) на мой компьютер.Я сделал некоторые небольшие изменения в своем коде в других областях, но не изменил эту тему в моей памяти.Цель этой ветки - постоянно читать сообщения, которые мой принтер отправляет на мой компьютер, и определять, действительно ли сообщение «нормально».Когда он получает ok, он меняет значение sendMessage с 0 на 1.
Я добавил несколько проверок в качестве избыточности, как я начал сам догадываться.Кроме того, это перестало работать сразу после обновления Visual Studio 2019, поэтому я не уверен, связано ли это с этим.Любая помощь будет принята с благодарностью.
private: void ReadFromSerial()
{
// Initializes cancel function as false
cancelPrint = 0;
// Reads data while printer is connected
try
{
while (this->serialPort->IsOpen)
{
if (cancelPrint == 1)
{
MessageBox::Show("Closing read loop due to cancelPrint = 1");
break;
}
String^ ok = "ok";
String^ message = this->serialPort->ReadLine();
if ((this->serialPort->ReadLine() == ok) || (this->serialPort->ReadLine() == "ok") || (message == "ok") || (message == ok))
sendMessage = 1;
}
MessageBox::Show("Port in read no longer open");
}
catch (Exception^ e)
{
MessageBox::Show("Unknown error in read thread");
cancelPrint = 1;
}
}