【MSCommとは】
Windowsでパソコンのシリアル通信ポートを使ったプログラムを作成する際、
汎用に使えるカスタムコントロールが用意されています。
それがコミュニケーションコントロール(略してMSComm)です。
このMSCommはVisual Basic4.0以降に内蔵されたOCX型のカスタムコントロール
で、このOCXを使えばVisual BasicでフォームにMSCommコントロールを貼り付ける
だけで簡単にシリアルポートへの送受信プログラムを作ることができます。
OCXコンポーネントですので、作成したプログラムは、95/98/NT/2000のどの
Windowsにも共通で使えます。
(MSComm:Microsoft Communication Control)
【MSCommでできること】
コミュニケーション コントロールを使用すると、簡単なシリアル ポート通信機能を
アプリケーションに組み込むことができるだけでなく、さらに高度な機能を持つ、
フルスペックのイベントドリブンなコミュニケーションツールを作成することもできます。
MSCommはポート毎に1つ組み込むことが可能で、複数ポートへそれぞれ独立に
MSCommを組み込むことも出来ます。
コミュニケーション コントロールは2つの方法で通信プログラムを作ることができます。
(1) イベントドリブン(割込み方式)による通信
信号線の状態が変化したときや通信エラーが発生したときなどの「イベント」が
発生した瞬間に通知を受けとる方式です。
このような時には、「 OnComm イベント」を使うと、これらの通信イベントが発生した、
時点で割込みが発生するので、必要な処理を即行うことができます。
(2) ポーリング方式による通信
プログラム内で、MSComm内の状態を読み取ることで、状態変化や通信エラーの
チェック、確認を行う方法です。
この時には「CommEventプロパティ」の値をチェックして、イベントおよびエラーの
発生をチェックします。
【MSCommの特徴と機能】
コミュニケーション コントロールは、標準的なシリアルポートを利用するための
インターフェイスで、コミュニケーション コントロールの機能は下記となっています。
(1)シリアル ポートへの接続
16個の内の指定したポートへMSCommを接続します。
(2)コマンドの出力
RTS、CTSなどシリアルインターフェースとして用意されている各種の制御信号の
出力制御や、状態の入力をすることができます。
(3)データの送受信
シリアル通信で行うデータの送受信を行います。
(4)状態変化や通信誤りの確認
各種の制御信号の状態の変化や、データ通信中にエラーが発生したときにイベント
を発生させます。(割込み方式)
また状態を読み出して確認することもできます。(ポーリング方式)
【通信に必要なプロパティ】
MSCommには多くのプロパティが用意されていますが、通信だけを行うためには
下表のプロパティがあれば可能となります。
プロパティ 機 能 概 要 構 文 機 能 説 明 CommPort 通信ポート番号を設定
または取得object.CommPort
[ = value ]デザイン時に、value を 1 から 16 までの
任意の数値に設定できます。既定値は 1PortOpen 通信ポートの状態
を設定または取得object.PortOpen
[ = value ]PortOpen プロパティを真 (True)でポート開
PortOpen プロパティを偽 (False)でポート閉
受信バッファおよび送信バッファはクリアされるSettings 通信速度、パリティ
データ長、ストップ ビット長
の設定または取得object.Settings
[ = value ]value は、次の 4 つの設定値で構成
"BBBB,P,D,S"
BBBB:通信速度 (bps)、P:パリティ
D:データ長、S:ストップ ビット長
value の既定値は "9600,N,8,1"Input 受信バッファ内のデータ
を読み取り
受信バッファからその
データを削除するobject.Input Input プロパティによって読み取られる
バイト数は、InputLen プロパティで指定
InputLen プロパティを 0 に設定すると、
受信バッファの内容全体が読み取られるInBufferCount 受信バッファに格納されて
いるバイト数を返すobject.InBufferCount
[ = value ]モデムから転送されたバイト数を返す
InBufferCountプロパティを 0 にすると
受信バッファをクリアするOutput 送信バッファに文字列を書き込みます object.Output
[ = value ]テキスト データまたはバイナリ データを
送信できますOutBufferCount 送信バッファに格納
されているバイト数を返すobject.OutBufferCount
[ = value ]OutBufferCount プロパティを 0 にすると
送信バッファをクリアするCommEvent 最新の通信イベント
またはエラーを返すobject.CommEvent 通信エラーまたはイベントが発生すると
OnComm イベントが発生します。
CommEvent プロパティには、そのエラー
またはイベントを表す数値が設定されます。
CommEvent プロパティを参照すると、OnComm
イベントが発生する原因になった具体的な
エラーまたはイベントを調べられる