LinuxのC言語でシリアル通信に使う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);