2015-03-31 5 views
0

У меня есть следующая проблема. У меня есть устройство последовательного порта, которое должно взаимодействовать с компьютером. На самом деле это доска Arduino Due, но я не думаю, что это связано.Последовательный последовательный порт Win API должен ждать после инициализации

Я использую CreateFile, чтобы открыть порт, а затем установить параметры с помощью GetCommState() & SetCommState() и GetCommTimeouts() & SetCommTimeouts().

Порт открыт правильно - проблем нет. Но сейчас я хочу проверить, подключено ли устройство. Поэтому я отправляю конкретное сообщение. Устройство должно реагировать определенным образом, чтобы я знал, что он подключен.

Теперь проблема: она работает, только если положить Sleep (1000) после создания порта (перед отправкой запроса подтверждения). Похоже, что WinAPI нужно некоторое время, прежде чем он сможет начать использовать порт. Поскольку решение сна обычно не используется, мне нужно найти какую-то альтернативу ...

От не работает Я имею в виду ReadFile раз. Время истекает, даже если тайм-аут установлен примерно на 5 секунд - обратите внимание, что интервал ожидания составляет только одну секунду. Таким образом, похоже, что запрос на рукопожатие даже не отправлен. Если я устанавливаю тайм-аут на 1 секунду и интервал ожидания на одну секунду, он работает. Если я установлю таймаут на 5 секунд, но сна нет, он не работает. См. Проблему?

Я собираюсь попробовать NetworkMonitor, но я вроде уверен, что проблема не связана с устройством ...

ответ

0

ОК, я бы искал немного больше, прежде чем отправлять на этот вопрос.

Дело в том, что Arduino перезагружается, когда вы открываете соединение с ПК.

Когда вы используете терминал, который вы подключаете первым и пишите через несколько секунд, чтобы на плате Arduino было достаточно времени для загрузки, и вы не заметите этого. Это то, что меня смутило, чтобы написать вопрос.

Есть 3 решения этого, только 2 из которых имеет смысл упомянуть все:

1) решение, которое я использовал, не зная все это (вы будете ждать около секунды для доски, чтобы загрузить снова ...) 2) отключить автоматический сброс путем изменения платы Arduino

Оба они глупы, если вы спросите меня, должно быть переключатель или переменной вспышки, чтобы сделать это ...

+0

там в вероятно, ничто не мешает вам перепрограммировать прошивку в вашем Due, при условии, что у вас есть другое устройство, которое вы можете использовать в качестве программиста. Клон Pro-Mini составляет около 4 долларов США на Ebay ... Добавьте еще 4 или 5 для последовательной платы FTSI usb->, и у вас есть 2 для менее 15 долларов. – enhzflep

Смежные вопросы