Здравствуйте, shrek, Вы писали:
S>... S>Может кто сталкивался?
Да. Ком-порт вешается на аппаратном уровне. Помогает лишь перезагрузка компьютера. Скорее всего устройство, подключенное к ком-порту иногда шлёт некорректные посылки (или имеет нестандартную или "плавающую скорость" передачи). Этот эффект наблюдается примерно на 1-м компьютере из 10-ти. На всех остальных — всё прекрасно работает.
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
S>>... S>>Может кто сталкивался?
AD>Да. Ком-порт вешается на аппаратном уровне. Помогает лишь перезагрузка компьютера. Скорее всего устройство, подключенное к ком-порту иногда шлёт некорректные посылки (или имеет нестандартную или "плавающую скорость" передачи). Этот эффект наблюдается примерно на 1-м компьютере из 10-ти. На всех остальных — всё прекрасно работает.
На самом деле — всё обстояло ещё хуже — повесилось само устройство. пока я из него питание не выдернул — работать оно не хотело
Здравствуйте, shrek, Вы писали:
S>На самом деле — всё обстояло ещё хуже — повесилось само устройство. пока я из него питание не выдернул — работать оно не хотело
В таких случаях нужно применять Watch Dog. Когда вешается устройство, оно может всё время слать 1 на вход порта. Порт считает, что это — начало посылки, но бит конца послыки не приходит. В итоге порт выставляет error bit, а программы, которые его не обрабатывают — как правило вешаются.
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
S>>На самом деле — всё обстояло ещё хуже — повесилось само устройство. пока я из него питание не выдернул — работать оно не хотело
AD>В таких случаях нужно применять Watch Dog.
что за зверь?
Когда вешается устройство, оно может всё время слать 1 на вход порта. Порт считает, что это — начало посылки, но бит конца послыки не приходит. В итоге порт выставляет error bit, а программы, которые его не обрабатывают — как правило вешаются.
у меня повесилось — я записать туда ничего не мог — врайт уходил с таймаутами.
программа у меня не повесилась — просто постоянные обломы стали происходить.
жаль — error bit не догадался проверить.
теперь — когда ещё его повесить удастся
Здравствуйте, shrek, Вы писали:
AD>>В таких случаях нужно применять Watch Dog. S>что за зверь?
Аппаратная примочка, которая делает Reset устройству, если оно повисло.
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
AD>>>В таких случаях нужно применять Watch Dog. S>>что за зверь? AD>Аппаратная примочка, которая делает Reset устройству, если оно повисло.
Оно способно питание отрубить от устройства?,
вообще можете дать ссылку?
Здравствуйте, shrek, Вы писали:
AD>>Аппаратная примочка, которая делает Reset устройству, если оно повисло. S>Оно способно питание отрубить от устройства?,
Нет. Оно посылает сигнал Reset.
S>вообще можете дать ссылку?
Поиск тебя спасёт.
PS: обращаю внимание: что это аппаратное устройство и его обсуждение выходит за рамки этого форума.
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
AD>>>Аппаратная примочка, которая делает Reset устройству, если оно повисло. S>>Оно способно питание отрубить от устройства?, AD>Нет. Оно посылает сигнал Reset.
угу а комп может такой сигнал послать?
есть какая нибудь апи функция? — я вроде всё перерыл ничего не нашёл, что может
такой сигнал послать — аналоги write не подходят — там таймауты сыпятся
Здравствуйте, shrek, Вы писали:
S>Здравствуйте, ArtDenis, Вы писали:
AD>>Здравствуйте, shrek, Вы писали:
AD>>>>Аппаратная примочка, которая делает Reset устройству, если оно повисло. S>>>Оно способно питание отрубить от устройства?, AD>>Нет. Оно посылает сигнал Reset.
S>угу а комп может такой сигнал послать? S>есть какая нибудь апи функция? — я вроде всё перерыл ничего не нашёл, что может S>такой сигнал послать — аналоги write не подходят — там таймауты сыпятся
Имеется ввиду, что WatchDog стоит внутри устройства. Так что без переделки аппаратуры тут не обойтись.
Хотя, если у тебя не задействованы контакты DTR и RTS, ты можешь их использовать для того, чтобы перезагрузить устройство послав ему Reset. Это делается функцией EscapeCommFunction.
AD>Имеется ввиду, что WatchDog стоит внутри устройства. Так что без переделки аппаратуры тут не обойтись.
ага — облом!
AD>Хотя, если у тебя не задействованы контакты DTR и RTS, ты можешь их использовать для того, чтобы перезагрузить устройство послав ему Reset. Это делается функцией EscapeCommFunction.
что значит не задействованы?
я сигнал DTR не обрабатываю, RTS — кстати тоже...
т.е. не пользуюсь функцией ::WaitCommEvent
S>>я сигнал DTR не обрабатываю, RTS — кстати тоже...
надо будет попробовать ту функцию... AD>Ну, тогда, паяльник и клаву в руки — и вперёд
ага — припаяю — руки к клаве
ну да бог с ним — про эту функцию я как то забыл.
вставлю в обработку ошибок и молится
а как можно определить занят ком порт или нет?
ну в смысле — есть ли там устройство или нет — по таймаутам на запись в порт не хочется...
Здравствуйте, shrek, Вы писали:
S>надо будет попробовать ту функцию...
Пробовать эту функцию без аппаратной переделки — не имеет смысла.
S>а как можно определить занят ком порт или нет? S>ну в смысле — есть ли там устройство или нет — по таймаутам на запись в порт не хочется...
Организовать соответствующий протокол обмена данными с устройством. Типа компьютер справшивает: "Ты здесь?", а устройство отвечает: "Да"
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
S>>надо будет попробовать ту функцию... AD>Пробовать эту функцию без аппаратной переделки — не имеет смысла.
я не в курсе — может и есть в этом устройстве чего...
как проверить?
документация — куцая...
S>>а как можно определить занят ком порт или нет? S>>ну в смысле — есть ли там устройство или нет — по таймаутам на запись в порт не хочется... AD>Организовать соответствующий протокол обмена данными с устройством. Типа компьютер справшивает: "Ты здесь?", а устройство отвечает: "Да"
проблема в том что на любую попытку записать в компорт команду — меня обламывают таймаутом.
S>>я не в курсе — может и есть в этом устройстве чего... S>>как проверить? S>>документация — куцая... AD>У меня два вопроса:
AD>1. Что это за устройство?
gsm-терминал Nikia22
управляется как модем — ат командами.
AD>2. Можно ли вмешиваться в его схему?
лучше не надо
Здравствуйте, shrek, Вы писали:
AD>>1. Что это за устройство? S>gsm-терминал Nikia22 S>управляется как модем — ат командами.
Уууу... Тогда понятно. Надо было сразу про это написать. Тогда тут есть несколько вариантов:
1. Проверь команды, которыми ты управляешь модемом. Есть вероятность того, что ошибка в твоей команде, что приводит к "кажущимуся" зависанию устройства.
2. Если вешается порт (ReadFile или WriteFile возвращают false), попробуй либо функцию ClearCommError, либо закрой и заново открой порт.
3. Если тебе требуется связь по сетевому протоколу, посмотри семейство Ras-функций, в частности, RasDial и RasHangUp
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, shrek, Вы писали:
AD>>>1. Что это за устройство? S>>gsm-терминал Nikia22 S>>управляется как модем — ат командами.
AD>Уууу... Тогда понятно. Надо было сразу про это написать. Тогда тут есть несколько вариантов:
AD>1. Проверь команды, которыми ты управляешь модемом. Есть вероятность того, что ошибка в твоей команде, что приводит к "кажущимуся" зависанию устройства.
не — исключено.
я машину перегружал — один хрен — пока не выдернул питание поднять не мог.
Гипертерминал тоже не смог поднять.
AD>2. Если вешается порт (ReadFile или WriteFile возвращают false), попробуй либо функцию ClearCommError, либо закрой и заново открой порт.
AD>3. Если тебе требуется связь по сетевому протоколу, посмотри семейство Ras-функций, в частности, RasDial и RasHangUp