Linuxシリアルポートプログラミング——入力キャッシュをクリアする
1635 ワード
背景
私たちの仕事では、シリアルポートは比較的よく使われるデータ伝送方式です.一部のアプリケーションシーンでは、プログラムが起動してシリアルポートを開いた後、シリアルポートが開く前の入力キャッシュデータ(すなわち、カーネルドライバが受信したがアプリケーション層によって読み出されていないデータ)を読み出すことを望んでいないため、入力キャッシュデータをクリア(消去、破棄)する必要がある.次に、Linuxシステム上のシリアルポートプログラミングを例に説明します.
テスト環境
ハードウェア環境:PCオペレーティングシステム:Ubuntu 14.04仮想マシン
テストコード
fd = open("devpath", O_RDWR|O_NOCTTY);
usleep(200000);
tcflush(fd, TCIFLUSH); //
tcflush(fd, TCOFLUSH); //
tcflush(fd, TCIOFLUSH); //
tcsetattr(m_ifd, TCSANOW, &strctNewTermios);
fd = open("devpath", O_RDWR|O_NOCTTY);
usleep(200000);
ioctl(fd, TCFLSH, 0); //
ioctl(fd, TCFLSH, 1); //
ioctl(fd, TCFLSH, 2); //
tcsetattr(fd, TCSANOW, &strctNewTermios);