Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 2
Регистрация: 18.10.2014
Сообщений: 80
1

Чтение COM-порта с заданным периодом

26.11.2018, 14:54. Показов 1731. Ответов 3
Метки uart (Все метки)

Author24 — интернет-сервис помощи студентам
Есть необходимость в режиме реального времени читать данные с порта и выводить на экран. Скорость данных достаточно большая, поэтому если читать и выводить каждое значение, то графический интерфейс не успевает.
Было принято решение читать и выводить данные с промежутком в 15 ms. Но тогда возникает другая проблема: если чередовать чтение и задержку,то будут считаны оставшиеся данные (которые поступили 15 ms назад и все еще лежат во входном буфере), а не те, которые поступили только что. Пробовал перед чтением очищать буфер через DiscardInBuffer(), но эта операция очень длительная, секунды две отнимает (без нее все работает быстро).
Какие есть варианты выхода из этой ситуации?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2018, 14:54
Ответы с готовыми решениями:

Реалтаймовое чтение из Serial порта
Суть такова. Надо читать из COM порта во времени приближенном к реальному. Чтение с помощью...

Чтение данных с COM порта в реальном времени
Как осуществить данную задачу при нажатии на кнопку?

c# SerialPort.ReadExisting Чтение байтов из последовательного порта
Доброе время суток. Подскажите пожалуйста каким образом используя SerialPort.ReadExisting прочитать...

Чтение данных из COM порта без тормозов на форме
Здравствуйте. Не пинайте сильно, я знаю, что таких тем много на форуме, я их все(по крайней мере,...

3
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,659
Записей в блоге: 14
26.11.2018, 15:32 2

Не по теме:

Цитата Сообщение от Eluv Посмотреть сообщение
в режиме реального времени читать данные
Не упоминайте "реальное время" в контексте C#, а то придёт Неназываемый и утащит тему в холивары, где и завалит её срачем.


Какая скорость обмена? Какой тип выдачи данных, только по запросу или постоянно?
0
1 / 1 / 2
Регистрация: 18.10.2014
Сообщений: 80
26.11.2018, 15:57  [ТС] 3
38 400 бод, данные по кабелю приходят постоянно
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,659
Записей в блоге: 14
26.11.2018, 16:11 4
Лучший ответ Сообщение было отмечено Eluv как решение

Решение

Считать в буфер количество байт в одном пакете.
Сложить в очередь (ли другой буфер).
Проверить содержимое очереди.
Если в неё есть целый пакет, вычитать его и удалить из очереди.
Данные поместить в переменную.
Которую основной поток программы читает по таймеру и выводит на экран.

Добавлено через 4 минуты
15 мс в label не нужно - всё равно не разглядите.
А если на график надо, дополняйте его сразу несколькими точками с отметками времени по X.
1
26.11.2018, 16:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2018, 16:11
Помогаю со студенческими работами здесь

Чтение COM-порта: медленный вывод в textBox несколько тысяч строк (метод AppendText)
Доброго времени суток! Читаю данные с последовательного порта. Конвертирую каждые три байта и...

Чтение из com порта
есть устройство посылающее данные в ком порт. нужно их прочитать и сделать запрос на sql сервер. я...

Асинхронное чтение последовательного порта. MVVM
Здравствуйте уважаемые форумчане! Такая проблема. Писал код, для чтения com порта на c# form еще,...

Чтение из серийного порта
Доброго времени суток! Снова нужна ваша помощь. Надо читать информацию из последовательного порта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru