Мне необходимо реализовать управление Arduin-кой с помощью C++. На сколько я понял Arduino общается с компьютером через COM порт, потому вся задача сводиться к тому, что бы из под плюсов отправлять в нужный порт нужную информацию. Но тут у меня появились трудности, ардуина же подключена через USB, причем тут вообще COM порт? Да вопрос идиотский, но я не понимаю. На ноутбуке вообще нет COM портов. Примеров работы с портами куча, но не один не заработал, т.к. ни один порт не открылся. Программа Com Port ToolKit не находит ни одного COM порта, хотя "Монитор порта" в Arduino IDE показывает некий COM9. Помогите разобраться!
При подключении arduino создается виртуальный com порт который и общается по средствам usb. Именно при подключенном оборудовании и ищите свой com-порт в любой программе в том числе он появляется и в диспетчере устройств.
Ком-порт (последовательный порт) виртуальный, через USB. Когда ардуина подключается к ПК, то в виндовсе возникает новое устройство, видное как COM с номером. Вот это тот самый порт, через который надо передавать команды, и есть.
Да, действительно. Порт появился, но по прежнему не открывается, возможно из-за того что занят. Вот код который я использую: #include "stdafx.h" #include <windows.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HANDLE hCOM=CreateFile(L"COM9",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if (hCOM!=INVALID_HANDLE_VALUE) { cout << "COM is open OK!" << endl; char buffer[30]; memset(buffer,0,sizeof(buffer)); strcpy(buffer,"SAVE TO COM"); DWORD nb; OVERLAPPED ov; WriteFile(hCOM,buffer,sizeof(buffer),&nb,&ov); CloseHandle(hCOM); } else cout << "Error Open COM" << endl; return 0; } Как можно решить эту проблему?
Если он занят например монитором Arduino IDE, то и не откроется. надо сначала проверить что порт не используется сторонними программами, а потом уже открывать его для записи-чтения. По коду подробно не подскажу, если честно уже не помню