Мониторинг ком порта на Visual С#
- Войдите на сайт для отправки комментариев
Пнд, 29/10/2012 - 18:52
З ардуино отправляется даные на компорт! Нужно постоянно выводить все ето в textBox непрерывно
for (int i = 0; i <= 1; ) //початок циклу опитування потру { Timer t = new Timer(); //затримка для читання порту t.Interval = 50; t.Enabled = true; //старт таймера c = serialPort1.ReadLine(); textBox1.Text = с; serialPort1.DiscardInBuffer(); //очистка буферу прийому порту }
все работает, все даные которые приходят на порт с дуины отображаются в textBox1, но ето бесконечний цикл а вот нужно теперь добавить кнопки и другие елементы. Но так как пока работает етот цикл ничего в программе зделать нельзя, даже кнопку нажать. Помогите если ктото имел дело с етим. Спасибо.
Беда-огорчение, немного не отдюда вопрос, но не страшно.
Ваша программа, особенно если она WinForms - делает за миллисекнды множество действий, таких как отслеживание мышки и перерисовка контента под ней, отслеживание нажйтий кнопок и прочей дребедени. Вы даже не задумываетесь об этом, потому как это все возложено на плечи вашей ОС.
А вы берете и в бесконечном цикле основного потока нарушаете эту идиллию! Разумеется все будет виснуть тупить и склеивать ласты.
Почитайте первым делом по потоки. Там нет ничего сложного но все же это решит вашу проблему. Создаете поток, и в нем получаете данные и обновляете ваш текст бокс.
Все намного проще чем создвать отдельный поток.
Вот пример(код взят тут http://msdn.microsoft.com/ru-ru/library/system.io.ports.serialport.datareceived.aspx):
Можно и так, в таком случае система сделает большую часть работы сама, через ивенты. Оданако это тоже работает не без потоков и по-хорошему, работу с ними тоже надо изучить чтобы не бояться их применять.