|
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. куда копать? Сильно надеюсь что моя программа виновата. На другом железе пробовал- эффект тот же, то есть это не электроника глючит. С приоритетами игрался, никакого эффекта. Заранее спасибо за любые советы (по существу).
|
|
|
|
|
 |
Ответов
|
May 22 2017, 08:15
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
Цитата(Ruslan1 @ May 22 2017, 10:27)  Есть поток, принимающий все байты по прерываниям и валящий в большой кольцевой буфер. И другой поток периодически выгребает байты из буфера и делит на пакеты для обработки, проверяет валидность. Вот это место непонятно - для каждого порта свой буфер, или общий на все порты? выпадание байта определяете по сбою crc? Что Вы называете "приемом по прерыванию"? У выни свои прекрасные дрова для КОМ, и даже целый специальный апи в ядро встроен под устройства Comm - модемы проще. все известные мне либы в борланде являются прокладкой к этому стандартному АПИ. напрямую с прерыванием никто не работает. проблем с потерями не было, хотя обмен бывал интенсивный - мегабод. можно посоветовать покрутить : 1)объем буфферов кома (я делал 8кб) 2)приоритет нитки приемника сделать выше нормального 3)если у вас между пакетами есть пауза более 1мс, настроить ее в свойствах таймингов кома. в запросах асинхронного чтения возможно оно поможет АПИ возвращать целиком пакет а не куски случайно презанные. 4)какая может быть гарантия что порт вашего ПК видит ваш поток без потерь, даже если ваш снифер прекрасен? Вы в качестве снифера тот же самый ПК используете? 5) можно поставить прокси с журналированием на ком (я пользовал com0project, но их вроде множество разных), и уже к нему подключать вашу программу. в этом случае вы сможете сравнить поток принятый прокси с потоком принятым вашей софтиной. 6) вы журналировали поток считанный из порта, сравнить его с финальными нарезанными пакетами? точно эти байты не считываются из порта?
Сообщение отредактировал AlexRayne - May 22 2017, 08:22
|
|
|
|
|
May 22 2017, 12:23
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
AlexRayne, большое спасибо за конструктивный ответ с кучей хороших идей! Что именно Вы имеете в виде когда говорите про "прекрасные дрова для КОМ, и даже целый специальный апи в ядро встроен под устройства Comm"? Что именно советуете почитать-посмотреть, может даже применительно к простоте прикручивания в Билдер? Я раньше работал по поллингу, и задачи другие были. А сейчас решил по прерываниям сделать, нашел понятное мне описание в интернете(ссылка в моем письме)- по нему и сделал. Если уже есть компонент а или просто апишная функция "брать все байты из порта и кидать в большой пользовательский кольцевой буфер" - было бы замечательно. В пятом Билдере ставил пакет TurboPower Async Professional, но использовал по поллингу. Сейчас на новый (хихи) 6-й билдер перешел и думал без сторонних компонентов обойтись. И это не железо, я пробовал на другом компьютере- эффект тоже имеет место быть. И это действительно потеря в машине- прямо на порт включал независимый лог анализатор, и после сравнивал содержимое буферов его и моей программы. Очень хочется для начала локализовать проблему, и Ваши советы мне отлично подходят- не подумал про независимый сниффер-программу прямо на этой машине. Очень надеюсь что проблема в моем коде- тогда есть большая вероятность ее решения
|
|
|
|
|
May 23 2017, 09:20
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
Цитата(Ruslan1 @ May 22 2017, 16:23)  AlexRayne, большое спасибо за конструктивный ответ с кучей хороших идей! Что именно Вы имеете в виде когда говорите про "прекрасные дрова для КОМ, и даже целый специальный апи в ядро встроен под устройства Comm"? Что именно советуете почитать-посмотреть, может даже применительно к простоте прикручивания в Билдер? Вот это именно и имел ввиду - что вы путаете всех использованием слова "драйвер". В венде уже написаны дрова под множество материнок и уж тем более под известные стандартные контроллеры УАРТ. Вот они как раз напрямую с железом и прерыванием работают. писать их не требуется - они готовы и встроены в Ось. Овь прелагает довольно простое стандартное АПИ для работы с Сомм портами. Если вы поставили борланд - покурите их хелпы Win32 SDK или чтото вроде этого. Это огромный хелп по всем ресурсам венды. и в частности там описан и Comm интерфейс. Если вы полезете в изходники АсинкПро - то наглядно увидите как вендовые вызовы используются. АсинкПро - это обертка вендовых вызовов. Когда я говорю "прекрасные" - значит они есть работают, отлажены, и проверены. (и удобны) Цитата(Ruslan1 @ May 22 2017, 16:23)  AlexRayne, большое спасибо за конструктивный ответ с кучей хороших идей!
Если уже есть компонент а или просто апишная функция "брать все байты из порта и кидать в большой пользовательский кольцевой буфер" - было бы замечательно. В пятом Билдере ставил пакет TurboPower Async Professional, но использовал по поллингу. Сейчас на новый (хихи) 6-й билдер перешел и думал без сторонних компонентов обойтись. Большой буфер уже предоставляет Сомм интерфейс, размер его можно настраивать, по моей памяти он по умолчанию 4кБ делается. собственно из него и читается данные порта обычными файловыми чтениями. По моему опыту - оказалось проще работать без оболочек, напрямую. это не требует стороннего кода и возни со сторонними пакетами. требует освоения навыка работы с асинхронными вызовами венды чтения\записи файла - там их называют почемуто overlaped Цитата(Ruslan1 @ May 22 2017, 16:23)  AlexRayne, большое спасибо за конструктивный ответ с кучей хороших идей! И это не железо, я пробовал на другом компьютере- эффект тоже имеет место быть. И это действительно потеря в машине- прямо на порт включал независимый лог анализатор, и после сравнивал содержимое буферов его и моей программы. но чтобы окончательно убедиться снифьте ваш траффик на этой же самой машине, либо через прокси, либо тупо на другой порт палралельно сигнал заведите и с него все в журнал. Вам уже посоветовали использовать 1,5-2 стопбита. это хорошее предложение, если оно конечно возможно для ваших абонентов. С адаптерами КОМ-УСБ советую не играться если есть нормальный порт на матери или PCI плате ввода вывода. Я встретил кривой адаптер от МОХи, народ жаловался на ФТДИ - у обоих проблемы с буфером приемника на больших трафиках.
|
|
|
|
|
May 23 2017, 11:17
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(AlexRayne @ May 23 2017, 12:20)  Вот это именно и имел ввиду - что вы путаете всех использованием слова "драйвер". Хм. Обычно я стараюсь следить за тем что говорю и не "путать" людей. Например я ни разу нигде не упоминал слово "Драйвер". Я также дал ссылку на то на базе чего писал софт. И в том документе тоже их программа ни разу нигде не названа драйвером. Цитата(AlexRayne @ May 23 2017, 12:20)  В венде уже написаны дрова под множество материнок и уж тем более под известные стандартные контроллеры УАРТ. Вот они как раз напрямую с железом и прерыванием работают. писать их не требуется - они готовы и встроены в Ось. Овь прелагает довольно простое стандартное АПИ для работы с Сомм портами. Если вы поставили борланд - покурите их хелпы Win32 SDK или чтото вроде этого. Это огромный хелп по всем ресурсам венды. и в частности там описан и Comm интерфейс. Если вы полезете в изходники АсинкПро - то наглядно увидите как вендовые вызовы используются. АсинкПро - это обертка вендовых вызовов. То есть из Ваших слов следует, что предложенный по моей ссылке способ использования винапишных функций негодный, так как Вы советуете мне начинать с нуля и смотреть на другие функции? Я правильно понял? Я понимаю, что "АсинкПро - это обертка вендовых вызовов", я не знаю каких. Поэтому и спросил, что именно вызывать-то и как это использовать чтобы побороть потерю байтов. Спасибо, буду читать про Comm. Цитата(AlexRayne @ May 23 2017, 12:20)  Вам уже посоветовали использовать 1,5-2 стопбита. это хорошее предложение, если оно конечно возможно для ваших абонентов. Это не предложение а костыль. Чтобы его применить- нужны аргументы и пояснения, почему "8N1" теряет байты, а вот "8N2" - уже "хорошее предложение". То есть у Винды (или у моего FIFO в железе) есть глюк, полное исправление которого возможно удлинением времени передачи байта на 1 бит? Цитата(AlexRayne @ May 23 2017, 12:20)  С адаптерами КОМ-УСБ советую не играться если есть нормальный порт на матери или PCI плате ввода вывода. Я встретил кривой адаптер от МОХи, народ жаловался на ФТДИ - у обоих проблемы с буфером приемника на больших трафиках. Попробую, конечно, вдруг таки да, но только на столе. В проекте не покатит- система необслуживаемая и увеличивать количество возможных проблем добавкой USB канала совсем не хочется. Особенно при наличии нормальных COM-портов. Кстати да, просто опять поставить АсинкПро и попробовать из-под него тоже неплохая идея- вряд ли я сделаю общение с виндовыми апи лучше чем они. Или есть что-то еще уровня Асинк Про для стареньких билдеров?
|
|
|
|
|
May 23 2017, 15:09
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
Цитата(Ruslan1 @ May 23 2017, 15:17)  Хм. Обычно я стараюсь следить за тем что говорю и не "путать" людей. Например я ни разу нигде не упоминал слово "Драйвер". Я также дал ссылку на то на базе чего писал софт. И в том документе тоже их программа ни разу нигде не названа драйвером. Да действительно не используете. видимо слово "прерывание" меня в ступор ввело, и многочисленные упоминания как работает контроллер УАРТА. напрямую с контроллером ,кроме драйвера, ведь венда никому работать не даст. Цитата(Ruslan1 @ May 23 2017, 15:17)  То есть из Ваших слов следует, что предложенный по моей ссылке способ использования винапишных функций негодный, так как Вы советуете мне начинать с нуля и смотреть на другие функции? Я правильно понял? Нет, я советую как раз не тратить время на различные компоненты и библиотеки билтера - коли в них есть сомнения а идти прямиком на винапи. Цитата(Ruslan1 @ May 23 2017, 15:17)  Это не предложение а костыль. Чтобы его применить- нужны аргументы и пояснения, почему "8N1" теряет байты, а вот "8N2" - уже "хорошее предложение". То есть у Винды (или у моего FIFO в железе) есть глюк, полное исправление которого возможно удлинением времени передачи байта на 1 бит? когда у вас появятся помехи на линии, вы вспомните про этот костыль. потому что 8N1 не имеет никакого признака начала фрейма за исключением качественной синхронизации 2х абонентов. как правило эта синхронизация регулярно обновляется появлением пауз между байтами. но если вы шлете долго долго плотный поток на предельной скорости - нет никакого способа приемнику определить начало байта. Цитата(Ruslan1 @ May 23 2017, 15:17)  Кстати да, просто опять поставить АсинкПро и попробовать из-под него тоже неплохая идея- вряд ли я сделаю общение с виндовыми апи лучше чем они. Или есть что-то еще уровня Асинк Про для стареньких билдеров? работа с винапи будет не сложнее, У вас все нормально же написано. сделать сильно проще не получится. Цитата(XVR @ May 23 2017, 18:06)  Вызов Synchronize(RxDataProcessing); из нити чтения COM порта тормозит эту самую нить до тех пор, пока RxDataProcessing не вернется. Видимо это может быть долго и байт другой может потеряться. Более того, совершенно непонятно почему у вас эта самая RxDataProcessing вызывается как из главной формы (по таймеру), так и из COM нити - это явно неправильно. Далее, при вызове RxDataProcessing из main потока она у вас читает и модифицирует переменные, которые используются в COM потоке (RxBuff.wrpnt) - это совершенно недопустимо. В общем вам надо переработать схему передачи прочтенных данных между нитями. +1 Все еще хуже Synchronize тут использовать это жупел. он делает блокируеще исполнение RxDataProcessing в нитке VCL - когда все формочки перерисовываются. это тормоз который трудно описать. используйте сигналы (Event) или семафоры чтобы передавать другой нитке ваш буфер. да и обработку этого буфера лучше перенести сюда из нитки VCL , и отдавать уже гтовые распознаные и провереные пакеты.
Сообщение отредактировал AlexRayne - May 23 2017, 15:11
|
|
|
|
|
May 23 2017, 17:13
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Большое спасибо всем за кучу отличных идей и советов, буду разбираться! Спасибо за замечание про Synchronize, именно по озвученным причинам я этот метод и не использую (вначале использовал, но в процессе борьбы с теряющимися байтами перестал). Сильно извиняюсь что не удалил из текста неиспользуемые строки. Они там просто закомментарены в том исходнике который вы смотрите, и снабжены комментарием: Цитата //the method is changed, just periodic polling in main task by a timer // Synchronize(RxDataProcessing); То есть эта нитка сама по себе и валит в глобальный буфер, не останавливаясь на этот Synchronize(). Цитата(XVR @ May 23 2017, 16:06)  Вызов Synchronize(RxDataProcessing); из нити чтения COM порта тормозит эту самую нить до тех пор, пока RxDataProcessing не вернется. Видимо это может быть долго и байт другой может потеряться. там "//" перед этим, есть строка не используется. Цитата(XVR @ May 23 2017, 16:06)  Далее, при вызове RxDataProcessing из main потока она у вас читает и модифицирует переменные, которые используются в COM потоке (RxBuff.wrpnt) - это совершенно недопустимо. О!! вот тут может и есть мой ошибк. Я думал что достаточно их как volatile объявить и использовать. Цитата(XVR @ May 23 2017, 16:06)  В общем вам надо переработать схему передачи прочтенных данных между нитями. дада, спасибо, буду думать. А как без Synchronize это сделать? неужто через глобальные переменные нельзя? Просто скажите в каком направлении копать, я копать умею только где не знаю.... (Upd: извиняюсь, уже прочитал совет про евенты и семафоры, значит через них буду. Тогда уже сразу про очереди поищу, чтоб просто мессадж с новым указателем записи передать в ожидающую нитку- надеюсь оно тут есть где-то). Цитата(XVR @ May 23 2017, 16:06)  Далее, конструкция if (RxBuff.wrpnt >= RX_RINGBUFF_SIZE) RxBuff.wrpnt = 0; не должна срабатывать никогда. Это переполнение приемного буфера. Надо бы ее отследить и показать пользователю, а не тихо выбрасывать все, что накопилось  У меня классический кольцевой буфер, в который один процесс что-то записывает по указателю записи, другой процесс -что-то читает по указателю чтения. Само собой, когда-то доходим до конца буфера и должны следующий байт в его начало записать. Я не понял Вашу идею про "никогда". Указатель записи доходит до RX_RINGBUFF_SIZE периодически, каждые RX_RINGBUFF_SIZE байт.
|
|
|
|
|
May 23 2017, 20:00
|
Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877

