Armadilloフォーラム

シルアルインターフェースの設定変更について

tani1023

2015年5月22日 20時31分

お世話になります。谷です。
シリアルインターフェースのプログラムでのボーレート等の設定変更でつまずいてます。
下記のように、シルアルインターフェースをオープン後に設定変更、反映させています。

//UART5 シリアルインターフェース3
strcpy(dev,"/dev/ttymxc4");
fd = open(dev,O_RDWR | O_NOCTTY);
sprintf(log, "fd=%d\r\n", fd);
printf(log);
if(fd < 0){
printf("open err\r\n");
perror(dev);
return 0;
}
ret = tcgetattr(fd,&oldtio);

  //途中で設定変更・・

/* モデムラインをクリアする */
ret = tcflush(fd,TCIFLUSH);
if(ret)
printf("tcflush");
/* 新しい設定を適用する */
ret = tcsetattr(fd,TCSANOW,&newtio);
if(ret)
printf("tcsetattr");

ボーレートやパリティを変更したときに、なぜかシリアルインターフェース3(ttymxc4)での設定が反映されません。
(実際に送受信できず)同じプログラムを使用して、シリアルインターフェース1(ttymxc1)の設定はボーレートは変更されています。

シリアルインターフェース3(ttymxc4)に対して何か特殊な設定が必要なのでしょうか?
※ sttyコマンドにてttymxc4を設定変更することは可能でした

ご確認お願いいたします。

コメント

tani1023

2015年5月24日 20時06分

谷です。失礼いたしました。再度やってみると設定が反映されているようでした・・。
tcsetattrを行ってから時間がかかるようなことがあるのでしょうか??
一応解決とさせてください。よろしくお願いいたします。

> お世話になります。谷です。
> シリアルインターフェースのプログラムでのボーレート等の設定変更でつまずいてます。
> 下記のように、シルアルインターフェースをオープン後に設定変更、反映させています。
>
> //UART5 シリアルインターフェース3
> strcpy(dev,"/dev/ttymxc4");
> fd = open(dev,O_RDWR | O_NOCTTY);
> sprintf(log, "fd=%d\r\n", fd);
> printf(log);
> if(fd < 0){
> printf("open err\r\n");
> perror(dev);
> return 0;
> }
> ret = tcgetattr(fd,&oldtio);
>
>   //途中で設定変更・・
>
> /* モデムラインをクリアする */
> ret = tcflush(fd,TCIFLUSH);
> if(ret)
> printf("tcflush");
> /* 新しい設定を適用する */
> ret = tcsetattr(fd,TCSANOW,&newtio);
> if(ret)
> printf("tcsetattr");
>
> ボーレートやパリティを変更したときに、なぜかシリアルインターフェース3(ttymxc4)での設定が反映されません。
> (実際に送受信できず)同じプログラムを使用して、シリアルインターフェース1(ttymxc1)の設定はボーレートは変更されています。
>
> シリアルインターフェース3(ttymxc4)に対して何か特殊な設定が必要なのでしょうか?
> ※ sttyコマンドにてttymxc4を設定変更することは可能でした
>
> ご確認お願いいたします。
>
>