こんにちは。今RS-232Cでパソコン間で文字列の送受信のプログラムを作っているのですが、今できてる受信用のコードでは順次に同じテキストに文字列を受信して、表示するといった形になっているのですが、私の目標では文字列を一度受信したら、それをtext1で表示して、次のテキスト(text2)へ移って、次の文字列を受信してから、表示し、また次のテキスト(text3)へといった形にしたいのですが、よくわかりません。アドバイスお願いします。テキストはtext1〜text10までです。
Private Sub MSComm1_OnComm()
Dim Buffer As Variant
Select Case MSComm1.CommEvent
Case comEvReceive
Buffer = MSComm1.Input
Text1.Text = Text1.Text & Buffer
Case comEvSend
Case comEvCTS
Case comEvDSR
Case comEvCD
Case comEvRing
Case comEvEOF
Case comEventBreak
MsgBox "中断信号を受信", vbCritical
Case comEventCTSTO
MsgBox "CTSタイムアウト", vbCritical
Case comEventDSRTO
MsgBox "DSRタイムアウト", vbCritical
Case comEventFrame
MsgBox "フレーム エラー", vbCritical
Case comEventOverrun
MsgBox "ポート オーバーラン", vbCritical
Case comEventCDTO
MsgBox "CDタイムアウト", vbCritical
Case comEventRxOver
MsgBox "受信バッファ オーバーフロー", vbCritical
Case comEventRxParity
MsgBox "パリティ エラー", vbCritical
Case comEventTxFull
MsgBox "送信バッファがいっぱい", vbCritical
Case comEventDCB
MsgBox "予期しないDCBエラー", vbCritical
Case Else
MsgBox "その他の通信エラー", vbCritical
End Select
End Sub
[VB6.0]なら『コントロール配列』が使えるのでは?
# 詳細はヘルプ(MSDN)や過去ログ検索で確認してください。
>テキストはtext1〜text10
コントロールの配列変数を用意して、ロード時とかにそのまま
格納してやっても良いけど。。。
# 話は変わるけど、『テキスト』は文字のみのファイル/データの
# 事だから意味が違うよ。TextBox コントロールの事を、勝手に
# 省略したら相手に伝わらなくなるよ。
パソコン,パソコン間でのデーターのやり取りは、
RS-232Cでは無くTCP/IP WinSockで行うのが一般的です。
多分これは練習でやっているんでしょうね。
で、RS-232Cは物理層の規格なので、送られて来るデータのフォーマットが
わからないと受け取り側のデーター処理の方法は決められません。
つまり、文字データが送られて来た場合、受信側でどこまでが
TextBox1に入るデーターでどこまでがTextBox2に入るデータなのかを、
どのように判断するのでしょうか?
アドバイスありがとうございます。すみません勝手な省略をして;コントロール配列を使ってみました。受信するたびにカウントを増やしていく感じにしてみましたが、どうもうまくいきませんでした。
Case comEvReceive
Buffer = MSComm1.Input
Label1(i).Caption = Label1(i).Caption & Buffer
i = i + 1
上のようにしてみましたがだめでした。Dim i as Integer、 i = 0 です。
TextBoxに入る値は数値で、送信側で温度を測定して、それを五秒単位で送信するといった感じです。
ツイート | ![]() |