|
Цитата(Ruslan1 @ May 23 2017, 20:13)  дада, спасибо, буду думать. А как без Synchronize это сделать? неужто через глобальные переменные нельзя? Просто скажите в каком направлении копать, я копать умею только где не знаю.... (Upd: извиняюсь, уже прочитал совет про евенты и семафоры, значит через них буду. Тогда уже сразу про очереди поищу, чтоб просто мессадж с новым указателем записи передать в ожидающую нитку- надеюсь оно тут есть где-то). Можно конечно и глобальные. а передавать сигнал гтовности другой нитке никоим образом не через Synchronize, а нормальными примитивами синхронизации потоков. классический вариант - семафор (у венды есть более облегченная версия - Event, но это малость несоотвествует задаче). надо собрать из вашего кольцевого буфера пакет, положить его в глобальную переменную, и отдать семафор сторонней принимающей нитке, или както просигналить что готово. както так. Цитата(Ruslan1 @ May 23 2017, 20:13)  У меня классический кольцевой буфер, в который один процесс что-то записывает по указателю записи, другой процесс -что-то читает по указателю чтения. Само собой, когда-то доходим до конца буфера и должны следующий байт в его начало записать. Я не понял Вашу идею про "никогда". Указатель записи доходит до RX_RINGBUFF_SIZE периодически, каждые RX_RINGBUFF_SIZE байт. С RX_RINGBUFF_SIZE - у вас все правильно, но переполнение кольцевого буфера вы действительно не контролируете. некрасиво это. я ушел от кольцевого буфера, ибо гемора с ним много - следить где голова где хвост. использую линейный буфер - в котором надо накопить целый пакет. как только пакет набрался - отдаю его, а остаток буфера перемащаю в начало. такая схема позволяет использовать чтение с заданием требуемой длинны, а не как у вас сейчас - ожидание любого события. событий летит много и часто, поэтому лучше использовать блокирующее чтение, и задать длину пакета. буфер в этом случае нужен чтобы проконтроливать качество полученного из порта, и откинуть ненужный мусор если он прилетит.
Сообщение отредактировал AlexRayne - May 23 2017, 20:06
|
|
|
|
Сообщений в этой теме
Ruslan1 Windows7: прием байтов через COM-порт без потерь May 22 2017, 06:27       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
|
|
|