Raspberry pi で結果を送信する外部マシンがあります。私のエミュレータである Cutecom では、行ごとに問題なく結果が得られます。私は Codeblocks を使用し、これらのデータを 10 秒ごとに読み取る独自の C アプリケーションを作成しました。しかし、奇妙なことが起こります。行ごとに結果が表示されることもあれば、各行の最後に奇妙な文字 ^M ^J が表示されることもあり、その結果、ひどい最終結果が得られます。これらの EOF 文字は、外部マシンが Windows で開発されたためだと思います。
良い結果
+PARAMETERS: 45 BYTES FROM 0000:0000 (063)
MACHINE_1:(AN=23.45,H=34.56,D=12.34)
悪い結果
+PARAMETERS: 45 BYTES FROM 0000:0000 (063)^M^JMACHINE_1:
(AN=21.45,H=33.56,D=10.34)
わかりました、ここまで唯一の問題はコマンドラインが結果を表示する方法ですが、私の結果は問題ありません。しかし、strtok を使用していくつかのトークンを取得しようとすると、これらの文字が原因で深刻な問題が発生します。私に何ができる?これらの文字をエスケープするために何かを追加できますか?これは、マシンからデータを読み取るために使用するコードの一部です
char buff[300];
memset(buff, 0, sizeof(buff));
for (;;)
{
n=read(fd,buff,sizeof(buff));
sleep(1);
printf("%s", buff);
printf("\n");
....
....