[Armadillo:01695] Re: Armadillo-300のSerialPortBについて

SAITOH Akinori email@hidden
2007年 7月 2日 (月) 15:53:51 JST


齊藤と申します

中川祥裕 wrote:
> シリアルポートで外部機器との通信をしていたのですが、
> 通常にtermios構造体を書き換えて通信しようとすると、
> 受信のみうまくいきませんでした。

外していたらごめんなさい.
ヤマカンですが,速度の設定するために
termios構造体を勝手に書き換えてはいけないのでは?


 	bzero(&newtio, sizeof(newtio)); /* 新しいポートの設定の構造体をクリア
する */


 	newtio.c_cflag =  CRTSCTS | CS8 | CLOCAL | CREAD ;
	newtio.c_iflag = 0 ; ←bzero()しているのだから不要?
	newtio.c_oflag = 0 ;
	newtio.c_lflag = 0 ;
 	newtio.c_cc[VTIME]    = 10;    /* キャラクタ間タイマ */
	newtio.c_cc[VMIN]     = 0;     /* n文字来るまで,読み込みをブロックする */
	cfsetispeed(&newtio, BAUDRATE );
	cfsetospeed(&newtio, BAUDRATE );
	tcsetattr(・・・・・


オンラインマニュアルに書いてあります
 (POSIX says that the baud speed is  stored  in  the  termios  structure
 without  specifying  where  precisely,  and  provides cfgetispeed() and
cfsetispeed() for getting at it. Some  systems  use  bits  selected  by
CBAUD  in  c_cflag,  other systems use separate fields, e.g.  sg_ispeed
 and sg_ospeed.)


POSIXは通信速度がtermios構造体に格納されているとはいっているが詳細は
語らず,速度を取り扱うのにcfgetispeed() とcfsetispeed()を提供している.
あるシステムではc_cflagのCBAUDビットに速度を格納しているし,また
別のシステムでは独立したフィールド(たとえばsg_speedとsg_ospeed)に
格納している.

-- 
	齊藤明紀 email@hidden



armadillo メーリングリストの案内