[Armadillo:06064] Re: Armadillo-440でシリアル通信のボーレートを変更する方法について

和佐田 翔一 email@hidden
2010年 11月 2日 (火) 17:53:17 JST


古賀様

和佐田です。

早速、ご返信いただき、ありがとうございます。

> そうではなく、tcgetattr() を呼び出す前に、*oldtio に対して* bzero()
> を呼び出すように変えてみては、いかがでしょうか。
>   
上記アドバイスを受けて下記のように変更してみました。

----------------------------------------------------------------------------------

 fd = open("/dev/ttymxc1", O_RDWR | O_NOCTTY);

bzero(&oldtio, sizeof(oldtio));

tcgetattr(fd, &oldtio);
newtio = oldtio;

 …
---------------------------------------------------------------------------------

しかし、やはり送信ボーレートが9600bpsになってしまいます。

もしかしたら古賀様のアドバイスに対しての私の変更が間違っているのかもしれ
ません。
恐れ入りますが、上記変更内容についてご確認していただけないでしょうか。
宜しくお願いいたします。


On 2010年11月02日 17:18, Shin-ya Koga wrote:
> サムシングプレシャスの古賀です。
>
> 和佐田さん([Armadillo:06062]):
>   
>> 現在Armadillo-440にAndroidをのせてH8マイコンとシリアル通信を行おうと
>> 考えています。
>>
>> そこでArmadillo-440からH8マイコンに対して送信する際のボーレートを19200bps
>> などに変更出来るようにしたいのですが、9600bpsからうまく変更することがで 
>> きません。
>>
>> 下記にシリアル通信の設定を行っているソースを記載いたします。
>>     
> bzero() の呼び出し方を変えると良いのかも知れません。以下のソース
> では、tcgetattr() した後に bzero() を呼び出していますが、それだと、
> tcgetattr() で取得した termios 構造体のフィールドのうち、更新しな
> いものは、ゼロクリアされてしまいますよね。
>
>   
>> ---------------------------------------------------------------------------------- 
>>
>> int fd;
>> char snd_buf[5];
>> struct termios oldtio, newtio;
>>
>> fd = open("/dev/ttymxc1", O_RDWR | O_NOCTTY);
>>
>> tcgetattr(fd, &oldtio);
>> newtio = oldtio;
>>
>> bzero(&newtio, sizeof(newtio));
>>     
>>
> 上では、tcgetattr() で oldtio に取得した内容を newtio にコピーした
> 後、newtio の内容を bzero() でゼロクリアしていますよね。つまり、
> newtio = oldtio; という代入文によるコピーの効果を、捨ててしまって
> います。
>
> そうではなく、tcgetattr() を呼び出す前に、*oldtio に対して* bzero()
> を呼び出すように変えてみては、いかがでしょうか。
>
> --
> 古賀信哉 (株)サムシングプレシャス
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
>
>   




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