Linux,RS232C,半二重
■ このスレッドは過去ログ倉庫に格納されています
0001シリアルさん
NGNGLinuxのRS232Cで、半二重通信しなくちゃ
いけなくなったんですが、
RTS/CTSの制御の仕方がわかりません。
もうひとつはttyの接続を前提とした通常の環境
をどうやっていじるのかいじりかたが分からず
困っています。HELP!
(接続する相手はModbusプロトコルの測定機です)
0002デフォルトの名無しさん
NGNGここだとみんなが怒るから教えてあげられませdん。
0003MUTT-RAY
NGNGLinuxに限らずUNIX系でシリアルポートを操作する
ならtermiosを調べるべし。
rawモードにするのと構造体のc_cflagにハードウェア
フロー制御の設定する所を調べるべし。
man termios
で充分だとおもうよ。
0004シリアルさん
NGNG送信と受信のケーブルを物理的にショートさせて、
自分の送信内容を反射して受信しないように
RTS/CTSを使うってハナシ。
一対一のハンドシェークじゃないです。
マルチドロップなんでTTYと論理が違います。
termiosだとTTYの論理だからどうしようってことなんです。
0005シリアルさん
NGNGRS232CからRXTXCSRSで485変換器に4線でつないで、
変換機から2線でマルチドロップします。
変換機へ送信したデータが反射して帰らないように
ゲートを操作しろってマニュアルにあるんです。
0006デフォルトの名無しさん
NGNG送信中は受信したくない、ということですか?
0007シリアルさん
NGNGサンプルプログラムに従うとそうなります。
物理的に送信と受信のケーブルがショート
しているので電気的にぶつかってもOKかどうかも心配です。
0008MUTT-RAY
NGNGそれだけならioctl()とTIOCMSETかなぁ?
TIOCM_CTSやTIOCM_RTSて制御線立てる。
いや、やはりワカラン。変換機の仕様が特に。
俺は、その辺りはモデムとUPSの制御プログラムしか書い
た事ないんだけどtermiosでRAWモードに設定するだけの
話で済んだからなぁ。
特にLinuxはcfmakeraw()があって楽だったよ。
0009シリアルさん
NGNGそうなんです。
バッファリングなしで、かつRS/CS任意ってモード
があればいいんですけど、
そうなるとTTYのロジックが動くとまずいって感じです。
TTY関係のソフトを完全に殺して生の232Cをread/write
できるドライバがあればいいんですけど。
0010MUTT-RAY
NGNGTTY関係ってのが端末制御の事なら、何度も
書いてるけどRAWモードにすればいいじゃん。
ただ、バッファリングはどうかな。チップ
レベルで16バイトだかなんだかバッファが
あるしな。カーネルドライバレベルでも
4096バイトくらいバッファリングしてるか
もしれんしね。
0011名無しさん@お腹いっぱい。
NGNGunsigned int m = TIOCM_RTS;
ioctl(fd, TIOCMBIS, &m);
でrts立てて
ioctl(fd, TIOCMBIC, &m);
でrts寝かせる
を必要なときにするでいいんでないの?
0012シリアルさん
NGNGお世話になりました。
0013いち
NGNGあーこれ、RTS立つ、そうんだけどたぶん違う挙動になってる。
通信できたのは下のページのやり方。
http://www.luv.asn.au/overheads/realworld/excerpt.html
これで二線式のModbusばっちりきれいに通信できました。
なのでセンサー機器の制御はLinuxでいけます。
めでたしめでたし。
0014名無しさん@お腹いっぱい。
NGNGえ、どう違うの?
0015ななし
NGNG周辺機器側が気に入らないようで返事してくれないです。
0016名無しさん@お腹いっぱい。
NGNG■ このスレッドは過去ログ倉庫に格納されています