[1] [2] |
Головоломка для одноЭсников или порадуйте блондинку Проблема есть комп и железо, подключенное к нему через ком порт. Все работает нормально, сбои порта и девайса нормально обрабатываются, негтовность или выключение устройства диагностируются и производится восстановление процесса или диагностика. в реалиях комп сгорел и поставлен другой - без ком порта. Отсутствие ком порта компенсировали переходником ком-усб. Ну там свои проблемы, которые решены (на самом деле там куча недокументированных заморочек, они решены). Осталась одна маленькая проблемка - усб разъем болтами не прикручивается и уже несколько раз во время работы переходник вываливался из компа. Ком порт на переходнике эмулируется программно. Данную ситуацию винда не обрабатывает нормально с точки зрения ком порта. Драйвер ловит ампутацию усб девайса, и т.к. девайс кончился - драйвер отваливается, и заодно исчезает ком порт. И программа с открытым хендлом (win api) ломится в никуда. Как корректно поймать отваливание ком порта и закрыть хендл? Работа ведется через готовую компоненту и после отваливаения даже форму уничтожить нельзя - возникает неопределеноое исключение и и форма не дестроится Решение через одно место я сделала, все работает, но хотелось бы красиво исходники компоненты тоже есть |
1-Helen 1986 > Хорошя ты женщина. Но я ниче не понял. Чёт отваливается и некрасиво все. А где головоломка? |
"[em]Решение через одно место я сделала, все работает[/em]" - знаем мы это место... "Per anus ad astra". PCI-контроллер COM-порта - и ничего не отваливается, и заморочек куда меньше. |
Поддерживаю (3) [url]http://krasnodar.snr.ru/catalog/?categoryid=2446&page=0[/url] И болтами можно прикрутить !!! :))) |
два умных одноЭсника? офигеть и куда я эту плату в нетбук вставлю? у него кстати, всего 3 усб дырки, на которых висит 4 девайса (без усб, хабов, кстати) клава с мышкой видео камера переходник ком-усб |
(5)"и куда я эту плату в нетбук вставлю?" Гусары! Молчать! А вообще шлепай на "усб дырки" с включенными устройствами кляксы из термоклея. И вообще - ты пытаешься лепить конфетку, гм ... на неподходящей элементной базе :) |
залейте подключенный усб эпоксидкой, делофта. |
(6-7) есть у нас такое же чудо, на тебя похожее сел голыми коленями на плиту с клеем благо шо плита фанерная под ржание всего цеха плиту выпилили и отправили его на грузовике в больницу с тех пор у него кличка - тулза бес мосхов |
суперклей |
(8)"сел голыми коленями" - мне аж страшно стало при попытке представить ТАКУЮ анатомию :)))) Чудо в данной ситуации - ты :) Кстати, ни термоклей, ни эпоксидка после застывания ни разу не липкие. Термоклей удобнее тем, что в случае чего проще удалить и почи не оставляет следов. |
(8): это как раз на меня не похоже. на меня похожее тот, кто коварно плиту клеем намазал. :) |
(10) зато ниче так этот идиот смотрелся на фанерном постаменте в кузове грузовичка а по поводу сабжа - похоже, одноЭсники то и не в курсе. наверное, все как я 1986 года кстати, а как в торговом оборудовании эта проблема решается в случае выдергивания сканера или другой железки "на ходу" |
(5) Покажите слово "нетбук" в (1)? Тот, кто в таком раскладе рекомендовал купить на замену именно его - даже не ТТО, а ССЗБ. |
(11) сам этот идиот и намазал. Просто решил склеить сразу 2 заготовки без распила |
(5)Ну если есть поддержка pcmcia ,то вот : [url]http://krasnodar.dns-shop.ru/catalog/85/12538/[/url] А вообще да,лучше нетбук заменить на что нибудь полноценное !!! |
(13) твой бы выхлоп да сегодня утром. вмиг бы ночные лужи просохли Буратины только и умеют давать такие советы. прекрасно работает нетбук в этих условиях экран 10", мужички вставили его в шкапчик, вентиляция через доп вентилятор с фильтром (от старого компа осталась). Производительности хватает - девайс не скоростной, обмен на скорости 9600. Дешево и сердито. никаких модификаций - - этот нетбук тами сдохнет |
(15) а зачем? побольше денег вывалить? это же не разработка - это эксплуатация |
нормальный одноядерный атом венда с сетевой поддержкой управление девайсом локально и дистанционно по сетке показ видео (камера 1.3) нетбукгерметизирован в шкапчике, клава и мышка снаружи |
(16)Ну а раз "прекрасно работает", то какие проблемы? Пусть и дальше "прекрасно работает" :) Тебе уже четко и ясно сказали - термоклей на места соединения кабелей с разъемами USB(или очень близко от них). Можно и нетбук на капли термоклея поставить, для фиксации |
(19) да хотелось просто нормально решить проблему - это ж не только здесь, но и на переносном оборудовании требуется. у нас много диагностичекого оборудования с ноутами идет, последнее время с нетбуками стали поставлять - маленькие, легче таскать , дольше работают Ноут в шкафу там нормально так винтиками прикручен нафиг там клей |
(17)Все ,я сдаюсь !!! :))) |
(16) Где ты в (13) увидело совет? Совет был в (3), пока не требовалось телепание. Впрочем, и сейчас еще не поздно посоветовать. И совет будет вот каким: [b]исключать[/b]. Либо ненадежность контакта переходника с нетбуком (клей, скотч, шурупы). Либо сам этот контакт, например: [url]http://www.rtcs.ru/hwsubtype.asp?id=262[/url] Либо программера, чересчур уверенного в своей способности решить любую проблему программно. Лично я рекомендую последний вариант. |
Был у меня как-то коротенький удлинитель для УСБ, всего сантиметров 30 длиной. Вот такой бы вставить в нетбук, а с другой стороны переходник КОМ-УСБ уже крепить хоть скотчем, хоть резинкой для денех... :-) |
(23) была такая идея. удлинитель УСБ --> переходник --> ком шланг отпала сама собой - лишние разъемы |
(13) Маленькая собачка до старости щенок или вторая серия измышлений неудачнега [b]Либо программера, чересчур уверенного в своей способности решить любую проблему программно[/b] типичное поведение неудачнега - инициативные и амбициозные сотрудники их всегда запинывают. лично я неинициативных предпочитаю прикручивать клеем и скотчем [url]http://www.rtcs.ru/hwsubtype.asp?id=262[/url] неудачнеги не читают описания. и это типично |
Удивляюсь: как, учитывая хамский стиль общения вопрошающего, кто-то ещё желает отвечать? По-моему, автор вполне самодостаточен. |
[em]возникает неопределеноое исключение и и форма не дестроится[/em] Открыть мануал, найти конструкцию try **** catch(...)****, читать, долго думать. Прийти к решению, что любые исключения, если они возникают ловятся, и, значит, форму можно дестроить. |
(27) я ловлю исключение в момент уничтожения формы и что? исключение в момент дестроя одного из компонентов. Дестрой формы прерывается дестрой формы не завершится нормально, пока не отдестроятся все компоненты - в этом и проблема вся. При попытке повторного вызова вылазит неотдестроенная форма - она то не уничтожилась и вызывается уже существующая с ком портом, направленным в никуда |
последовательность действий проста как палка попытка вывода в порт напарываемся на то, что провод переходника вырвали и ком порт в системе испарился при этом происходит исключение ловим исключение, сообщаем пытаемся дестроить компонент - фиг. Он прилип к форме как банный лист при попытке закрыть форму RTTI опять пытается отдестроить все компоненты формы напарывается на исключение и отказ |
после отказа остаемся со слегка беременным компонентом - и закрыть нельзя и бросить невозможно |
Не пробовали ловить WM_DEVICECHANGE и проверять "что было, что будет и на чем сердце успокоится?" |
(31) пробовала для АЦП с УСБ интерфейсом отрабатывает абсолютно нормально для переходника - ловится событие, ИД девайса отсутствует (непонятно что возникло). кстати, нечто похожее возникает при втыкании девайса с неустановленным двайвером (например, флешки, которая никогда в этот комп не вставлялась) про эмулируемый ком порт - ваще молчание как будто вороны склевали |
похоже, что либо венда с ком портом по особому работает либо драйвер переходника косячит я выловила событие по другому проверила в ХР и семерке - работает |
но как то некрасиво все это |
(32) А подписка на событие RegisterDeviceNotification была выполнена? как-то так: [url]http://msdn.microsoft.com/en-us/library/aa363432%28VS.85%29.aspx[/url] Рассылаемый по умолчанию широковещательно DBT_DEVICEREMOVECOMPLETE вряд ли подходит для описываемой ситуации, уж очень жоско с девицей обходятся... Лучше ИМХО подписаться для указанного хэндла, как DEV_BROADCAST_HANDLE (он же есть, я так понял) и ловить событие DBT_DEVNODES_CHANGED, если com-порт таки исчезает, а не остается в системе в каком-то невнятном состоянии. |
(33) Как удалось? |
сом порт именно исчезает - при удалении переходника из усб драйвер деактивируется, и заодно смывается ком порт (36) для ком порта аварийное завершение операций в/в с кодами 2 и 3 (Read/Write operation failed) выдается только при сносе эмулируемого ком порта и никогда - для нормального кома (возможно, если реальный ком сгорит - они и выдадутся). ловишь это исключение и плавно-плавно закрываешь хендл файла, открытого на коме. главное - не допустить операций физического в/в типа чтения/записи или сброса регистров порта - в этом случае система прихлопнет хендл и порт сам отвалится. если же пропустить операцию в/в - всё, трындец - хендл фиг закроешь после закрытия ищем ком порт по новой и делаем попытку его открыть по имени. естественно, он не открывается - порта то нет, нет и такого имени |
(37) Тогда должно генерироваться событие DBT_DEVNODES_CHANGED, но оно просто так, судя по документации, не рассылается, надо подписываться. Впрочем, если оно работает и так - стоит ли прикручивать такие навороты с оконными сообщениями и прочим скарбом? Вопрос открытый... И опять же, каким путём реализован обмен с com-портом в компоненте? Синхронно? IoCompletionPort? |
Силикон или строительная пена. |
нет ничего более вечного чем примотанное синей изолентой... |
Текущее время: 17:56. Часовой пояс GMT +3. | [1] [2] |