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

 
 
> 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
 
Start new topic
Ответов
Ruslan1
сообщение May 29 2017, 10:57
Сообщение #2


Гуру
******

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



Поздравляю всех с началом новой рабочей недели!
(хотя кто-то уже, наверное, и пиво пьет в тенечке...)

В-общем, проблема вроде бы не в методах межпоточного взаимодействия.
На данный момент ситуация такова:
Сниффер (Free device monitoring Studio от HHD) показывает те же самые проблемы как и моя программа - то есть он уже не видит те же байты, которые я не вижу.
Подключенный ко входу логический анализатор показывает что все байты корректно долетают до разъема DB9 на компьютере.
Сейчас тестирую на моем Dell D620- у него ком порт есть прямо внутри. И, кстати, ошибки ловит чаще чем 1037U, на котором штатно должно крутиться.

Подключил переходник Serial-USB (FTDI) и пустил через него. Разница есть.
Пока что один раз что-то словил, но это может быть и реальный шум. Прямой ком-порт уже бы раз 10 поймал за это время.

Пойду еще раз покурю что у меня там за уровни в COM-порт подаются, может все-таки там какие-то просадки кратковременные.
Ведь ежели сниффер тоже не ловит, а на входе сигнал есть, и переход на USB помогает- то какие выводы из этого следуют?

потери выглядят вот так. Сместил байты принятые сниффером, где пусто- это сниффер ничего не принимал.
(смещение в корректном пакете, время анализатора, корректный байт из логического анализатора, байт из сниффера)
это один пакет, 2 байта плюс 1 байт не приняты.

98 44.301759 0x3F 3f
99 44.301846 0x4D 4d
100 44.301933 0x0B 0b
101 44.30202 0xC1 c1
102 44.302107 0x40 40
103 44.302194 0x86
104 44.302281 0x36
105 44.302367 0xC1 c1
106 44.302454 0x40 40
107 44.302541 0x9B 9b
...
120 44.303671 0x52 52
121 44.303757 0xC1 c1
122 44.303844 0x3B
123 44.303931 0x28 28
124 44.304018 0xAC ac
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
- - 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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