Двусторонняя связь C ++ по последовательному соединению
Я пытаюсь написать действительно простое приложение на C ++ для связи с Arduino. Я хотел бы отправить Arduino персонаж, который он отправляет обратно немедленно. Код Arduino, который я взял из учебника, выглядит следующим образом:
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Have the Arduino wait to receive input
while (Serial.available()==0);
//Read the input
char val = Serial.read();
//Echo
Serial.println(val);
}
Я легко могу общаться с Arduino, используя экран GNU, поэтому я знаю, что с базовой связью все работает нормально:
$ screen /dev/tty.usbmodem641 9600
(Сломанный) код C ++, который у меня есть, выглядит так:
#include <fstream>
#include <iostream>
int main()
{
std::cout << "Opening fstream" << std::endl;
std::fstream file("/dev/tty.usbmodem641");
std::cout << "Sending integer" << std::endl;
file << 5 << std::endl; // endl does flush, which may be important
std::cout << "Data Sent" << std::endl;
std::cout << "Awaiting response" << std::endl;
std::string response;
file >> response;
std::cout << "Response: " << response << std::endl;
return 0;
}
Он компилируется нормально, но при его работе на Arduino мигают некоторые индикаторы, а терминал просто зависает:
Opening fstream
Куда я иду не так?