2017-02-08 3 views
-1

Итак, я уже решил отправить Arduino в мою проблему с GUI (активно получил). Но грустно сказать, что появляется еще одна проблема. Я не могу обновить свой графический интерфейс, используя функции моего графического интерфейса, такие как Disabler() - >>, которые будут отключать кнопки.SerialDataReceived Проблемы с событием

Итак, вот мой пример кода.

Для моих данных Полученного события

private void Senport_DataReceived(Object sender, SerialDataReceivedEventArgs e) 
    { 
     SerialPort Senport = (SerialPort)sender; 
     rdata = Senport.ReadLine(); 
     ShowWindow(); 
    } 

Для моей Показать окно Функции

public void ShowWindow() 
    { 

     if(rdata.Contains("FEED")==true) 
     { 
      MessageBox.Show("Feeds already being dispense!","Feeding Process",MessageBoxButton.OK,MessageBoxImage.Information); 

     } 
     else if(rdata.Contains("DRINK")==true) 
     { 
      MessageBox.Show("Drinkable water already being dispense!", "Drinking Water Process",MessageBoxButton.OK,MessageBoxImage.Information); 

     } 
     else if(rdata.Contains("CLEAN")==true) 
     { 
      MessageBox.Show("Cleaning the cage is done!", "Cleaning Process",MessageBoxButton.OK,MessageBoxImage.Information); 

     } 

     else if(rdata.Contains("Fsms")==true) 
     { 
      MessageBox.Show("Feeds Dispensing is starting","Drinking Water Process",MessageBoxButton.OK,MessageBoxImage.Information); 
     } 

     else if(rdata.Contains("Dsms")==true) 
     { 
      MessageBox.Show("Water Dispensing is starting", "Drinking Water Process",MessageBoxButton.OK,MessageBoxImage.Information); 

     } 

     else if(rdata.Contains("Csms")==true) 
     { 
      MessageBox.Show("Cleaning Process is starting", "Cleaning Process",MessageBoxButton.OK,MessageBoxImage.Information); 

     } 
    } 

Но я хотел бы использовать эту функцию ниже, но ошибка исключения выскочит.

public void Disabler() 
    { 
     switch(flagger) 
     { 
      case 1: FEED.IsEnabled=false; FEED2.IsEnabled=false; Clean.IsEnabled=false; break; 
      case 2: Clean.IsEnabled=false; FEED.IsEnabled=false; FEED2.IsEnabled=false; break; 
      case 3: Clean.IsEnabled=false; FEED.IsEnabled=false; FEED2.IsEnabled=false; break; 
     } 
    } 

Как я могу использовать эту функцию? Кстати, ошибка говорит о том, что эта функция не находится в одном потоке. Надеюсь, ты можешь мне помочь: D Спасибо!

+0

«Исключительная ошибка появится», какое исключение или ошибка вы видите? Какова функциональность, выполняемая методом Disbler? Где объявляются «FEED», «FEED2», «Clean» и т. Д.? –

+0

Говорят, я могу использовать его, потому что он находится в другом потоке. Функция Disabler() - отключить кнопки для того, сколько секунд или часов. Так что я описываю это выше. –

+0

Got it ... Как и где вы вызываете метод Disabler()? можете ли вы объяснить пример использования или функциональность, которую вы пытаетесь достичь? –

ответ

0

Таким образом, это ошибка исключения, которая появится. Когда я пытаюсь поместить функцию Disabler(); внутри в каждом выражении if функции ShowWindow();