У меня возникли проблемы при обмене данными с C++ на Arduino с помощью Serial. Я использовал метод, обсуждаемый Салилом Капуром здесь: ://salilkapur.wordpress.com/2013/03/08/communicating-with-arduino-using-c/. Я адаптировал его стратегию записи непосредственно в файл Arduino с помощью С++. Для моей конкретной задачи мне нужно отправить строку символов (которые являются командами для обработки Arduino) в Arduino. Я уже прочитал символы из файла в программе C++, но по какой-то причине я ничего не получаю от своего последовательного монитора Arduino, когда отправляю его. Я думаю, что проблема может быть в скорости передачи данных, но я не уверен. Я дам вам свой код для конкретной помощи. Если кто-то может посоветовать мне, как заставить С++ записывать символы на последовательный монитор для чтения:
C++:
#include
#include //For sleep()
#include //For FILE
#include //For ifstream
#include //For assert()
#include //For string
using namespace std;
int main()
{
//Setting up the output to the Arduino
FILE *arduino;
arduino = fopen(“/dev/tty.usbmodem1411″,”w”); //Declare the file in write mode
if (arduino == NULL) perror (“Error opening file”);
//Setting up the file input stream
ifstream inFile (“input.txt”);
assert(inFile.is_open());
char input = '\0'; //Starts out as NULL
while (input!= EOF) {
fprintf(arduino,”%c “, input); //Writing to the file
inFile >> input; //Getting the file input to make sure it isn’t the EOF
sleep(1);
}
fclose(arduino);
}
Код Ардуино:
void setup()
{
Serial.begin(9600);
}
void loop()
{
char input;
if(Serial.available()) //If anything is in the Serial
{
input=Serial.read();
Serial.println(input); //Print out any input
}
}
Пример ввода из input.txt:
w a d s w d a a s d w
Эта строка символов будет указывать направление (вверх, вниз, влево, вправо) в соответствии с WASD.