termios構造体のc_cflagについて

LinuxC言語でシリアル通信に使うtermios構造体のc_cflag変数についてメモ。
数値はもしかしたら環境依存です。後に示すプログラムを実行して確認しました。

名前 説明
CBAUD 0x0000100F ボーレートのマスク。値は※1
CSIZE 0x00000030 データ長のマスク。値は※2
CSTOPB 0x00000040 ストップビットを 1 ではなく 2 にする
CREAD 0x00000080 受信を有効にする
PARENB 0x00000100 パリティありにする
PARODD 0x00000200 1で奇数パリティ / 0で偶数パリティ
HUPCL 0x00000400 最後のプロセスがデバイスをクローズした後、切断する
CLOCAL 0x00000800 モデムの制御線を無視する
CRTSCTS 0x80000000 ハードウェアフロー制御を有効にする

※1 ボーレートの値 (主なもの)

名前
B9600 0x0000000D
B19200 0x0000000E
B38400 0x0000000F
B57600 0x00001001
B115200 0x00001002
B230400 0x00001003
B500000 0x00001005
B1000000 0x00001008
B2000000 0x0000100B
B4000000 0x0000100F

※2 データ長の値

名前
CS5 0x00000000
CS6 0x00000010
CS7 0x00000020
CS8 0x00000030
	printf("CBAUD    = %08X\n",CBAUD);
	printf("CSIZE    = %08X\n",CSIZE);
	printf("CSTOPB   = %08X\n",CSTOPB);
	printf("CREAD    = %08X\n",CREAD);
	printf("PARENB   = %08X\n",PARENB);
	printf("PARODD   = %08X\n",PARODD);
	printf("HUPCL    = %08X\n",HUPCL);
	printf("CLOCAL   = %08X\n",CLOCAL);
	printf("CRTSCTS  = %08X\n",CRTSCTS);

	printf("B9600    = %08X\n",B9600);
	printf("B19200   = %08X\n",B19200);
	printf("B38400   = %08X\n",B38400);
	printf("B57600   = %08X\n",B57600);
	printf("B115200  = %08X\n",B115200);
	printf("B230400  = %08X\n",B230400);
	printf("B500000  = %08X\n",B500000);
	printf("B1000000 = %08X\n",B1000000);
	printf("B2000000 = %08X\n",B2000000);
	printf("B4000000 = %08X\n",B4000000);

	printf("CS5      = %08X\n",CS5);
	printf("CS6      = %08X\n",CS6);
	printf("CS7      = %08X\n",CS7);
	printf("CS8      = %08X\n",CS8);