0

モデムをシリアル ポート経由で PC (Linux) に接続し、書き込みおよび読み取りシステム コールを使用してモデムへの書き込みと読み取りを試みています。モデムからすべてのデータを読み取った後、読み取りシステム コール ブロックの読み取り中に、私のコードで以下に示すようにeofをチェックしました

  while(1)
  {
      if((rd_cnt =read(fd, &str, 1)) <=0)
    {
            perror("Read to dev failed");
            printf("error no=%d\n",errno);
            break;
    }

        printf("char =%c ->  hex=%x rd_cnt=%d\n",str,str,rd_cnt);
        sleep(3);
        str=0;
 }      

 if(rd_cnt==0)
    printf("EOF met\n");

しかし、eof を取得したことはありません。ファイルの終わりに到達するまで、モデムから送信されたすべてのデータを読みたかったのです。私を案内してください。

4

1 に答える 1

2

このようにコードを変更します

if((rd_cnt =read(fd, &str, sizeof(str))) <=0)
    {
            perror("Read to dev failed");
            printf("error no=%d\n",errno);
            break;
    }

状態確認でOKEOFです。

すでにチェックしているので、このコードを再度記述する必要はありません。

//if(rd_cnt==0)
    //printf("EOF met\n");
于 2013-08-23T10:02:26.350 に答える