Есть девайс связанный с машиной (в2к) через rs232. В него кидаешь 0х16, получаешь данные. Программу писал на VC++ с использованием апишных функций CreateFile, WriteFile, ReadFile по доке из msdn. Обнаружилась такая странность, если после перезагрузки запустить программу, она не читает данные. Если после этого послать те же самые 0х16 с помощью гипертерминала, а потом запустить прогу, то всё работает. DCB после запуска моей программы и после запуска гипертерминала одинаковые. В какую сторону рыть?
Здравствуйте, ugoday, Вы писали:
U>Есть девайс связанный с машиной (в2к) через rs232. В него кидаешь 0х16, получаешь данные. Программу писал на VC++ с использованием апишных функций CreateFile, WriteFile, ReadFile по доке из msdn. Обнаружилась такая странность, если после перезагрузки запустить программу, она не читает данные. Если после этого послать те же самые 0х16 с помощью гипертерминала, а потом запустить прогу, то всё работает. DCB после запуска моей программы и после запуска гипертерминала одинаковые. В какую сторону рыть?
запусти что нибудь типа portmon.exe и посмотри — как отличается инициализация у тебя и у гипер терминала.
Здравствуйте, ugoday, Вы писали:
U>Есть девайс связанный с машиной (в2к) через rs232. В него кидаешь 0х16, получаешь данные. Программу писал на VC++ с использованием апишных функций CreateFile, WriteFile, ReadFile по доке из msdn. Обнаружилась такая странность, если после перезагрузки запустить программу, она не читает данные. Если после этого послать те же самые 0х16 с помощью гипертерминала, а потом запустить прогу, то всё работает. DCB после запуска моей программы и после запуска гипертерминала одинаковые. В какую сторону рыть?
может быть ты не теми параметрами инициализируешь устройство (скорость, четность и т.д.).
похожий случай был у меня, внимательное прочтение спецификации прибора мне помогло.
Здравствуйте, ugoday, Вы писали:
U>DCB после запуска моей программы и после запуска гипертерминала одинаковые. В какую сторону рыть?
Возможно гипертерминал делает еще что-то, напр. устанавливает/сбрасывает флаги RTS/DTR.
Re[2]: странности с rs232
От:
Аноним
Дата:
12.08.04 10:29
Оценка:
Здравствуйте, Alex_13, Вы писали:
A_>Здравствуйте, ugoday, Вы писали:
U>>DCB после запуска моей программы и после запуска гипертерминала одинаковые. В какую сторону рыть?
A_>Возможно гипертерминал делает еще что-то, напр. устанавливает/сбрасывает флаги RTS/DTR.
Я тоже так подумал, и написал прогу, которая выводит структуру DCB. Но после гипертерминала, и после запуска моей проги вывод dcb одинаков. Вроде как это говорит о том, что флаги я установил правильно. Или нет.
Здравствуйте, Аноним, Вы писали:
А>Я тоже так подумал, и написал прогу, которая выводит структуру DCB. Но после гипертерминала, и после запуска моей проги вывод dcb одинаков. Вроде как это говорит о том, что флаги я установил правильно. Или нет.
А>Исходник.
Ну чудес не бывает, значит все-таки флаги не совпадают. Проверь флаги fBinary, fDtrControl, fRtsControl — ты их вроде не устанавливаешь в коде.
Можешь проверить побитовым сравнением для уверенности