Arduino マイクロコントローラーと通信しようとしています。これは C# では非常に簡単に実行できますが、C++ では理解できません。これが私のarduinoコードです...
void loop()
{
if (Serial.available() > 0)
{
byte input = Serial.read();
Serial.write(input);
}
}
そのため、arduino に送信したものはすべて返送されます。
fstream ライブラリを使用して書き込みを読み取ることができます。問題は、バッファから読み取ろうとしたときに何もないことです。
int main(int argc, char** argv)
{
fstream filestr;
filestr.open ("COM4", fstream::in | fstream::out | fstream::trunc);
if (!filestr.is_open())
{
cout << "error opening port";
}
else
{
cout << "port opened";
}
char* input = new char();
cin >> input;
filestr.write(input, 1);
filestr.flush();
char * buffer = new char [1];
buffer[0] = -1;
filestr.read (buffer,1);
while ((int)buffer[0] == -1)
{
filestr.read (buffer,1);
}
cout << buffer[0];
cin >> input;
filestr.close();
return 0;
}
だから私はそれにいくつかのデータを送信し、arduino が応答するまでループで読み取りを開始します。arduinoが応答する時間がないため、最初の読み取りでは何も返されないため、データを取得するまで読み取りを続けます。しかし、一向に返事が来ないようです。最初の読み取りの前に少し遅延を置き、arduino に応答する時間を与えると、うまくいきます。何かを読むと、読者の位置は前に移動しますか? バッファから何かを読み取ると、バッファから自動的に削除されますか? 誰でもこれを行う方法を知っていますか?