タグ: クロスケーブル

LabviewでのRS232C通信1

先日のPapilioでのRS232C通信はの続きを行った。受信コマンドに読み取り可能バイト数を検出するコマンドから取得した値を入れるとうまく動作しないが、直接値を指定すると正常に受信することが判明した。

また、読み取るバイト数を指定すると、「文字列の奇数番目をバイト数分」読み取るという動作をした。例えば、5バイト読み取りを指定すると、「0123456789」という10文字分の文字列のうち「02468」という読み取りが行われた。また読み取りバイトの2倍以下の文字数だとタイムアウトエラーが発生し、また読み取りバイト数の2倍以上の文字列ではオーバーフロー分のデータは読み込まなかった。

Labviewダイアログ20170622_1
LabviewとPapilioの通信ダイアグラム
Labviewフロントパネル20170622_1
PCとPapilioの通信パネル

おそらく、Labview側で文字列の終端または文字列1つ分の検知がされていないか、設定不良でデータをしっかり読み込んでいないものと思われる。しかし、TeraTermでデータを確認すると送信が正常に行われていることが判明しているため、一旦この実験は終了し、次の実験を行うことにする。

 

次の実験では、PCにRS232Cケーブルを2本接続し、それぞれを変換コネクタでピンを変更(クロスケーブル化)しつつ接続した。変換時のピン配置は図の通り。(RS232Cについての詳細はこちらを参照のこと。)

OLYMPUS DIGITAL CAMERA
RS232C変換コネクタ
RS232C変換ピン
RS232C変換コネクタピン配置

TeraTermで動作を確認後、Labviewにて、4段階のデータを送信するダイアグラムを作製した。動作は確認できたが、段階切り替え時、複数のデータが送信されてしまう。対策として、何らかの操作が行われるまで待機させるコマンドを追加したが、1度に2~3データは送信されてしまっている。次回以降対策を考えることにする。

Labviewダイアログ20170622_2
4段階データ送信ダイアグラム
Labviewフロントパネル20170622_2
4段階データ送信パネル