プロパティ
プロパティ名 | 意味 | 設定値 | 説明 |
---|---|---|---|
Password (PARAMで表記する場合は、"ライセンスキー") |
ライセンスキー | ライセンスキー | ベクターにて、送金すると、ライセンスキーが得られます。 このプロパティに、そのライセンスキーを設定すると、制限が解除されます。 Pro版では無効なプロパティです。 |
Ver | バージョン | − | コントロールのバージョンを返します。 シェアウェア版は、Share。Pro版は、Pro。 |
シリアルポート(Rs-232C)に関する項目 | |||
Port | シリアルポートの番号 | 1,2,その他 | Windowsで対応するポートを設定できます。 |
Bps | ボーレート | 256000,128000,115200, 57600,56000,38400, 19200,14400,9600, 4800,2400,1200,600, 300,110 |
シリアルポートのボーレートを設定します。 115200bpsより高速な設定に関しては、設定は可能ですが、一般的に動作しません。 また、実行時には、このプロパティに、110から256000までの任意の値を設定できます。ただし、動作は保証できません。 |
Bit | ビット | 8,7,6,5 | シリアルポートのビットを設定します。 |
Parity | パリティ | 0(ノンパリティ) 1(奇数パリティ) 2(偶数パリティ) 3(マーク) 4(スペース) |
シリアルポートのパリティを設定します。 |
StopBit | ストップビット | 0(1ビット) 1(1.5ビット) 2(2ビット) |
シリアルポートのストップビットを設定します。 |
Flow | フロー制御 | 0(なし) 1(DTR・DSR) 2(RTS・CTS) 4(Xon・Xoff) |
シリアルポートのフロー制御を設定します。 バイナリモードの場合、(Xon・Xoff)は使用できません。 |
コントロールに関する項目 | |||
ReadMode | 受信モード | 0(イベント) 1(ポーリング) |
受信データの受け取りをイベントで行うのか、ポーリングで行うのかを設定します。 ポーリングに設定した場合、イベントは発生しません。受信データは、Readメソッドを用いて取得します。 イベントに設定した場合、イベントが発生しますので、受信データは、イベント内で取得します。 |
WriteMode | 送信モード | 0(送信完了を待たない) 1(送信完了を待つ) |
送信完了を待たない設定(0)の場合、Write(Write)メソッドを実行すると、すぐに制御が返ります。 送信完了を待つ設定(1)の場合、送信完了まで制御が返りません。そのため、フロー制御を行っていると、送信が終了せず、プログラムが停止しているように見えることがあります。その場合、WriteTimeOutプロパティの設定を変更することにより、タイムアウト時間を変更できますので調整してください。 送信完了タイミングは、OnEventイベントにより、知ることができます。 |
WriteTimeOut | 送信タイムアウト時間(ミリ秒) | 0〜1000000 (デフォルト100) |
送信できない場合にタイムアウトで制御を返すまでの時間です。 ただし、送信時の正確なタイムアウト時間は、 WriteTimeOut+(データを送信するのに必要な時間×2) です。 このプロパティは、フロー制御を行う場合に、意味を持ちます。一般的な用途では、フロー制御を行う場合でも、変更する必要はありません。 |
BinaryMode | バイナリモード | 0(テキスト) 1(バイナリ) |
一般的には、テキストモードを利用します。 |
Header (PARAMで表記する場合は、"Head") |
ヘッダ | 0(なし) 1(STX) |
バイナリモードでは無効です。 ポーリングモードでは無効です。 詳細は下記を参照してください。 |
Terminator (PARAMで表記する場合は、"Term") |
ターミネータ | 0(なし) 1(ETX) 2(CR) 3(CR+LF) |
バイナリモードでは無効です。 ポーリングモードでは無効です。 ターミネータを設定する場合、1回の受信データは、5000バイト以内に収まるようにしてください。 詳細は下記を参照してください。 |
<ヘッダ・ターミネータの意味>
この2つのプロパティは、データを受信する場合に効果があります。
ヘッダに(STX)、ターミネータに(ETX)を設定した場合の例
データが以下のように送られてきたとします。
A,B,C,(STX),D,E,F,(ETX),G,(STX),H,
この場合、OnCom(Res)イベントでは、A,B,CとGは破棄され、(STX),D,E,F,(ETX)がResに値として入ります。
つまり、ヘッダからターミネータまでの値がResに入ります。
また、Hは、次に(ETX)が送られるまで保持され、この時点ではイベントは発生しません。
Hは、(ETX)が送られてきたときに、(STX),H,(ETX)として、Resに入り、イベントが発生します。
(注意)
ターミネータを設定した場合、データが送られても、ターミネータが送られるまでイベントが発生しません。そのため、ターミネータが、いつまでも送られないと一時的にデータを蓄えているバッファに収まりきらなくなり、エラーが発生します。このエラーは、OnErrorイベントで知ることができます。バッファのサイズは、5000バイトに固定です。
メソッド
メソッド名 | 意味 | 引数値 | 戻り値 | 説明 |
---|---|---|---|---|
Open() as Boolean OpenS() as Boolean |
ポートを開く | - | 正常: True エラー: False |
ポートを開き、通信を開始します。 ポートを開けない場合、falseを返します。 OpenSは、Openの特別なものです。 ライセンスキー(Password)が設定されていない場合、 Openを実行すると、シェアウェアの確認ダイアログが 表示されますが、OpenSでは、この表示はありません。 しかし、ライセンスキーが設定されていない場合、 使用期限が過ぎると使用できなくなるのは共通です。 OpenSは、試用期間中に、ダイアログ表示を行いたくない場合や、ASPでの利用の場合に、使います。 |
Close | ポートを閉じる | - | - | ポートを閉じます |
Write(Data as string) as Boolean | データの送信 | 送信データ | 正常: True エラー: False |
Falseが返る場合、通信ポートが開かれていないか、エラーが発生しています。未送信のデータをキャンセルし、新しく送信する場合には、InitWriteCmdを実行します。 バイナリモードの場合 BinaryModeプロパティを1に設定し、バイナリモードとした場合、バイナリデータを送信することができます。 バイナリデータを"01fE41"のように16進数の文字列に変換して、Writeメソッドに渡すことにより、バイナリデータを送信できます。 例 Write "01fe41" この場合、01,fe,41の3バイトが送信されます。 (注意) 00〜0fまでを表すとき、最初の0を忘れずに付けてください。 "F"のように1文字の場合、0として、送信してしまいます。また、"123"とした場合、"12"までしか送信されません。 |
WriteB(Data as long) as Boolean | バイトデータの送信 | 1バイトの送信データ | 正常: 値 エラー: -1 |
このメソッドは、BinaryModeプロパティが0、つまり、テキストモードでも実行できます。 |
ECF(Mode as integer) | 通信の拡張機能 | モード Mode 機能 1 XOFF文字を受信したときのように送信を行います 2 XON文字を受信したときのように送信を行います 3 RTS信号をON 4 RTS信号をOFF 5 DTR信号をON 6 DTR信号をOFF 8 Break信号をON 9 Break信号をOFF |
- | 通信の拡張機能を使用します。 このメソッドは、Openを実行し、通信状態にあるときしか意味を持ちません。 |
ClsBuffer | バッファのクリア | - | - | ターミネータを設定した場合、ターミネータを受信するまで、データは一時的にバッファに蓄えられます。このメソッドは、このバッファをクリアします。 |
InitWriteCmd() | 送信バッファのクリア | - | - | 送信完了を待たない設定(WriteModeが0)の時に有効です。 前回のWriteコマンドで送信したデータが、バッファに残っている場合、それをクリアし、新しくデータが送信できるようにします。 |
Wait(TimeOut as Long) | 指定時間待つ | ミリ秒 | - | 指定時間(TimeOutミリ秒)待ちます |
OutBufferLen() as Long | 未送信データ長 | - | 未送信データ長 | 未送信データの長さをLongで返します |
ポーリングモード(ReadMode=1)でのみ有効なメソッド | ||||
Read() as String | 受信データの取得 | - | 受信データ | 受信データを取得します。 テキストモードでは、受信データを文字列として取得します。 バイナリモードでは、バイナリデータを16進数文字列に変換して取得します。 |
InBufferLen() as Long | 受信データ長 | - | 受信データ長 | 受信データの長さを返します |
CommError() as Long | エラー情報の取得 | - | 0 エラーなし -1 受信バッファを越えた |
このメソッドを呼び出すと、エラー値は0に初期化されます。 イベントモードでは、常に0を返します。イベントモードでは、OnErrorイベントを用いてください。 |
無効なメソッド(過去との互換性のために残っている) | ||||
ReadyWrite() as Boolean | - | - | 実行可能: True 実行不可: False |
現在、未使用。無条件にTrueを返します。 (ver1.3までは、以下の機能を持ちました) 送信、つまり、Writeコマンドが実行可能であるかを調べます。 |
イベント
ReadModeプロパティがイベントの設定(0)の場合にイベントが発生します。
イベント名 | 意味 | 引数値 | 説明 | ||||
---|---|---|---|---|---|---|---|
OnCom(Res as String) | データ受信 | 値 | データを受信したときに、イベントが発生し、受信したデータは、Resに入ります。 このイベント内で、長い処理を行うと、この関数を実行中に、再びイベントが発生し、動作が不安定になります。 例:危険な記述 Private Sub Rs1.OnCom(Res) for i = 0 to 1000000 ・・・この関数を実行中に、次のイベントが発生し2重に実行されてしまいます。 next End Sub また、コマンド送信後の構文にブレークポイントを設定し停止させると、再開してもイベントが発生しません。 上記の例では、For文にブレークポイントを設定すると、データを受信しても、次のイベントが発生しません。 バイナリモードの場合 BinaryModeプロパティを1に設定し、バイナリモードとした場合、バイナリデータを受信することができます。この場合、受け取ったデータは、"01FeA0"のように、16進数で表現されます。この例では、01,FE,A0の3バイトを意味します。 ポーリングモードでは、イベントが発生しませんので、Readメソッドを使用して受信します。 |
||||
OnError(lErr) | エラー発生 | エラー番号 | エラーが起きると、イベントが発生します。
現在、受信バッファがオーバーフローを起こしたときのみ、発生します。この受信バッファは、ターミネータを受信するまでのデータを蓄えておくバッファを意味します。5000バイトのバッファを越えるとエラーが発生します。 ポーリングモードでは、イベントが発生しませんので、CommErrorメソッドを使用します。 |
||||
OnEvent(No as Long) | イベント発生 | イベント番号 | 特定のイベントが発生した時に、このイベントが発生します。
|
<ポーリングとイベント>
受信の仕方をポーリングと、イベントの2つの方法から選択できます。
イベント方式は、データが送られた場合、イベントが発生し、受信データを受け取る方法です。デフォルトは、この方式となっています。
この方法の利点は、受信を待つループや、タイマーなどを必要とせず、また、CPUを効率的に利用できることにあります。一方で、記述する部分が、送信と受信とで分かれるため、プログラムが分かりにくくなります。また、スクリプトによってはイベントが発生しないため、受信できない場合もあります。サンプルプログラムは、この方式を利用していますので、参考にしてください。
ポーリング方式は、シリアルポートの状態を一定時間ごとに調べる方法です。シリアル機器との通信を簡単に調べたい場合や、スクリプトがイベントを利用できない場合に利用します。
例
Rs.ReadMode = 1 | ポーリングモードに設定 |
Rs.Open | ポートのオープン |
Rs.Write "SEND START" | データの送信 |
Rs.Wait 1000 | 一定時間待つ |
Rec = Rs.Read | データの受信 |
Rs.Close | ポートのクローズ |
<送信完了を待つ、待たない>
送信時には、送信完了を待つ設定と、待たない設定があり、デフォルトでは、送信完了を待ちます。まず、次のプログラムをご覧ください。
例
Rs.Open | ポートのオープン |
Rs.Write "SEND START DATA1,DATA2" | データの送信 |
Rs.Close | ポートのクローズ |
Rs.Open | ポートのオープン |
Rs.Write "SEND START DATA1,DATA2" | データの送信 |
Rs.Wait 1000 | 一定時間待つ |
Rs.Close | ポートのクローズ |