Двусторонняя связь 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

Куда я иду не так?

Ответы на вопрос(4)

Ваш ответ на вопрос