☆☆☆☆☆☆☆☆☆Xportがおもしろい☆☆☆☆☆☆☆☆☆


【注意】
本文はネットワークに無知な人間の最近覚えた知識が記載されています。文中説明に間違いがあるかもしれません。ご容赦ください。


◎まえがき

自分はネットワークってあまり好きではない。
TCP/IPとかOSIのなんとか層とか解説本が分厚くチンプンカンプンで良く判らない。
単なる使う立場で考えてもネットワークってネクラのゲームオタクのイメージが離れない。
大体個人の家にPCが複数あってもネットワークなんて組まんだろ普通。

そういう理由で自分はネットワークに殆ど関心がなく知識もなかった。
ハブとルーターの違いも知らないほど。
そんな自分が、Xportを使ってみて少しだけネットワークに触れて興味を持ち始めた...そんなはなし。
細かな部分は各社のマニュアルや解説本を参考にしてほしい。
ここでは、実際にXportを使ってみて、自分なりに作業の流れをまとめてみた。


◎Xportとは

XportとはLantronix製、LAN-Serialモジュール。
電気系の雑誌や書籍でも使用記事が紹介されている。
このページをアクセスしている人は、大体判っていると思うので詳細は省略する。
小さなデバイスだけど、ネットワークの面倒なプロトコルを知らなくても簡単に使うことが出来る。スゲー。
浅田飴の缶みたいのに入って届く。(笑

◎とりあえず繋げてみる

まずはマニュアル読もう。
日新システムズのオリジナル日本語資料は要点が説明されており、Xportを理解するのに手っ取り早い。
ユニバーサル基板、ピッチ変換基板などを使い趣味&自作ッポイ感じで説明されている。
ICソケットブッタ切ってXportのピン配置に合わせる所など、サイコー!

回路設計。
自分の参考回路図をリンクしておく。レギュレーターとシリアルのRS-232C用のICが追加されただけの簡単な回路である。
(自分はLAN-Serial機能しか使用しない。)
シリアルポートはPCと同じD-sub9ピンオスで信号のピン配置もPCと同じにした。

動作確認に必要なもの。
@ローカルネットワークのLAN環境(ローカルネットワークどころかHUBもなくPCが1台しかない人はこちら。)
ALANケーブル(XportのLANポートに接続する。)
Bシリアルクロスケーブル(XportとPCの接続用。シリアルのピン配置をPCと同じにしたためクロスケーブルで接続する。)

LANに接続
最初に動かすにはローカルネットワークと繋ぐのが取っ付き易い。
ローカルネットワークのルーターがインターネットと繋がっている場合、ルーターがDHCPサーバーとなる。
ローカルネットワーク上のPCは普通DHCP機能が有効にされており、IPアドレスをルーターが動的に割り振っている。
XportもDefaultでDHCP機能有効になっているので、ローカルネットワークのHUBに接続するだけで、ルーターが自動認識してIPアドレスを割り振ってくれる。

XportのLAN上からの確認
まずXport購入時に付属されているCDの中のDeviceInstallerをPCにインストールする。(DeviceInstallerをインストール前に、.NetFrameworkのインストールが必須。)
DeviceInstallerを起動すると自動でローカルネットワーク上のXportを探し、表示されればXportがLAN上で認識されていることになる。
Deviceの詳細タブにて詳細情報と現在のIPアドレスが判る。
IPアドレスはルータにより異なるが、192.168.1.***等の、プライベートIPアドレスが割り振られる。
Xportのシリアル側に機器を接続してLAN上のPC等で制御する場合、プライベートIPアドレスが動的に割り振られてしまうと、Xportの電源投入毎にプライベートIPアドレスが変わるかもしれないので管理ができなくなる。
それでは都合が悪いので、Xport用の固定プライベートIPアドレスを設定するのが無難。
Xportに固定IPを割り当てるには、まずはルーターの設定が必要。
ルーターの設定は大体、IE等のWEBブラウザのURL欄に192.168.1.1を入力すると設定用のWEBページが表示されるようだ。
ルーターの機能設定にDHCPのアドレス範囲を設定するところがあるはずなので、例えば、192.168.1.2〜192.168.1.100
までをDHCP用と設定したら、ルーターは192.168.1.101以降のIPアドレスは使用しないので、Xportに192.168.1.101以降のIPアドレスを設定すれば良い。
(IPアドレス末尾は0と255は使用出来ない。)

XportのIPアドレス設定は、先のDeviceInstallerのWebConfiguration(WebManeger)にて設定可能。
他の関連する設定は
サブネットマスク=255.255.255.0
デフォルトゲートウェイ=0.0.0.0
でとりあえずよいでしょう。

固定IPアドレスを設定したら、Lantronix製ソフトウェアではなく、ネットワークコマンドのpingを使用してXportのLAN上の存在を確認しよう。
WindowsのDos窓から
ping 192.168.1.***(XportのIPアドレス)
と打ち込んで返事が返ればOK。
(LAN上で打ち込んだIPアドレスが存在しないとタイムアウトエラーとなる。)

Pingコマンド実行時の画面


◎とりあえず動かしてみる

次に、LAN−Serial通信動作を確認する為に、XportのシリアルポートとPCのシリアルポートをシリアルクロスケーブルで接続する。
LAN-Serial通信をテストするには、ターミナルソフトウェアが便利であり、HyperTerminalとTeraTermが代表的である。
自分はHyperTerminalの評判が悪いので最初からTeraTermを使用した。
TeraTermは起動時にLAN又はシリアルの通信を選択するウインドウが表示され使いやすい。
(LAN側からのみの通信ならばTelnetも使える。)
接続のイメージ。もちろんLANなので他のネットワーク端末が存在してもOK。
PC太郎がXportのLAN側、PC花子がシリアル側となりデータ通信を行う。
TeraTerm起動時の画面。
PC太郎はLAN側担当なので、TCP/IPのラジオボタンにチェックを入れる。
ここではXportのプライベートIPアドレスは
192.168.1.111
としている。
ポート番号TCPPort#:はシリアル通信を行うので10001を入力する。
PC花子のTeraTerm起動設定。
Xportとシリアルクロスケーブルで接続された
PC花子のシリアルポート1=COMポート1を選択する。
PC太郎、PC花子ともセットアップにて設定をする。
LocalEchoにチェックを入れる。
これをしないとキーボードの入力文字が画面に表示されないので、何を打っているのか判らない。
それとNew-LineのTransmitをCR+LFにする。
(Enterキー入力で改行とラインフィードが行われる。)
PC太郎から
Hello Xport
と打ち込んでみた。
PC花子にPC太郎からの
Hello Xport
が届いた。
PC花子より
thankyou
と返事を返した。
PC太郎にPC花子より
thankyou
の返事が届いた。


◎バイナリーデータを送る

上記にてテキスト情報が送受信出来た。自分はLAN側からバイナリーデータを送りたい。
TeraTermに丁度バイナリーファイルを送る機能があったので、使ってみたがどうもデータ落ちしているようだ。
日新システムズの資料によるとTelnetで通信をしているので、Telnetの制御コードの0xFFが送信出来ないらしい。
他にもTelnetの制御コードがあるのか?誰か教えて。
という事でTeraTermはダメ。
次にLantronix社のComPortRediretorを使用してみた。
自分はVisualBasic6.0のMscommを使用してのアプリを考えていたが、最新のComPortRediretor Ver4.1.0.2は問題がありMscommと通信出来ないとのこと。Ver3.1.0.1を使えばよいらしい。
早速オキラクにVer3.1.0.1ソフトをインストールして実行してみたが、どーもおかしい。
自分はMscommの配列を128バイトとしてデータを出力しているのだが、128バイト+余計な0x00が追加されている。(なんで?)
いろいろいじったがどうにもならず結局配列を1バイトにして1バイトづつ送ったら、とりあえず正確にバイナリーデータが遅れるようになった。(涙)
でもなんだかな。こんなんでいいのか? 
 ※1.下記参照
なんか腑に落ちないので、
LANのソケットプログラムについて調査する。(ソケットのプログラミング経験なし)
実際調べてプログラムしてみるとMscommより簡単だった。(もちろん俺レベルの低次元プログラムでということ。)
VisualBasicもネットワークの難しいところは、プログラマーから隠して単にWinsockにデータを渡すだけ。
変に仮想COMポートドライバーをインストールするよか全然よい。
とりあえずソケットプログラムでテキストもバイナリーもLAN→シリアルへ送信出来るようになった。
VBソフトウェアは近日UP予定。

簡単用語説明

ルーター 一般的にWAN(インターネット)とローカルネットワーク(LAN)を接続する機器
DHCPサーバー ネットワーク上のデバイスのIPアドレスを動的に割り振るサーバー。本来は有限のIPアドレスを有効に使う目的。
IPアドレス ネットワークデバイスを認識するための番号
プライバートIPアドレス ローカルネットーワークで使用されるIPアドレス。対してWANで使用されるIPアドレスはグローバルIPアドレス。
サブネットマスク IPアドレスの認識範囲設定。IPアドレスとサブネットマスクの論理積を取って位置する範囲のIPアドレスと直接通信を行う
デフォルトゲートウェイ WANを介して通信するまら、ローカルネットワークのDHCPサーバーのプライベートアドレス
ポート番号 Xportのシリアルポートは10001に決められている。




PCが1台しかない人

というかローカルネットワークのLAN環境がない人の為に、PC1台でもXportを動かす方法を紹介する。
PC1台でXportを繋げてどうするのかって?そう意味はないのだけどXportの動作チェッックが出来る。ただそれだけ。
@PCとXportのLANポートをLANクロスケーブルで接続する。
(通常使用するのはLANストレートケーブル。この方法ではクロスでないと通信出来ない。ストレートとクロスの見極めは...特にケーブルに印はなく、なんと実物を見て配線の色(内芯)とピン配置で判断するらしい。)
APCとXportのシリアルポートをシリアルクロスケーブルで接続する。
BTeraTermをLAN側とシリアル側ふたつ立ち上げて、それぞれ通信を行う。


あらかじめPCとXportのIPアドレスのネットワーク部(先頭側)は同じにする必要がある。
(192.168.1.**など)
サブネットマスクの設定も関係するが、IPアドレスのネットワーク部が異なる設定がされているネットワークデバイス間は通信が出来ない。

では、DefaultでDHCP有効となっているXportのIPアドレスをどうやって設定するか。
Xportはシリアル側からの通信でもIPアドレスの設定が可能なので、この機能を使う。
または実証していないが、
DHCPのない環境では、XportはAutoIPで
169.254.*.*
となるので、PC側も同じIPアドレスのネットワーク部をあわて、サブネットマスクを255.255.0.0に設定すれば
通信できると思われる。



※1.
後日、自作VBプログラムのミスである事が判明。修正後、ComPortRediretor Ver3.1.0.1で問題なく動作した。
自作プログラムはWindowsMeでシリアルケーブル直結で動作確認済だったので、発見が遅れた。
Windows2000やXP環境だとComPortRediretorとは関係なく上記現象
が発生していた。
同じメーカーのOSなのに動作させるOSによってVBアプリの振る舞いが変わるなんて流石マイクロソフト。



HOME                   NEXT(インターネット経由の為の設定)