|
Windows7: прием байтов через COM-порт без потерь, Кто-то имеет личный опыт? чем побороть потерю отдельных байтов? |
|
|
|
May 22 2017, 06:27
|
Гуру
     
Группа: Свой
Сообщений: 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. куда копать? Сильно надеюсь что моя программа виновата. На другом железе пробовал- эффект тот же, то есть это не электроника глючит. С приоритетами игрался, никакого эффекта. Заранее спасибо за любые советы (по существу).
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|