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