Разговор с Arduino через C ++ Serial - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь создать программу, в которой пользователь вводит строку, которая может быть закодирована в сообщение и отправлена ​​(через USB) на мою плату Arduino, которая получает сообщение и отображает его на ЖК-экране.У меня с Arduino есть все, но все работает: я могу отправить строку через последовательный монитор в Arduino IDE (в комплекте со значениями флагов для обозначения начала и конца).

Моя проблема сейчас заключается в создании программы для ее запуска.Я никогда не пытался подключиться к последовательному соединению через C ++.Сегодня я смотрел на несколько разных реализаций, но у меня возникают трудности с сортировкой между ними и поиском, по крайней мере для меня, самого простого в использовании.

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

У меня естьвидел несколько разных постов, в которых рассказывается об использовании класса / библиотеки SerialPort в CLR C ++, но у меня нет опыта работы с CLR C ++, и это выглядит несколько иначе.Казалось бы, кому-то с приличным знанием C ++ было бы особенно трудно (я только заканчиваю свой второй класс C ++ по структурам данных и ООП, для чего и предназначен этот проект) быстро перейти на CLR C ++ или есть лучший вариантальтернатива там?

Лучшее, что я мог найти, было на этой странице: http://arduino.cc/playground/Interfacing/CPPWindows, однако, когда я попытался добавить заголовочные файлы и файлы CPP в свой собственный проект в Visual Studio, я получил ошибкупри компиляции: error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR'.Кто-нибудь знает, могу ли я использовать это в проекте такого типа или нет?

Спасибо за вашу помощь!Я просто запутался в том, что делать с этим проектом.

1 Ответ

1 голос
/ 23 ноября 2011

Я думаю, что CLR не является необходимым. Предоставленный Вами пример класса должен быть достаточным, и указанную проблему можно решить с помощью приведения, например

this->hSerial = CreateFileA( static_cast<LPCSTR>(portName),
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

Существует две модификации: изменен макрос CreateFile на функцию CreateFileA и static_cast первый параметр. Если проблема не устранена, попробуйте добавить более конкретные вопросы.

...