1 / 1 / 2
Регистрация: 18.10.2014
Сообщений: 80
|
|
1 | |
Чтение COM-порта с заданным периодом26.11.2018, 14:54. Показов 1731. Ответов 3
Есть необходимость в режиме реального времени читать данные с порта и выводить на экран. Скорость данных достаточно большая, поэтому если читать и выводить каждое значение, то графический интерфейс не успевает.
Было принято решение читать и выводить данные с промежутком в 15 ms. Но тогда возникает другая проблема: если чередовать чтение и задержку,то будут считаны оставшиеся данные (которые поступили 15 ms назад и все еще лежат во входном буфере), а не те, которые поступили только что. Пробовал перед чтением очищать буфер через DiscardInBuffer(), но эта операция очень длительная, секунды две отнимает (без нее все работает быстро). Какие есть варианты выхода из этой ситуации?
0
|
26.11.2018, 14:54 | |
Ответы с готовыми решениями:
3
Реалтаймовое чтение из Serial порта Чтение данных с COM порта в реальном времени c# SerialPort.ReadExisting Чтение байтов из последовательного порта Чтение данных из COM порта без тормозов на форме |
26.11.2018, 15:32 | 2 |
Не по теме: Не упоминайте "реальное время" в контексте C#, а то придёт Какая скорость обмена? Какой тип выдачи данных, только по запросу или постоянно?
0
|
1 / 1 / 2
Регистрация: 18.10.2014
Сообщений: 80
|
|
26.11.2018, 15:57 [ТС] | 3 |
38 400 бод, данные по кабелю приходят постоянно
0
|
26.11.2018, 16:11 | 4 |
Сообщение было отмечено Eluv как решение
Решение
Считать в буфер количество байт в одном пакете.
Сложить в очередь (ли другой буфер). Проверить содержимое очереди. Если в неё есть целый пакет, вычитать его и удалить из очереди. Данные поместить в переменную. Которую основной поток программы читает по таймеру и выводит на экран. Добавлено через 4 минуты 15 мс в label не нужно - всё равно не разглядите. А если на график надо, дополняйте его сразу несколькими точками с отметками времени по X.
1
|
26.11.2018, 16:11 | |
26.11.2018, 16:11 | |
Помогаю со студенческими работами здесь
4
Чтение COM-порта: медленный вывод в textBox несколько тысяч строк (метод AppendText) Чтение из com порта Асинхронное чтение последовательного порта. MVVM Чтение из серийного порта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |