RS232Cによるバイナリデータを送受信するには?


ソンジョウ  2004-11-13 11:58:45  No: 117577

はじめまして。
現在,温度計をRS232C通信でリアルタイムにデータを取得しています。
通信仕様書によると,1バイトの「0x0B」バイナリデータを送信すると,
10バイトのバイナリデータが返ってくるとありますが,「208」としか
返ってきません。どの部分がおかしいのでしょうか?コードは以下です。
--------------------------------------
Private Sub Command1_Click()
    MSComm1.CommPort = 1
    MSComm1.Settings = "1200,n,8,1"
    MSComm1.InputLen = 0
    MSComm1.RThreshold = 1
    MSComm1.SThreshold = 1
    MSComm1.PortOpen = True
    MSComm1.InBufferCount = 0
    MSComm1.InputMode = comInputModeBinary
    
    MSComm1.Output = Chr(&HB)

Private Sub MSComm1_OnComm()
    Dim Buffer() As Byte

    Select Case MSComm1.CommEvent
        Case comEvReceive
            Buffer = MSComm1.Input
            Text2.Text = AscB(Buffer)
        〜エラー処理〜
    MSComm1.PortOpen = False
--------------------------------------------
受信するタイミングなのでしょうか?
それともコードが間違っているのでしょうか?


こう  2004-11-13 20:31:20  No: 117578

これでは、10バイト受信しても最後の1バイトしか
Text2.Textに残りませんよ。


マッスル  2004-11-27 18:09:23  No: 117579

別件でやってきた通りすがりの者です。Bufferで一旦全部受けたデータを、全体の長さをカウントしてその数だけループで回しながら表示する考え方でご所望の処理が実現できます。では。 

Select Case MSComm1.CommEvent  
  Case comEvReceive                
     Buffer = MSComm1.Input  
     N = LenB(Buffer)        
     For i = 1 To N Step 1
         buf = AscB(MidB(Buffer, i, 1))                 
         Text2.Text = Text2.Text + " " & Right("0" & Hex(buf), 2) 
     Next i

(以下略)


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

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






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