0

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 秒に分けるにはどうすればよいですか? 詳細が必要な場合は、お送りできます。

4

1 に答える 1