スポンサーリンク
[VB6]MSCommコントロールのプロパティ
.NETのSerialPortコントロールへ移行する前に、VB6のMSCommが持つプロパティを見ていきましょう。VB6のMSDNからMSCommコントロールの主要プロパティを抜粋しました。
CommPort
通信ポート番号を設定または取得します。
1 から 16 までの任意の数値に設定できます。既定値は 1 です。PortOpen プロパティを使ってポートを開くときに、そのポートが存在しなければ、コミュニケーション (MSComm) コントロールによってエラー 68 (Device unavailable) が生成されます。
※ ポートを開く前に、CommPort プロパティを設定する必要があります。
Settings
通信速度、パリティ、データ長、およびストップ ビット長を文字列で設定または取得します。
PortOpen
通信ポートの状態を設定または取得します。ポートの開閉にも使用します。
input
受信バッファから文字列を取得し、その文字列を受信バッファから削除します。
Input プロパティによって読み取られるバイト数は、InputLen プロパティで指定します。InputLen プロパティを 0 に設定すると、Input プロパティ によって受信バッファの内容全体が読み取られます。
InputMode プロパティを使って、Input プロパティによって読み取られるデータの種類を指定できます。InputMode プロパティを comInputModeText に設定すると、Input プロパティによって、テキスト データがバリアント型 (Variant) で読み取られます。InputMode プロパティを comInputModeBinary に設定すると、Input プロパティによって、バイナリ データがバリアント型のバイト配列で読み取られます。
Outpu
文字列を送信バッファに書き込みます。
Output プロパティで、テキスト データまたはバイナリ データを送信できます。Output プロパティを使ってテキスト データを送信する場合は、文字列が格納されているバリアント型 (Variant) データを設定します。Output プロパティを使ってバイナリ データを送信する場合は、バイト配列が格納されているバリアント型データを設定します。
ANSI 文字列をアプリケーションに送信する場合は、通常はテキスト データとして送信できます。送信するデータに、埋め込み制御文字、null 文字などが含まれている場合は、バイナリ データとして送信できます。
InputMode
comInputModeText に設定すると、Input プロパティによって、テキスト データがバリアント型 (Variant) で読み取られます。comInputModeBinary に設定すると、Input プロパティによって、バイナリ データがバリアント型のバイト配列で読み取られます。
Inputlen
InputLen プロパティの既定値は 0 です。InputLen プロパティを 0 に設定すると、Input プロパティを使用したときに、コミュニケーション (MSComm) コントロールによって受信バッファの内容全体が読み取られます。
InputLen プロパティで指定されたバイト数が受信バッファ内にない場合、Input プロパティは長さ 0 の文字列 ("") を返します。InBufferCount プロパティをチェックすると、Input プロパティを使用する前に、必要なバイト数が受信バッファ内に存在するかどうかを調べることができます。
このプロパティは、固定長データ ブロック形式でデータを出力するマシンからデータを読み取る場合に役立ちます。
OutBufferCount
送信バッファに格納されているバイト数を返します。このプロパティを使って、送信バッファをクリアすることもできます。
スポンサーリンク
[.NET]SerialPortコントロールへの移行
ここからは実際に、.NETのSerialPortへ移行する方法を見ていきましょう。プロパティ別に移行方法を解説します。
CommPort
ポート番号の指定は、MSCommでは番号で指定していましたが、SerialPortでは、ポート名を指定します。
【MSComm】
ctrl.CommPort = 4
【SerialPort】
ctrl.CommPort = "COM4"
Settings
MSCommのSettings プロパティには、カンマ区切りで以下の4つの情報を設定します。
"BBBB,P,D,S"
項目 | 設定内容 |
---|---|
BBBB(1カラム目) | 通信速度 (bps) |
P (2カラム目) | パリティ(N:なし、E:偶数、O:奇数、M:マーク、S:スペース) |
D(3カラム目) | データ長 |
S(4カラム目) | ストップ ビット長 |
.NETのSerialPortコントロールへの移行は、次のように書きます。
【MSComm】
ctrl.Settings = "9600,N,8,1"
【SerialPort】
ctrl.BaudRate = 9600
ctrl.Parity = Parity.None
ctrl.DataBits = 8
ctrl.StopBits = StopBits.One
PortOpen
- 接続
【MSComm】
ctrl.PortOpen = True
【SerialPort】
ctrl.Open();
- 切断
【MSComm】
ctrl.PortOpen = false
【SerialPort】
ctrl.Close();
※ VB6のMSCommでは、通信速度などを指定するSettings
プロパティを設定する前に、PortOpen
プロパティをtrue
に指定しても問題ありませんでしたが、.NETのSerialPortコントロールのでは、先にSettings
の設定から行う必要があります。
input
【MSComm】
data = ctrl.Input
【SerialPort】
data = ctrl.ReadExisting()
InputMode
Inputlen
【MSComm】
ctrl.PortOpen = false
Output
【MSComm】
ctrl.Output = commandtext
【SerialPort】
ctrl.Write(commandtext)
OutBufferCount
- 取得 (Getter)
【MSComm】
If ctrl.OutBufferCount > 0 Then
【SerialPort】
If ctrl.BytesToWrite > 0 Then
- 設定 (Setter)
【MSComm】
ctrl.OutBufferCount = 0
【SerialPort】
ctrl.DiscardOutBuffer()
SThreshold
DTREnable
EOF
Enable
Handshaking
In Buffer Size
Left
NullDiscard
OutBuffer Size
Parity Replace
RThreshold
RTSEnable
0 件のコメント:
コメントを投稿