@istimbi
22 years old

MonoDevelop Serial Port?

Здравствуйте, пишу на C# в MonoDevelop, необходимо открыть порт, и в текстбокс помещать все полученные с порта данные, в консольном приложении всё получилось без проблем, когда же попытался создать графическую оболочку то столкнулся с проблемой, форма приложения не загружается, программа как бы слушает порт и не может делать ничего больше, кода принципе минимум, но мучаюсь я с ним уже долго, я не особо силён в программировании. Спасибо за помощь.
using System;
using Gtk;
using System.IO.Ports;
using System.Threading;

public partial class MainWindow: Gtk.Window
{   
   public MainWindow (): base (Gtk.WindowType.Toplevel)
   {
      Build ();
      GetValues ();
   }
   public void GetValues()
   {
      SerialPort sp = new SerialPort ("/dev/ttyAMA0", 9600, Parity.None, 8, StopBits.One);
      sp.Open ();
      if (sp.IsOpen) 
      {
                 while(true)        //I thing this is a problem!
         {
            queue.Buffer.Text += Convert.ToChar (sp.ReadChar ());
                     }
      }

   }

   protected void OnDeleteEvent (object sender, DeleteEventArgs a)
   {
      Application.Quit ();
      a.RetVal = true;
   }

}

Если сделать
if (sp.IsOpen) 
      {  queue.Buffer.Text += Convert.ToChar (sp.ReadChar ());
            
               }

То считается только 1 символ, ReadLine не работает, ReadExisting работает в консольном приложениии. Может быть какой нибудь backgroundworker который будет опрашивать порт и если данные есть то добавлять их? Я уже не знаю.
  • Вопрос задан
  • 402 просмотра
Решения вопроса 1
amf1k
@amf1k
Скорее всего блокируется поток с интерфейсом. Нужно вынести в отдельный поток метод, который слушает порт
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы