したがって、送信するエコーと受信するcatを使用してデバイスと通信しています。ここに私のコードの抜粋です:Cで使用した直後にcatコマンドを終了します
fp = popen("echo "xyz" > /dev/ttyACM0 | cat - /dev/ttyACM0", "r");
while (fgets(ret_val, sizeof(ret_val)-1, fp) != NULL)
{
if (strcmp(ret_val, "response") == 0)
{
close(fp);
return ret_val;
}
}
[OK]を、問題は、私はループ内でこのコードを実行すると、それは最初の時間を動作するため、その後、私はpopenのを呼び出す場所でハングアップし、猫が開いたままのようです、です。私は猫が原因だと仮定して正しいですか?
私はコマンドを実行するとすぐにcatを終了する方法があるので、私のデバイスからの応答を取得するだけですか?ありがとう!コマンドで
なぜパイプを使用していますか? 'echo'の出力はデバイスに送られるので、パイプに何も書き込まれません。 – Barmar
'cat'はEOFを取得するまで読み込みを続けます。デバイスが応答後にEOFを送信しない場合は、応答全体を読み取ったタイミングをどのように知ることになっていますか? – Barmar
なぜこれのために外部コマンドを使用していますか?あなたのCプログラムで '/ dev/ttyACM0'をオープンするだけです。 – Barmar