2016-01-02 4 views
-2

Я пытаюсь прочитать символ из порта. Запись в порт прекрасно работает, чтение - не так много.Чтение данных из последовательного порта C#

Вот мой код:

private void Com_Port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    char val; 
    try 
    { 
     val = Convert.ToChar(Com_Port.ReadByte()); // get the new byte from port  
     label6.Text = Convert.ToString(val); 
    } 
    catch (Exception) { } 
} 

label6 не изменяет это текст. Код отлично передает данные. Дополнительная информация: Когда я отправляю данные в порт, он возвращает данные обратно мне. Трещин головой над ним в течение последних 4 часов.

+0

Пожалуйста, читать [просить] и [редактировать] Ваш вопрос, чтобы объяснить то, что вы ожидаете увидеть, что на самом деле происходит, и что вы пытались решить эти различия. Мы не можем много сделать, только «не работает». – CodeCaster

+0

_ "label6 не изменяет его текст" _ - поэтому ставьте точку останова в свой пустой 'catch' и проверяйте исключение. – CodeCaster

+0

Событие DataReceived запускается в рабочий поток. Рабочий поток не разрешается обновлять пользовательский интерфейс, требуется BeginInvoke. Не скрывайте исключения. –

ответ

1

Вы также можете использовать метод readexisting попытаться прочитать строку, если строка равна null, что означает некоторые проблемы с оборудованием. если не равно нулю, то обработает вашу строку и извлечь этот конкретный символ

private void Com_Port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     char val; 
     try 
     { 
      SerialPort sp = (SerialPort)sender; 
      string data = sp.ReadExisting(); 
      val=Your_method_to_process_string(data); 
      label6.Text = Convert.ToString(val); 
     } 
     catch (Exception) { } 
    } 
Смежные вопросы