4

ioctl を使用して、Linux でシリアル ポートから読み取ることができるデータの量を判断できます。シリアルポートへの書き込み時に、シリアルポートにどれだけのバッファスペースが残っているかを判断することは可能ですか? 事実上、データのブロックをシリアル ポートに書き込みたいのですが、一度にすべてオフロードできる場合にのみ成功し、チャンクする必要がある場合は失敗します。ポートへの書き込みと読み取りはノンブロッキングです。これが UART バッファであるとは思っていませんが、カーネル メモリ バッファが UART バッファの前にあると思います (推測します)。

4

3 に答える 3

5

書き込み/出力の量を決定できます。

読み取り用:

ioctl(device_handler, TIOCINQ, &bytes);

書き込みの場合:

ioctl(device_handler, TIOCOUTQ, &bytes);

FIFO バッファのサイズ:

serial_struct serinfo;
memset(&serinfo, 0, sizeof(serinfo));
ioctl(device_handler, TIOCGSERIAL, &serinfo);
serinfo.xmit_fifo_size;

よろしく、VA。

于 2014-10-03T10:28:54.660 に答える
0

シリアルポートはブロックデバイスではなくキャラクターデバイスです。バッファはありません。キャラクター デバイス (シリアル ポート、キーボード、マウスなど) は、単語ではなく文字を読み書きするだけです。たとえば、誰かが「have a nice day」と書いた連載を聞いた場合、その人がタイピングを開始した時点から聞いていなければ、フレーズ全体が表示されません。聞くと入力した文字だけが表示されます

于 2012-11-02T18:50:42.980 に答える