Я создал приложение в visual studio 2012 C++. Идея состоит в том, чтобы прочитать данные из последовательного порта и соответствующим образом изменить цвет для метки. Я использовал цикл while для непрерывного изменения цвета. Теперь приложение работает отлично. Проблема заключается в том, что приложение не существует, когда я нажимаю кнопку выхода или кнопку «x» в приложении. Я могу закрыть только в диспетчере задач, нажав на конечную задачу. Ниже приведен код моего приложения. Пожалуйста, дайте мне знать, есть ли способ исправить эту проблемупри использовании цикла while в прогаме приложение не выходит
while(checkBox1->Checked)
{
if(this->serialPort1->IsOpen)
{
int b[4] = {0};
int *ptr1;
ptr1 = b;
//this->serialPort1->DiscardInBuffer();
for (int i=0; i<4; i++)
{
*ptr1 = this->serialPort1->ReadChar();
ptr1++;
}
int address;
address = ((b[0]-48)*10)+(b[1]-48);
System::Windows::Forms::Label^ptr;
switch (address)
{
case 1: ptr = label1;
break;
case 2: ptr = label2;
break;
case 3: ptr = label3;
break;
case 4: ptr = label4;
break;
case 5: ptr = label5;
break;
case 6: ptr = label6;
break;
case 7: ptr = label7;
break;
case 8: ptr = label8;
break;
default: //MessageBox::Show("Default Case");
break;
}
if(b[2]=='o')
{
ptr->BackColor = Color::Red;
ptr->Text="R";
}
else if(b[2]=='a')
{
ptr->Text=String::Empty;
ptr->BackColor = Color::Green;
}
else if(b[2]=='i')
{
ptr->Text=String::Empty;
ptr->BackColor = Color::Blue;
}
if ((b[3]-48)<3)
{
ptr->Text=String::Empty;
ptr->BackColor = Color::SaddleBrown;
//_sleep(5000);
}
ли вы указать тайм-аут чтения? Или тайм-аут по-прежнему установлен на 'InfiniteTimeout' по умолчанию? Если бесконечно, я считаю, что программа зависает в функции блокировки 'ReadChar()'. Для получения дополнительной информации см. [Свойство SerialPort.ReadTimeout] (http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readtimeout%28v=vs.110%29.aspx). – sb9
нет времени. Но если есть проблема с ReadChar(), приложение не будет работать правильно? Приложение может изменять цвет метки, читая последовательные данные –
Нет проблем с 'ReadChar', но без блокировки« ReadChar »до тех пор, пока символ не будет доступен, что затрудняет закрытие приложения, не убивая его. Но при отладке или регистрации не должно возникнуть никаких проблем, чтобы выяснить, зависает ли программа в ReadChar или нет. – sb9