LoginSignup
0
0

More than 5 years have passed since last update.

unity > udp RS-232C 通信変換 > udpRs232c

Last updated at Posted at 2015-09-23
実装: Unity 5.1.3-f1 on MacOS X 10.8.5
動作確認:
1. MacOS X 10.8.5
2. Windows 7pro 32bit

RS-232C通信とUDP通信を変換したい。

code

v0.6 @ github

メインの処理は以下で実装

  • udpRs232cScript.cs

UDP通信をリレーするudpMonitorをベースにRS-232C送受信の処理を実装した。
9600bpsで通信をする。
処理のパフォーマンスはかなり悪いので、今後改善が必要。

使い方

接続例

  • UDP側 (192.168.10.3)
  • UDP-RS232C変換側 (192.168.10.8)

上記の2つを以下のように接続して試した。
(Assets/ConnectionDesign/ConnectionExample1.unity)

ConnectionExample1_unity_-_150923-udpRs232c_-_PC__Mac___Linux_Standalone__Personal_.jpg

COM5からCOM6へはクロス接続になるように、USBシリアルケーブル2本と自作のクロス接続治具を使用。
vmwareなど使えるのであれば、パイプを使えば同じことができる。

本来はCOM5から先は別のものがRS-232Cケーブルでつながっているという使用形態になるだろう。

使用例

192.168.10.8(Windows7)側でソフトを起動して以下で設定する。

  1. Settingボタンを押して、以下のように設定する
  2. OKボタンを押す
  3. ターミナルソフトをCOM6で立ち上げる
  4. ToggleCommにチェックを入れて、通信が始まる

Win7ProRadXE4.jpg

以下の手順での使用になる (使い方にまだ制限がある)

  1. 192.168.10.3からポート6000でUDP送信 :
    • 送信文字列が192.168.10.8のTerminalに表示される
    • 返信ポート番号 (53041など)が保持される
  2. 192.168.10.8のTerminalから送信
    • COM6->COM5->UDP(53041)経路で192.168.10.3に送信される
  3. 2の処理を繰り返すことができる

1の手順をやり直すと、別の返信ポート番号(例: 48136)が割り当てられ、2の手順を繰り返すことができる。

上記の手順(1)の例として、192.168.10.3(Macのターミナル)にて以下でUDP通信を確立し、192.168.10.8のTerminalにhelloが表示される。

$ echo "hello" | nc -u 192.168.10.8 6000

手順(2)の例として、192.168.10.8のTerminalで入力した文字列が192.168.10.3(Mac)のターミナルに送信される。

$ echo "hello" | nc -u 192.168.10.8 6000
abcdefghijkl

不備

  1. 処理に余計なwaitがかかっている。
  2. 使い方に制限ある。

v0.6.1 (RS-232C入力改善)

RS-232Cからの入力時の送信を速くなるようにした。

v0.6.1 @ github

検討中

UDPのポート番号(6000と任意番号)の設定を反対にすれば、UDP接続を確立しっぱなしにしなくていい気がする。
そうした場合、192.168.10.8はUDP経路で来るものをポート番号関係なしですべてCOM5に送ることになる。何らかのフィルタが必要になるかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0