5 秒ごとに TTL デバイスからデータを受信しています。私はRaspberry Piを持っているので、Raspbian(Debianのような)を使用しています。Cutecom エミュレーターを使用すると、次のようなメッセージが表示されます。
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.45,Dw=10.19,VCC=3.85V)
5秒後
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.49,Dw=10.21,VCC=3.85V)
等
Codeblocks を使用して C でこれを実装しようとしています。シリアルポートを開く関数、構成関数、およびバッファを読み取る次の関数があります。2 つのループのみに for ループを使用しました。
int learn_port(int fd)
{
int n;
for (int x = 0; x<2; x++)
{
char buff[300];
memset(buff, 0, sizeof(buff));
n=read(fd,buff,300);
printf("%s\n", buff);
}
}
今、私の問題は、次のように5秒ごとに3つの結果があることです
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.45,Dw=10.19,VCC=3.85V)
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.49,Dw=10.21,VCC=3.85V)
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.49,Dw=10.21,VCC=3.85V)
5秒後
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.52,Dw=10.22,VCC=3.85V)
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.52,Dw=10.22,VCC=3.85V)
+PARAM: 44 BYTES FROM 0000:0000 (048)
MACHINE_1:(T=23.32,HR=43.52,Dw=10.22,VCC=3.85V)
最初に考えたのは、バッファのサイズを変更することでした。1行目だけ同じ大きさにする。それは機能しますが、デバイスがさらに多くの文字を送信することがあり、ひどい結果が得られます. キュートコムの結果のように、これらの 3 つの結果/5 秒を 1 つの結果/5 秒に分けるにはどうすればよいですか? 詳細が必要な場合は、お送りできます。