kiu_kihara
2018年10月18日 12時14分
ハードウェアの知識がほぼありませんが、お客様の要望で試験的にarmadillo-IoTを導入しており、RS232c経由でライトを点灯させようとして行き詰まっています。
ライトの電源容量が大きいためパトライト社のPHC-D08 インターフェースコンバータを利用しています。
・Armadillo-IoT RS232CアドオンモジュールのTTYデバイスファイルは「/dev/ttymxc6」とマニュアルに記載
・PHC-D08 インターフェースコンバータの通信規格はRS-232c準拠、9600bps, データ長8ビット, ストップ1ビット、パリティなし、フロー制御なし
cu -l /dev/ttymxc6 -s 9600
上記コマンドを打つとConnected.と表示されるがその後ターミナルが何も受け付けない状態となってしまいます。
rubyのserialportモジュールを利用してみても何も返却されず繋がっているのかどうかすら分からない状態です。
require 'serialport' SerialPort.open('/dev/ttymxc6', 9600, 8, 1, SerialPort::NONE) do |com| while true cc = com.getc p cc break if (cc == "¥n") end end
-> nilが返却されます。
boot時のRS232モジュール認識はされています。
armadillo_iotg_addon addon: Atmark Techno RS232C board detected at Add-On Module I/F 1(Rev 2, SerialNumber=4735).
素人すぎてどこから理解すれば良いのかも分かっていません。もしお時間ある方がいましたら教えていただけるととても嬉しいです。
コメント
kiu_kihara
kiu_kihara
利用していたのがリバースケーブルだったのでストレートケーブルに変更し、マニュアル記載のttymcx6ではなくttymcx0にアクセスしたところ無事に接続できました。
繋がってしまえば単純な事だと理解できましたが、アドバイスがなければもっと時間をつかってしまっていたと思います。本当に助かりました。ありがとうございます。
接続のテストは下記のようにしました。
#コマンド実行 echo @??M! > /dev/ttymxc0 #もう一つターミナルを立ち上げレスポンスをループして受信 while true; do cat /dev/ttymxc0; done;
rubyのソースも共有します。
require 'rubygems' require 'serialport' $serial_port = '/dev/ttymxc0' $serial_baudrate = 9600 $serial_databit = 8 $serial_stopbit = 1 $serial_paritycheck = 0 sp = SerialPort.new($serial_port, $serial_baudrate, $serial_databit, $serial_stopbit, $serial_paritycheck) sp.read_timeout=1000 sp.write "@??M!" sp.close
saitoh
2018年10月18日 15時52分
一般論になりますが。
・まずはarmadilloは使わずにWindowsPCの通信ソフトでインターフェースコンバータを 手動操作
してみる(キーボードから入力できる文字だけで動作テストは出来ると思います)。
これがダメなら、ケーブル、インターフェースコンバータ、パトライト側に何か原因がありそうです。
トラブル原因としてありがちなのは
・ストレートケーブルとクロスケーブルのどちらを使うべきかの食い違いで送受信できない
・ハードウェアフローコントロールの設定の食い違いで送信できない
2~3000円のLED式RS232Cを買えば、CTS/RTC/DCD/DTRがどうなっているかわかります。また、9600bpsでしたら1バイトでも送受信があればTXD/RXDがチカッっと点灯するのが目視で分かります。これでそもそもコマンドが送れてないのか、、送れてるが反応がないのか、反応が返ってきてるが画面に出てこないのか、などが弁別できます。
こんなの
https://www.sanwa.co.jp/product/syohin.asp?code=D27-25