-
- Готовясь к рабочим будням, думаю об этой проблеме. И решил что не в софте дело и не в аппаратуре. Детище Билли так меня вставляет... POV(864 знак., 08.01.2013 21:41 - 21:48)
- Попробуйте под ДОС, всё станет совсем ясно:) Часто копаюсь с COM портами под ХР, проблем не замечал. - Kit(08.01.2013 23:21 - 23:25)
- dcb.fAbortOnError=false; ? If this member is TRUE, the driver terminates all read and write operations with an error status if an error occurs. The driver will not accept any further communications operations until the application has acknowledged Kit(50 знак., 27.12.2012 23:40)
- true стоит. А ClearCommError всегда перед началом очередного сеанса вызываю. - POV(28.12.2012 08:18)
- Ну а зачем провоцировать хлипкую винду на глюк?:) - Kit(28.12.2012 12:26)
- true стоит. А ClearCommError всегда перед началом очередного сеанса вызываю. - POV(28.12.2012 08:18)
- Слушай, а на концах линии у тебя терминаторы и подтягивающие резисторы стоят? - FDA(27.12.2012 08:43)
- Ага. И их наличие или отсутствие ни на что не влияет. - POV(27.12.2012 21:38)
- В качестве преобразователей ADAM'ы у тебя используются? - FDA(27.12.2012 21:39)
- Да, ADAM-4520. Адвантековская мультипортовка вообще связи не даёт на этой линии. - POV(27.12.2012 21:48)
- Скорости разные использовал - тоже пофиг. Ибо вешается порт/прога/хрен-знает-что до прихода данных - по мусору. - POV(27.12.2012 21:49)
- Да, ADAM-4520. Адвантековская мультипортовка вообще связи не даёт на этой линии. - POV(27.12.2012 21:48)
- В качестве преобразователей ADAM'ы у тебя используются? - FDA(27.12.2012 21:39)
- Ага. И их наличие или отсутствие ни на что не влияет. - POV(27.12.2012 21:38)
- Проверь, отключено ли управление потоком в настройках винды и у тебя в программе! - FDA(27.12.2012 08:37)
- Отключено. - POV(27.12.2012 21:38)
- В COM-портах много интересного... Не уверен, что он аппаратно виснет. Скорей, программа некорректно его настраивает. Но я не слишком хорошо разбираюсь в виндовой специфике, чтоб наугад говорить. И не факт, кстати, что не виновата программа. А что fk0(132 знак., 26.12.2012 22:40)
- Висло. Нормальная система строилась поверх FOSSIL-драйвера. Скрипач(53 знак., 26.12.2012 22:53)
- Встречал ситуации когда длительный break в линии RXD (или даже активный уровень на входе СTS?), длящийся во время запуска программы, не давал подключить данный COM-порт. Программа считала, что порт уже занят другим процессом. - rezident(26.12.2012 22:32 - 22:34)
- +1. длинный брейк - зло. - Vladimir Ljaschko(27.12.2012 22:04)
- Да запросто AD(264 знак., 26.12.2012 22:27)
- usb-com запросто. Обычные и PCI ни разу такого эффекта не давали - koyodza(26.12.2012 21:50)
- Обычный. И помехи неизвестного происхождения порциями идут. Как искать момент проблем не знаю. Логгирование не помогает понять... POV(281 знак., 26.12.2012 22:13)
- проблемы могут быть в разности напряжения земель оборудования, например. Если нет развязки. Если развязка есть, то в ней самой - koyodza(26.12.2012 22:48)
- Развязка есть. И имеется тока пара, никаких заземлений, экранов и третьих проводов. Пара 1,5 км, видимо срощенная из различных участков. То, что мне видно - это кусок полёвки по воздуху. Метров 200. - POV(27.12.2012 03:01)
- В промышленности положено все сигнальные провода с внешней оплёткой кидать. saifullin(357 знак., 27.12.2012 07:30)
- Не стоит думать, что RS-485 такой нежный. В своё время использовали и дорогущие промышленные кабели, специальной для интерфейса RS-485 с сечением порядка 1 кв. мм. и обычную офисную пару. Результат при скорости 115200 бит/сек одинаковый - на FDA(173 знак., 27.12.2012 08:42)
- Спасибо, учту на будущее. - saifullin(27.12.2012 18:21)
- Не стоит думать, что RS-485 такой нежный. В своё время использовали и дорогущие промышленные кабели, специальной для интерфейса RS-485 с сечением порядка 1 кв. мм. и обычную офисную пару. Результат при скорости 115200 бит/сек одинаковый - на FDA(173 знак., 27.12.2012 08:42)
- В промышленности положено все сигнальные провода с внешней оплёткой кидать. saifullin(357 знак., 27.12.2012 07:30)
- Развязка есть. И имеется тока пара, никаких заземлений, экранов и третьих проводов. Пара 1,5 км, видимо срощенная из различных участков. То, что мне видно - это кусок полёвки по воздуху. Метров 200. - POV(27.12.2012 03:01)
- Открыть в гипертерминале параллельно подключенный порт (физически параллельно RX). Мусор сыпется когда в программе всё зависло? Делаем выводы --> во всём виноваты программисты. - fk0(26.12.2012 22:42)
- Не, мусор есть сам по себе. Если никто не передает. Если начать передавать, то мусор придавливается драйвером и нужный сигнал проходит. Косяк в момент ожидания ответа от устройства. - POV(27.12.2012 02:53)
- IMHO в программе дело... Ещё помнится в fido7.ru.embedded кто-то в своё время FAQ по RS485 писал и там про преамбулу было. Мол BREAK вначале, потом данные. Иначе если приёмник уже заклинило мусором, то пропал весь пакет. Подробностей не помню, но fk0(48 знак., 27.12.2012 14:58)
- Ммм, надо обдумать. На -40 как-то не до "думать" было. - POV(27.12.2012 21:39)
- было следующее соображение.... POV(798 знак., 27.12.2012 21:47)
- Вот есть, например, такой алгоритм Витерби. Или даже, типичный недетерминированный конечный автомат -- вот что собственно нужно для разбора сообщений в потоке мусора. Ну а как гласит теория, любой НКА путём нехитрых механических преобразований fk0(489 знак., 28.12.2012 10:05)
- Программист - это я. И рассчитывал на всякие косяки. Оттого и диагноз поставить не могу. Попробую в общем с нуля код переписать - может выйдет новая реализация без каких-то скрытых сюрпризов. - POV(28.12.2012 14:44)
- Ну-ну. Попробуйте. Скрипач(91 знак., 28.12.2012 20:01)
- "открытие-закрытие" сделано и работает. Но это неприемлемо если оно требуется раз в 10...30 секунд. - POV(28.12.2012 21:59)
- А сколько времени оно занимает?! Секунду? Чудна Вин-дааа :о) - Скрипач(28.12.2012 22:02)
- В моём случае если пропала связь, то она больше не восстанавливается. Хоть час жди... POV(110 знак., 29.12.2012 00:26)
- Не восстанавливается, пока не закроешь/откроешь порт. Та же фигня. А про очередь не понял. Она что, сбрасывается?! - Скрипач(29.12.2012 00:46)
- Нуу, оно вот как-то так... POV(161 знак., 29.12.2012 00:50)
- С ком-портом кто работает? Вы или "библа"? В моем понимании, закрытие/открытие порта занимает времени не больше чем любой другой вызов Win32 API. Я не прав? - Скрипач(29.12.2012 00:54)
- Прав. Но каков критерий пропажи связи? Я жду 5 подряд не отвеченных запросов. Т.е. до 5 секунд (если девайс активен тока один). В это время, например, пользователь нажимает кнопки, а реакции не будет ибо порт косячит. - POV(29.12.2012 01:07)
- ХЗ. Протокол нужно знать. У меня просто. МОДБАС-Мастер всегда знает когда безопасно порт "передернуть". - Скрипач(29.12.2012 01:38)
- Сразу чего-то я не отписался... POV(306 знак., 08.01.2013 21:46)
- Перед тем, как отправлять запрос очередному девайсу, закрой-открой порт. - Скрипач(08.01.2013 21:54)
- На рабочей машине всё как часики. А на удаленной вообще ни одного байта не получает (согласно логу). Всякие задержки после открытия порта не помогают. Шо ж это такое? - POV(15.01.2013 09:21)
- Не знаю. Посмотрел свой говнокод - никаких задержек или других танцев с бубном. Видимо проблема в чем-то другом. Поменять персоналку? - Скрипач(15.01.2013 11:19)
- Увы, не могу. Она от меня в 2000 км и пользователям это нахрен не нужно. Я её использую лишь для испытания и отладки кода, чтобы потом поставить софт в другом месте... POV(74 знак., 15.01.2013 11:31)
- Сочуствую, но ничем помочь не могу. Когда в одном месте "как часики", а в другом "ни одного байта" нужно искать отличия между одним и другим местом. - Скрипач(15.01.2013 12:54)
- Отличия тока в компе. При этом и там и там используются PCI-мультипортовки. Но одна - мокса, а вторая - адвантек... Да, где часики - семёрка стоит, а на удалёнке - ХП. Ладно, будем подождать, может чего прояснится. - POV(15.01.2013 13:11)
- Вспоминается, в своё время на Moxa наткнулся. Отличия могут быть в драйверах, некоторые не все ioctl реализуют. Я бы вначале нашёл ту мультипортовку, что на удалённой стороне и проверил. ОС везде одинаковую, драйвера и т.п. Может с ней всегда fk0(26 знак., 15.01.2013 14:06)
- Косяк в мультипортовке. Попробовал на 2 машинах - везде то же самое. А вот с набортным COM-портом косяков нет... POV(134 знак., 05.03.2013 09:34)
- Этт понятно. Буду думать как реализовать такой вот поиск. - POV(15.01.2013 14:20)
- Вспоминается, в своё время на Moxa наткнулся. Отличия могут быть в драйверах, некоторые не все ioctl реализуют. Я бы вначале нашёл ту мультипортовку, что на удалённой стороне и проверил. ОС везде одинаковую, драйвера и т.п. Может с ней всегда fk0(26 знак., 15.01.2013 14:06)
- Отличия тока в компе. При этом и там и там используются PCI-мультипортовки. Но одна - мокса, а вторая - адвантек... Да, где часики - семёрка стоит, а на удалёнке - ХП. Ладно, будем подождать, может чего прояснится. - POV(15.01.2013 13:11)
- Сочуствую, но ничем помочь не могу. Когда в одном месте "как часики", а в другом "ни одного байта" нужно искать отличия между одним и другим местом. - Скрипач(15.01.2013 12:54)
- Увы, не могу. Она от меня в 2000 км и пользователям это нахрен не нужно. Я её использую лишь для испытания и отладки кода, чтобы потом поставить софт в другом месте... POV(74 знак., 15.01.2013 11:31)
- Не знаю. Посмотрел свой говнокод - никаких задержек или других танцев с бубном. Видимо проблема в чем-то другом. Поменять персоналку? - Скрипач(15.01.2013 11:19)
- Попробую.. Жду как мне удалённый доступ к Улан-Удэ обеспечат. - POV(08.01.2013 22:05)
- На рабочей машине всё как часики. А на удаленной вообще ни одного байта не получает (согласно логу). Всякие задержки после открытия порта не помогают. Шо ж это такое? - POV(15.01.2013 09:21)
- Перед тем, как отправлять запрос очередному девайсу, закрой-открой порт. - Скрипач(08.01.2013 21:54)
- Сразу чего-то я не отписался... POV(306 знак., 08.01.2013 21:46)
- ХЗ. Протокол нужно знать. У меня просто. МОДБАС-Мастер всегда знает когда безопасно порт "передернуть". - Скрипач(29.12.2012 01:38)
- Прав. Но каков критерий пропажи связи? Я жду 5 подряд не отвеченных запросов. Т.е. до 5 секунд (если девайс активен тока один). В это время, например, пользователь нажимает кнопки, а реакции не будет ибо порт косячит. - POV(29.12.2012 01:07)
- С ком-портом кто работает? Вы или "библа"? В моем понимании, закрытие/открытие порта занимает времени не больше чем любой другой вызов Win32 API. Я не прав? - Скрипач(29.12.2012 00:54)
- Нуу, оно вот как-то так... POV(161 знак., 29.12.2012 00:50)
- Не восстанавливается, пока не закроешь/откроешь порт. Та же фигня. А про очередь не понял. Она что, сбрасывается?! - Скрипач(29.12.2012 00:46)
- В моём случае если пропала связь, то она больше не восстанавливается. Хоть час жди... POV(110 знак., 29.12.2012 00:26)
- А сколько времени оно занимает?! Секунду? Чудна Вин-дааа :о) - Скрипач(28.12.2012 22:02)
- "открытие-закрытие" сделано и работает. Но это неприемлемо если оно требуется раз в 10...30 секунд. - POV(28.12.2012 21:59)
- Ну-ну. Попробуйте. Скрипач(91 знак., 28.12.2012 20:01)
- Программист - это я. И рассчитывал на всякие косяки. Оттого и диагноз поставить не могу. Попробую в общем с нуля код переписать - может выйдет новая реализация без каких-то скрытых сюрпризов. - POV(28.12.2012 14:44)
- После окончания приёма у тебя вообще получается ничего из порта не считывается? - FDA(27.12.2012 21:53)
- Вот есть, например, такой алгоритм Витерби. Или даже, типичный недетерминированный конечный автомат -- вот что собственно нужно для разбора сообщений в потоке мусора. Ну а как гласит теория, любой НКА путём нехитрых механических преобразований fk0(489 знак., 28.12.2012 10:05)
- было следующее соображение.... POV(798 знак., 27.12.2012 21:47)
- Ммм, надо обдумать. На -40 как-то не до "думать" было. - POV(27.12.2012 21:39)
- IMHO в программе дело... Ещё помнится в fido7.ru.embedded кто-то в своё время FAQ по RS485 писал и там про преамбулу было. Мол BREAK вначале, потом данные. Иначе если приёмник уже заклинило мусором, то пропал весь пакет. Подробностей не помню, но fk0(48 знак., 27.12.2012 14:58)
- Не, мусор есть сам по себе. Если никто не передает. Если начать передавать, то мусор придавливается драйвером и нужный сигнал проходит. Косяк в момент ожидания ответа от устройства. - POV(27.12.2012 02:53)
- проблемы могут быть в разности напряжения земель оборудования, например. Если нет развязки. Если развязка есть, то в ней самой - koyodza(26.12.2012 22:48)
- Обычный. И помехи неизвестного происхождения порциями идут. Как искать момент проблем не знаю. Логгирование не помогает понять... POV(281 знак., 26.12.2012 22:13)
- Такого не встречал, но интересно - какой аппаратный приемник UART стоит в компе? USB, чипсетовый, плата расширения или что то еще? - ASDFS(26.12.2012 21:43)
- ЧИпсетовый. - POV(26.12.2012 22:13)
- Имя героя в студию. - ASDFS(26.12.2012 22:22)
- Маниак-разборщик доклыдывает . Аппартаные Com-порты реализуют на драйвере st75185 или GD75232 (жиды от тексаса). saifullin(113 знак., 27.12.2012 07:38, ссылка, ссылка)
- Мммм, а какое? Чипсет интеловский 845. Старенький довольно. Об этом речь? - POV(27.12.2012 02:52)
- Имя героя в студию. - ASDFS(26.12.2012 22:22)
- ЧИпсетовый. - POV(26.12.2012 22:13)
- Может. - Скрипач(26.12.2012 21:40)
- "Какая гадость..." - POV(26.12.2012 21:46)
- Готовясь к рабочим будням, думаю об этой проблеме. И решил что не в софте дело и не в аппаратуре. Детище Билли так меня вставляет... POV(864 знак., 08.01.2013 21:41 - 21:48)