テクセル
Rubyシリアル通信ライブラリ(Windows用)

Ruby用シリアル(RS-232C)通信ライブラリ(wincom.rb)です。Windows上で動作します。 ruby 1.9.3p0(ActiveScriptRuby)で動作確認してます。wincom.rbのダウンロード(wincomV211.lzh)

Serialクラス シリアル通信を行うクラスです。

■ アクセサ

1)基本

基本的内容の設定を行います。

名称 内容 初期値
comno 通信ポートNo. 1~ 1
bRate 通信速度 CBR_110,CBR_300,CBR_600,CBR_1200,CBR_2400,
CBR_4800,CBR_9600,CBR_14400,CBR_19200,CBR_38400,CBR_57600,
CBR_115200,CBR_128000,CBR_256000 のいずれか
CBR_9600
byteSize 1文字長 4,5,6,7,8 のいずれか 8
parity パリティ EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY,SPACEPARITY のいずれか NOPARITY
stopbit ストップビット ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS のいずれか ONESTOPBIT
recbuf 受信バッファサイズ(バイト) 512
senbuf 送信バッファサイズ(バイト) 512

2)デバイスコントロール

デバイスコントロール関係の設定を行います。

名称 内容 初期値
fBinary バイナリィモード 0:無効 1:有効 Win32apiでは、常に1:有効とします。 1
fParity パリティチェック 0:無効 1:有効 1
fOutxCtsFlow CTS出力フロー制御 0:無効 1:有効(CTS信号の監視を行う) 1
fOutxDsrFlow DSR出力フロー制御 0:無効 1:有効(DSR信号の監視を行う) 1
fDTRControl DTRフロー制御の種類
  DTR_CONTROL_DISABLE(無効)
  DTR_CONTROL_ENABLE(有効)
  DTR_CONTROL_HANDSHAKE(ハンドシェイク)
DTR_CONTROL_ENABLE
fDsrSensitivity DSR信号の状態を検出できるかどうかを指定
  0:無効
  1:DSR信号がオンの時のみ受信文字を取り込む
1
fTXContinueOnXoff 受信時にXOFF文字送信後、こちら側の送信を継続するか停止するかの指定。 0:しない 1:こちら側の送信を継続する 0
fOutX 送信時のXON/XOFFフロー制御の有効、無効を指定 0:無効 1:有効 0
fInX 受信時のXON/XOFFフロー制御の有効、無効を指定 0:無効 1:有効 0
fErrorChar エラーによる置換の有効、無効を指定 0:無効 1:有効 0
fNull ヌル文字の廃棄有効無効 0:無効 1:有効(ヌル文字廃棄) 0
fRtsControl RTSフロー制御の種類
  RTS_CONTROL_DISABLE:無効,
  RTS_CONTROL_ENABLE:有効
  RTS_CONTROL_HANDSHAKE:送信バッファ半分以下でRTSハイ,4分の3以上でロー
  RTS_CONTROL_TOGGLE:送信文字ありでRTS信号ハイ、なしでロー
RTS_CONTROL_ENABLE
fAbortOnError エラー時に読み取り書き込みを中止するかの指定 0:中止しない 1:中止する 0

3)タイムアウトパラメータ

タイムアウトの指定を行います。

名称 内容 初期値
readIntervalTimeout 受信間隔タイムアウト 1000 msec
readTotalTimeoutMultiplier 受信合計タイムアウト係数 0 msec
readTotalTimeoutConstant 受信合計タイムアウト定数 0 msec
writeTotalTimeoutMultiplier 送信合計タイムアウト係数 20 msec
writeTotalTimeoutConstant 送信合計タイムアウト定数 1000 msec

タイムアウトは、以下の2種類が指定出来ます。

a) 間隔タイムアウト
受信文字間隔時間が指定された時間を超えると発生します。 受信は、「readIntervalTimeout」で指定します。送信ではサポートされてません。
b) 合計タイムアウト
送信または、受信の総時間が計算された時間を超えると発生します。
送信タイムアウト = writeTotalTimeoutMultiplier × 送信バイト数 + writeTotalTimeoutConstant
受信タイムアウト = readTotalTimeoutMultiplier × 受信バイト数 + readTotalTimeoutConstant
計算されたタイムアウト値が0の場合には、タイムアウトは使用されません。

送信タイムアウトが0の場合には、要求バイト数の送信が完了するかエラーが発生するまで送信処理が完了しません。 受信タイムアウトと間隔タイムアウトの両方が0の場合には、要求バイト数の受信が完了するかエラーが発生するまで 受信処理が完了しません。受信タイムアウトが0で間隔タイムアウトを指定した場合は、受信可能文字を読み取り 受信処理を完了します。


■ クラスメソッド

open

通信ポートをOPENします。

戻り値
正常時:nil 異常時:エラーコード

escapeCommFunc(ifunc)

通信デバイスの制御を行います。

ifunc 内容
SETXOFF XOFF 文字を受信したときのように送信を行います。
SETXON XON 文字を受信したときのように送信を行います。
SETRTS RTS( 送信要求)信号を送信します。
CLRRTS RTS( 送信要求)信号を消去します。
SETDTR DTR( データ端末準備完了)信号を送信します。
CLRDTR DTR( データ端末準備完了)信号を消去します。
RESETDEV 可能ならばリセットする (LPT デバイス)
SETBREAK ブレーク状態のセット
CLRBREAK ブレーク状態のクリア
戻り値
正常時:nil 異常時:0

close

通信ポートをCLOSEします。

戻り値
正常時:nil 異常時:0

send(schar)

文字列の送信を行います。

schar 送信文字列

戻り値
正常時:nil 異常時:0

receive

文字列の受信を行います。

戻り値
受信文字列 受信文字がない時は、nil

履歴

2011.07 Ver.2.11
ライブラリ「Win32api」を「dl/import」に変更
2011.05 Ver.2.0
Ruby 1.9対応
2005.05 Ver.1.0

wincom.rbの使用例

Rubyユーティリティ
TEXCELL HOMEPAGE
Copyright© 2005-2012 TEXCELL CORPORATION