順次テキストに値を表示


のむ  2006-11-30 00:08:30  No: 134360

こんにちは。今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


特攻隊長まるるう  2006-11-30 06:48:24  No: 134361

[VB6.0]なら『コントロール配列』が使えるのでは?
 # 詳細はヘルプ(MSDN)や過去ログ検索で確認してください。

>テキストはtext1〜text10
コントロールの配列変数を用意して、ロード時とかにそのまま
格納してやっても良いけど。。。
 # 話は変わるけど、『テキスト』は文字のみのファイル/データの
 # 事だから意味が違うよ。TextBox コントロールの事を、勝手に
 # 省略したら相手に伝わらなくなるよ。


我龍院  2006-11-30 17:42:02  No: 134362

パソコン,パソコン間でのデーターのやり取りは、
RS-232Cでは無くTCP/IP WinSockで行うのが一般的です。
多分これは練習でやっているんでしょうね。

で、RS-232Cは物理層の規格なので、送られて来るデータのフォーマットが
わからないと受け取り側のデーター処理の方法は決められません。
つまり、文字データが送られて来た場合、受信側でどこまでが
TextBox1に入るデーターでどこまでがTextBox2に入るデータなのかを、
どのように判断するのでしょうか?


のむ  2006-12-06 01:55:09  No: 134363

アドバイスありがとうございます。すみません勝手な省略をして;コントロール配列を使ってみました。受信するたびにカウントを増やしていく感じにしてみましたが、どうもうまくいきませんでした。
              Case comEvReceive
                Buffer = MSComm1.Input
                Label1(i).Caption = Label1(i).Caption & Buffer
                i = i + 1
上のようにしてみましたがだめでした。Dim i as Integer、 i = 0  です。
TextBoxに入る値は数値で、送信側で温度を測定して、それを五秒単位で送信するといった感じです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加