Здравствуйте, пишу на 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 который будет опрашивать порт и если данные есть то добавлять их? Я уже не знаю.