реклама на сайте
подробности

 
 
> Windows7: прием байтов через COM-порт без потерь, Кто-то имеет личный опыт? чем побороть потерю отдельных байтов?
Ruslan1
сообщение May 22 2017, 06:27
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Здравствуйте!
Есть Windows7 Pro, 32-bit, компьютер- китайский одноплатник на Intel 1037U, 4GB RAM.
СОМ-порты- 4 штуки прямо на материнке.
И есть внешний передатчик, посылающий в COM-порт пакеты.
Скорость- 115200, стандартный формат 8N1.
Длина пакета- не более 255 байт, межпакетный интервал- не менее 4 байт, часто гораздо больше (десятки миллисекунд). Каждый пакет имеет контрольную сумму (crc16), по которой и принимается решение о валидности пакета. Общая загрузка канала где-то 5-8 килобайт в секунду, то есть до 80%. Загрузка CPU около 10-15%.

И есть самописная программа на С++Билдере (6), данный вариант делался по прерываниям, с несколькими потоками (базой был вот этот документ).
Есть поток, принимающий все байты по прерываниям и валящий в большой кольцевой буфер. И другой поток периодически выгребает байты из буфера и делит на пакеты для обработки, проверяет валидность.

Только прием, никаких переключений на передачу.
В результате приемник иногда пропускает байты. То есть все принятые байты всегда совпадают с переданными, но некоторые байты пропущены. Всегда пропущено не более одного байта за раз, в любом месте пакета. Часто бывает что пропущено по одному байту в двух следующих друг за другом пакетах.

Обычно фактов потери байта где-то 10-20 в сутки. Корреляция с действиями Виндоуса пока не найдена, очень уж все случайно.
Потери именно в компьютере- подключенный прямо к этому же разъему логический анализатор исправно ловит все байты, никакого криминала или отклонений во времянке не обнаружено (по уровню тоже все без проблем)


Вопросов два:
1. Кто-то в подобных условиях добивался абсолютно безошибочного приема потока через COM-порт в Виндоус (7) на 115200?
2. куда копать? Сильно надеюсь что моя программа виновата. На другом железе пробовал- эффект тот же, то есть это не электроника глючит.
С приоритетами игрался, никакого эффекта.

