測定機器からMSCommでデータを受信するには?

解決


サラリーマンはつらいよ  2003-04-15 06:04:02  No: 106689

測定機器から、MSCommを使用してデータを受信しようとしている(VBA使用)のですが、Com_Open後の次の送信(Com_Send)データに対する受信はできるのですが、2回目以降の受信ができません。ちなみに、1回目の送信→1回目の受信→Com_Close→Com_Open→2回目の送信→2回目の受信とすると受信できるようになります。また、測定機器は、1データ毎にCRLFを返します。どなたか気がつくことがありましたら、教えてください。

Sub Com_Open()
MSComm1.CommPort = 3
MSComm1.Settings = "9600,E,7,1"
MSComm1.RThreshold=1
MSComm1.Handshaking=ComNon
MSComm1.PortOpen = True
End Sub

Function Com_Send(cmd As String)
     Do
     DoEvents
       If Recv_f=1 Then
          Exit Function
       End If
       (時間制限ループ抜け)
     Loop
    Com_Send = vbOK
End Function

Prinvate Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent 
       Case comEvReceive
            Recv_buff=Recv_buff & MSComm1.Input
            If Right(Recv_buff,2)=vbCrLf Then
                       Recv_f=1
            End If
       Case XXXX
                ・
                ・
End Select

Sub Com_Close()
MSComm1.PortOpen = Fault
End Sub


とらさぶろう  2003-04-15 13:16:15  No: 106690

Com_Send関数内で、Exit Functionしているのは、Exit Do なのでは?


猫八  2003-04-16 00:11:54  No: 106691

>MSComm1.Settings = "9600,E,7,1"
>MSComm1.Handshaking=ComNon

意外と珍しい設定をしていますが、送信側がこの仕様で送信していることを
確認してみてください。
↓が一般的です。
MSComm1.Settings = "9600,N,8,1"
MSComm1.Handshaking=comRTSXOnXOff


サラリーマンはつらいよ  2003-06-05 05:53:20  No: 106692

MSComm1.Handshaking=comRTSXOnXOff
を追加することで解決しました。
ありがとうございました。


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

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






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