Связь между Visual C ++ и Arduino: - PullRequest
2 голосов
/ 13 июня 2011

У меня есть приложение Arduino, которое должно общаться с моим компьютером через последовательный порт USB. У меня есть этот фрагмент кода, который я поднял с игровой площадки Arduino на

http://arduino.cc/playground/Interfacing/CPPWindows#VisualStudio2008

  this->serialPort1->PortName = "COM5";  // Replace with your COM port!
  this->serialPort1->Open();
  this->serialPort1->Write( "7" );  // In the future,  you'll expand on this
                                    // to write your custom data to the board
  this->serialPort1->Close();

Мой вопрос: как определить, к какому COM-порту подключен USB-кабель Arduino?

1 Ответ

0 голосов
/ 13 июня 2011

Есть несколько способов подойти к этому.

Наиболее очевидным является то, что вы просто настраиваете свое приложение и указываете, какой последовательный порт использовать. Имя порта никогда не должно меняться, если на вашем компьютере нет других процессов, выделяющих виртуальные COM-порты, такие как драйверы Bluetooth.

Второй вариант - вы можете делать то, что делает приложение Arduino, и сканировать последовательные порты в системе в поисках аппаратного обеспечения. Поскольку вы используете CLR, System.IO.Ports.SerialPort.GetPortNames () предоставит вам список всех последовательных портов в системе. (Вы также можете получить это из реестра.) Затем вы можете перечислить их и проверить состояние выводов, чтобы увидеть, к каким последовательным портам подключены устройства. Вероятно, вы должны включить в свой эскиз способ запроса Arduino, чтобы вы могли отправить ему команду и дать ей фиксированный ответ. Это позволит вам отличать ваше приложение от других последовательных устройств, таких как модемы.

Существует третий вариант, который включает в себя выяснение, где драйвер FTDI хранит информацию о своей конфигурации в системе / реестре и оттуда. Это немного сложнее, поэтому я не могу дать какую-либо информацию о том, является ли этот подход даже жизнеспособным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...