if (condev == INVALID_HANDLE_VALUE) { CloseHandle(condev); ShowMessage("Не удалось открыть порт"); } else бла бла остальной код программы{
Так вот, после перезагрузки компьютера моя программа отказывается открывать COM порт до тех пор, пока я не открою порт и пошлю посылку какой-нибудь сторонней прогой. Например COM Port Toolkit . В чем моет быть проблема ума не приложу. После того как воспользовался сторонней программой, моя начинает всё открывать, посылать и принимать посылки. Подскаите пожалуйста.
Дядя Миша писал: Помнится с комами был аналогичный занятный глюк модемов. То есть зависнет, пока не перезагрузишь - фиг зайдешь в интернет.
Там глюк с модемами, а у меня именно с моей программой. Две аналогичные программы цепляются без проблем.
По каким то причинам порт возвращает INVALID_HANDLE_VALUE.
Я вообще за С++ недавно. Пришлось по работе. Еще и в RAD Studio. Азов мне немного не хватает, очевидно. Как я намучался с unsigned char. Если посоветуете заодно литературу грамотную, буду благодарен.
В дистре CodeGear RAD Studio 2009 разом идет Delphi и C++ Builder.
Цитата:
XaeroX писал: Может, дело в OPEN_EXISTING? Что если убрать?
Надо будет попробовать. Вот только теперь до прибора добраться надо.
Просто самое интересное, что я даже приблизительно не могу понять какой может быть затык. Потому что медот работы с портами стандартен до невозможного.
XaeroX писал: А может быть, проблема вообще в системе.
Было бы очень классно. Протестирую на эмуляторе КОМ порта.
Я просто думал, может кто-то знает, что такого могут делать прочие программы с портом, что моя программа после них начинает работать
Цитата:
PomanoB писал: Мб ты его не закрываешь....
Как это не тупо, я закрываю его, даже если он не открывается.
PomanoB
А ну так это, глюк проявляется сразу после перезагрузки компа. То есть порт никто и не открывал, не вижу смсла его закрывать. Но ради эксперимента попробую.
В общем разобрался.
Порт действительно надо инициализировать. Но по каким-то причинам инициализация порта не происходила при сохранении параметров командой SetCommState. Почему - не знаю, уже не было времени отлавливать баг. Но его придется отлавливать позже.
пришлось в принудительном порядке конфигурировать порт с помощью cmd команд. В итоге при запуске программы запускается .bat файл с командами:
mode com% baud=9600 stop=2 data=8 parity=n
Костыли, такие костыли. Не удивлюсь если это "прикол" собственно RAD Studio