はじめまして。
現在,温度計を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
--------------------------------------------
受信するタイミングなのでしょうか?
それともコードが間違っているのでしょうか?
これでは、10バイト受信しても最後の1バイトしか
Text2.Textに残りませんよ。
別件でやってきた通りすがりの者です。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
(以下略)
ツイート | ![]() |