会社でRBIO-2Uのシリアル通信プログラムが動かなくなったので、テストプログラムでテストしてみた。
Ubuntu 9.10 Desktop kernel 2.6.31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
noizumi@pwin2:~/src$ ./testserial c_cflag : 800008BD 800008BD c_iflag : 4 4 c_oflag : 0 0 c_lflag : 0 0 c_cc[VINTR] : 0 0 c_cc[VERASE] : 0 0 c_cc[VKILL] : 0 0 c_cc[VEOF] : 4 4 c_cc[VTIME] : 0 0 c_cc[VMIN] : 1 1 c_cc[VSWTC] : 0 0 c_cc[VSTART] : 0 0 c_cc[VSTOP] : 0 0 c_cc[VSUSP] : 0 0 c_cc[VEOL] : 0 0 c_cc[VREPRINT] : 0 0 c_cc[VDISCARD] : 0 0 c_cc[VWERASE] : 0 0 c_cc[VLNEXT] : 0 0 c_cc[VEOL2] : 0 0 put_serial_string=0 ←ここでread()でブロックされて返ってこない。 |
Ubuntu 9.04 Desktop kernel 2.6.28-16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
noizumi@noizumi-desktop:~/src$ ./testserial c_cflag : CBD 800008BD c_iflag : 500 4 c_oflag : 5 0 c_lflag : 8A3B 0 c_cc[VINTR] : 1C 0 c_cc[VERASE] : 7F 0 c_cc[VKILL] : 15 0 c_cc[VEOF] : 4 4 c_cc[VTIME] : 0 0 c_cc[VMIN] : 1 1 c_cc[VSWTC] : 0 0 c_cc[VSTART] : 11 0 c_cc[VSTOP] : 13 0 c_cc[VSUSP] : 1A 0 c_cc[VEOL] : 0 0 c_cc[VREPRINT] : 12 0 c_cc[VDISCARD] : F 0 c_cc[VWERASE] : 17 0 c_cc[VLNEXT] : 16 0 c_cc[VEOL2] : 0 0 put_serial_string=0 res=1 0D: res=1 0A: res=1 4F:O res=1 4B:K res=1 0D: res=1 0A: |
9.04だと、”PCR01″って送信したら、”\r\nOK\r\n”って文字が返ってきている。
シリアルポートの設定は同じだが、read()で読み出した時の挙動が違う。
これは、kernel 2.6.31のFTDIのドライバか、シリアル関係がバグってそうな予感…。