RS-232C RS-232Cの何が変わったのか | |
|
性能の向上
RS-232Cは古くから有る通信方法である。 始めの頃のRS-232Cの通信はひどい物で、データの取りこぼしやデータ化けは日常茶飯事であり 安心してデータを送受信出来る状態では有りませんでした。 しかしながらその後PCの革命的な性能向上の結果、今ではデータの取りこぼしや、データ化けは 皆無と言って良いと思われます。 其の理由はPCのクロックの高精度化、PCのや周辺モジュールの高スピード化、PCのメモリー 容量の増加などであります。
通信の設定条件の変化に伴う推奨設定
RS-232Cの性能向上に伴って通信設定の中には現在では不要な設定が幾つかあります。 これは従来の機器との互換性を保つ為に残っているものです。 下に推奨設定値を示します。
PC対PCの通信 ソケット通信かRS-232Cか
通信データの量もPCと其の周辺機器の進歩に伴って大きく変化しています。 PC対PCのデータ通信はソケット通信が主流となっていますが、大量のデータをRS-232Cでやり取りすることは賢明とはいえません。 殆どのPCの通信の場合RS-232Cを使用しないでソケット通信にする方が良いでしょう。 ただし次の場合はRS-232Cを使用します。 1、他の機器と互換性の有るモードでRS-232C通信を行ないたい、例えばRS-232Cのシュミレーターを作る。 2、絶えず一定の速度(リアルタイム)で通信を行ないたい。 3、ネットワークを使いたくない。 1は例えばPC対制御機器で通信を行ないたいので有るが、まだ制御機器が無く他のPCを制御機器の変わりにしたい場合である。 制御機器との通信が上手くいかず、PC対PCで確かめることもよく使われる方法である。 2ですが、実はソケット通信はリアルタイムでは無いのです。 これはネットワーク依存であり、ネットワークが忙しかったり、PCが忙しい場合は通信が遅れる場合があります。 例えば、親のPCが1台有ってこれに2台のPCが繋がっており、各PCが他の機器の制御を行なっているような場合で速い制御が 必要な場合は、全てのデータのやり取りを、RS-232Cで行なった方が良いでしょう。
PC対機器の通信 ソケット通信とRS-232Cの両使い
最近の制御機器や測定器はソケット通信機能を持った物が多く、制御はRS-232C通信で、
データはソケット通信で送る方式が増えてきています。
VB6からVS2005で何が変わったのか。
VB6以前から大きく変わったのは次の2点です。
この2点を押さえておけばVB6以前とほぼ同じ考え方でコードの作成が可能となります。
1、イベントがマルチスレッド化された
一番大きい変更は何と言ってもVS2005の場合serialPort(SerialPort)コントロールのイベントが
セカンドスレッドで起こることです。 これは有る意味で待ちに待った仕様ともいえます。 セカンドスレッドにする事により、大きいデータの受信やデータ処理に時間がかかる場合でも メインスレッドが固まることがなくなりました。 ただし次の問題があります。 イベントの中で例えば受信したデータをメインスレッドのテキストボックスに書き込みたい等と言う場合は マルチスレッドの知識が必要不可欠となります。 この方法は 「マルチスレッド入門」 を問題解決は 「マルチスレッドの壁」 ご覧下さい。 なおserialPort(SerialPort)コントロールのイベントは、 1、DataReceived 2、ErrorReceived 3、PinChanged の3つだけです。
2、全てユニコードになった。
次はユニコードの問題です。
VS2005の文字操作は全てユニコードで行なわれます。 PC対PCの通信においては両方とも文字操作はユニコードですので問題はありませんが、 PC対機器の場合は問題になる事があります。 PC対機器のRS-232Cの通信をByteモードで行なう場合は全く関係有りませんが、 文字列で送受信する場合は問題になります。 大抵の機器はSift-Jisで文字列を扱いますが、PC側がユニコードで有る場合は、 正しい通信が行なわれません。 ユニコードについては 「Unicode入門」 を問題点の解決には 「Unicodeの壁」 をご覧下さい。 |