Заранее спасибо за любые советы (по существу).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ruslan1   Windows7: прием байтов через COM-порт без потерь   May 22 2017, 06:27
- - AlexRayne   Цитата(Ruslan1 @ May 22 2017, 10:27) Есть...   May 22 2017, 08:15
|- - Ruslan1   AlexRayne, большое спасибо за конструктивный ответ...   May 22 2017, 12:23
||- - AlexRayne   Цитата(Ruslan1 @ May 22 2017, 16:23) Alex...   May 23 2017, 09:20
||- - Ruslan1   Цитата(AlexRayne @ May 23 2017, 12:20) Во...   May 23 2017, 11:17
||- - AlexRayne   Цитата(Ruslan1 @ May 23 2017, 15:17) Хм. ...   May 23 2017, 15:09
||- - Ruslan1   Большое спасибо всем за кучу отличных идей и совет...   May 23 2017, 17:13
||- - AlexRayne   Цитата(Ruslan1 @ May 23 2017, 20:13) дада...   May 23 2017, 20:00
||- - AHTOXA   Добавлю в копилку способов передачи данных от пото...   May 24 2017, 07:07
|- - Lagman   Цитата(AlexRayne @ May 22 2017, 11:15) Чт...   May 22 2017, 12:59
- - neiver   Начинать надо с того, что COM порт вообще и его ре...   May 22 2017, 08:25
|- - AlexRayne   Цитата(neiver @ May 22 2017, 12:25) Начин...   May 22 2017, 08:37
|- - sonycman   Цитата(neiver @ May 22 2017, 12:25) Начин...   May 22 2017, 13:48
||- - jcxz   Цитата(sonycman @ May 22 2017, 15:48) Тож...   May 25 2017, 22:14
||- - AHTOXA   Цитата(jcxz @ May 26 2017, 03:14) Хмм... ...   May 26 2017, 07:05
||- - jcxz   Цитата(AHTOXA @ May 26 2017, 09:05) Да, г...   May 26 2017, 10:14
||- - AHTOXA   Цитата(jcxz @ May 26 2017, 15:14) Читать ...   May 26 2017, 11:23
||- - jcxz   Цитата(AHTOXA @ May 26 2017, 13:23) Если ...   May 26 2017, 12:38
||- - V_G   Цитата(jcxz @ May 26 2017, 22:38) Мне его...   May 26 2017, 13:42
|||- - jcxz   Цитата(V_G @ May 26 2017, 15:42) А вот фу...   May 26 2017, 16:13
|||- - XVR   Цитата(jcxz @ May 26 2017, 19:13) Я вот н...   May 26 2017, 19:11
||||- - AlexRayne   ЦитатаЯ вот не пойму - а в чём плюс-то такого разд...   May 26 2017, 20:19
|||- - V_G   Цитата(jcxz @ May 27 2017, 02:13) Вот зде...   May 26 2017, 22:47
|||- - jcxz   Цитата(V_G @ May 27 2017, 00:47) Речь вед...   May 29 2017, 08:12
||- - XVR   Цитата(jcxz @ May 26 2017, 15:38) Затем, ...   May 26 2017, 14:15
||- - AHTOXA   Цитата(jcxz @ May 26 2017, 17:38) А если ...   May 27 2017, 00:28
|- - XVR   Цитата(neiver @ May 22 2017, 11:25) У ста...   May 23 2017, 11:20
|- - Ruslan1   Цитата(XVR @ May 23 2017, 13:20) Чтение э...   May 23 2017, 12:42
|- - V_G   Цитата(Ruslan1 @ May 23 2017, 22:42) Я то...   May 23 2017, 13:33
- - rx3apf   1. Дурацкий вопрос - а порты вообще с FIFO ? И оно...   May 22 2017, 15:55
- - Raven   Если Wind'а иногда не успевает выгребать данны...   May 22 2017, 16:10
- - DS   В 7 похоже, есть баг в COM драйвере. Многие програ...   May 22 2017, 19:49
- - ViKo   Я пересылал в комп пакеты данных на скорости 11520...   May 23 2017, 05:09
|- - V_G   Цитата(ViKo @ May 23 2017, 15:09) Я перес...   May 23 2017, 05:39
|- - Ruslan1   Цитата(ViKo @ May 23 2017, 08:09) Я перес...   May 23 2017, 10:48
- - ViKo   Возможно, фантазирую, детально не вникал, полагаю,...   May 23 2017, 07:09
|- - @Ark   Вероятная причина, все-таки, несовпадение тактовых...   May 23 2017, 11:04
|- - krux   Цитата(@Ark @ May 23 2017, 14:04) Вероятн...   May 23 2017, 12:51
|- - @Ark   Цитата(krux @ May 23 2017, 15:51) считаю,...   May 23 2017, 13:15
- - V_G   Кстати, о больших трафиках. Так ли они необходимы?...   May 23 2017, 09:30
- - ViKo   Я не сутками пересылал, а кадрами. По ним - обрабо...   May 23 2017, 10:52
- - ViKo   Посмотрел, сколько стопов использую, оказалось, 1....   May 23 2017, 11:31
|- - Ruslan1   Цитата(ViKo @ May 23 2017, 13:31) Посмотр...   May 23 2017, 12:51
- - XVR   Вызов Synchronize(RxDataProcessing); из нити чтени...   May 23 2017, 14:06
- - XVR   Через Synchronize можно, но в нем должно выполнять...   May 23 2017, 17:58
- - AlexandrY   Цитата(Ruslan1 @ May 22 2017, 09:27) Здра...   May 24 2017, 07:35
|- - Ruslan1   Цитата(AlexandrY @ May 24 2017, 09:35) На...   May 24 2017, 12:53
|- - AlexRayne   Цитата(Ruslan1 @ May 24 2017, 16:53) Спаи...   May 24 2017, 12:55
- - AlexRayne   Напишите хоть в чем выявился источник потерь   May 24 2017, 12:52
|- - Ruslan1   Цитата(AlexRayne @ May 24 2017, 14:52) На...   May 24 2017, 12:55
|- - Timmy   В коде меня удивляет использование overlapped Wait...   May 25 2017, 10:49
- - XVR   WaitForSingleObject вызывать можно. Если WaitCommE...   May 25 2017, 11:14
|- - V_G   Цитата(XVR @ May 25 2017, 21:14) WaitForS...   May 25 2017, 22:37
- - rudy_b   Тут есть стандартная проблема - после приема прише...   May 26 2017, 10:19
|- - jcxz   Цитата(rudy_b @ May 26 2017, 12:19) Вероя...   May 26 2017, 10:33
||- - XVR   Цитата(jcxz @ May 26 2017, 13:33) Принима...   May 26 2017, 11:33
|- - V_G   Цитата(rudy_b @ May 26 2017, 20:19) Тут е...   May 26 2017, 11:59
- - Ruslan1   Поздравляю всех с началом новой рабочей недели...   May 29 2017, 10:57
- - XVR   Ваш снифер умеет показывать ошибки от COM порта? Е...   May 29 2017, 11:07
|- - V_G   Цитата(XVR @ May 29 2017, 21:07) Ну и уро...   May 29 2017, 11:31
|- - XVR   Цитата(V_G @ May 29 2017, 14:31) Стандарт...   May 29 2017, 11:58
|- - Ruslan1   Цитата(XVR @ May 29 2017, 13:58) Ключевое...   May 29 2017, 12:24
|- - @Ark   Цитата(Ruslan1 @ May 29 2017, 15:24) Ребя...   May 29 2017, 12:39
||- - Ruslan1   Цитата(@Ark @ May 29 2017, 14:39) Вы ниче...   May 29 2017, 12:53
||- - @Ark   Цитата(Ruslan1 @ May 29 2017, 15:53) Там ...   May 29 2017, 13:02
||- - AlexRayne   Цитата(Ruslan1 @ May 29 2017, 16:53) поте...   May 29 2017, 14:32
||- - Ruslan1   Цитата(AlexRayne @ May 29 2017, 16:32) Вы...   May 29 2017, 16:20
||- - @Ark   Цитата(Ruslan1 @ May 29 2017, 19:20) Мы ...   May 29 2017, 17:15
|||- - Ruslan1   Цитата(@Ark @ May 29 2017, 19:15) Мы дожд...   May 29 2017, 19:00
|||- - @Ark   Цитата(Ruslan1 @ May 29 2017, 22:00) тип ...   May 29 2017, 20:06
|||- - Ruslan1   Цитата(@Ark @ May 29 2017, 22:06) Я так п...   May 29 2017, 20:34
||- - AlexRayne   Цитата(Ruslan1 @ May 29 2017, 20:20) Это ...   May 29 2017, 17:59
|- - jcxz   Цитата(Ruslan1 @ May 29 2017, 14:24) Если...   May 30 2017, 08:50
|- - XVR   Цитата(Ruslan1 @ May 29 2017, 15:24) Наде...   May 30 2017, 10:15
|- - @Ark   Цитата(XVR @ May 30 2017, 13:15) О! У...   May 30 2017, 10:23
|- - krux   Цитата(@Ark @ May 30 2017, 13:23) ТС гово...   May 30 2017, 17:28
|- - Ruslan1   Цитата(krux @ May 30 2017, 19:28) Давайте...   May 30 2017, 20:18
|- - @Ark   Цитата(Ruslan1 @ May 30 2017, 23:18) Upd:...   May 30 2017, 21:05
|- - XVR   Цитата(Ruslan1 @ May 30 2017, 23:18) Проб...   May 31 2017, 07:06
|- - Ruslan1   Цитата(XVR @ May 31 2017, 09:06) Вы в это...   May 31 2017, 07:28
|- - XVR   Цитата(Ruslan1 @ May 31 2017, 10:28) Слыш...   May 31 2017, 11:38
- - ViKo   Может, на большей скорости попробовать?   May 29 2017, 19:16
- - rx3apf   Я бы в такой ситуации попробовал такой вариант (ну...   May 31 2017, 08:43
- - rx3apf   Ну при чем тут скорость и уровни ? Скорость не сов...   Jun 1 2017, 10:00
|- - XVR   Цитата(rx3apf @ Jun 1 2017, 13:00) Ну при...   Jun 1 2017, 11:25
- - rx3apf   Ошибка кадра должна все ж обрабатываться и как-то ...   Jun 1 2017, 12:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th July 2025 - 23:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.02797 секунд с 7
ELECTRONIX ©2004-2016