C ++ ifstream из Linux в Arduino

оригинальный код

#include<iostream>
#include<fstream>
using namespace std;

int main()
{
    ofstream arduino_output("/dev/ttyACM0");
    ifstream arduino_input("/dev/ttyACM0");

    int value;
    string txt;

    while(cin >> value){
        arduino_output << value << endl;
        arduino_input >> txt;//I never recieve the "OK" (Which I should get)
        cout << txt;
    }

    arduino_input.close();
    arduino_output.close();
    return(0);
} 

Вот проблема:

        cin >> value;
        arduino_output << value << endl;
        arduino_input >> txt;//I never recieve the "OK" (Which I should get)
        cout << txt;

но если я делаю это вместо этого, это работает:

        cin >> value;
        arduino_output << value << endl;

        for(int i=0;i<10000;++i)
        for(int j=0;j<10000;++j){ //Waste a lot of time
           ++value;
           --value;
        }

        arduino_input >> txt; //I always recieve the "OK"
        cout << txt; //I can see the "OK"

Итак, как мне сделать так, чтобы мой быстрый компьютер мог читать медленный вывод из arduino? (Без использования for-циклов, чтобы тратить время)

Здесь говорится кое-что о обратном вызовеhttp://www.cplusplus.com/reference/ios/ios_base/register_callback/ но я никогда не мог заставить это работать. Он говорит, что поддерживает 3 события, и ни одно из них не является: «Если входной буфер не пустой, вызовите эту функцию».

Потому что окончательным решением будет функция обратного вызова для каждого случая, когда входной буфер не пуст.

Приемлемым решением была бы эквивалентная версия cduid версии arduino "Serial.available ()".

Другим приемлемым решением было бы все, что заставляет меня не полагаться на два цикла for. 3 цикла for неприемлемы, если вы об этом думаете.

EDIT1: показывал оригинальный код
EDIT2: я использую Linux (Lubuntu)
EDIT3: Кто-то запутался, где код был написан. Странный.

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

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