1

我有一个在 com 端口上发送数据的临床设备,我想从设备接收数据,它在 ENQ 上发送 ACK 后也接收到第一帧(254)字符,它接收[ETB] [CR][LF]字符然后我再次发送 ACK对于下一帧,但不接收数据只接收 EOT char

根据设备的设备通信是:

<-[ENQ]

->[确认]

<-[STX]1H| * ** * ** * ** * ** * ** * ** * ** * -[ETB]21[CR][LF]

->[确认]

<-[STX]1H| * ** * ** * ** * ** * ** * ** * ** * -[ETX]8E[CR][LF]

->[确认]

<-[EOT]

我的代码是:

'MSComm1.Settings = "9600,n,8,1"
'MSComm1.InputLen = 1
Private Sub MSComm1_OnComm()
    Dim InBuff As String

    InBuff = MSComm1.Input
    if Chr$(5)=InBuff then    'ENQ received
        MSComm1.Output=Chr$(6) & VbCr
    elseif Chr$(10)=InBuff then 'LF received
        MSComm1.Output=Chr$(6) & VbCr
    else
        text1.text=text1.text & InBuff
    end if
End Sub

设备发送完整数据,因为 1 个软件带有接收完整数据的设备,但在再次发送 ACK 后我没有收到下一帧,如果有人知道下一个 ACK​​ 必须发送什么输出,请告诉我

提前致谢

4

1 回答 1

0

做这样的事情...

MSComm1.InputLen = 1 ' for sending single character from device
MSComm1.RThreshold = 1 ' for firing events on receiving a single character

Dim InBuff As String

if MSComm1.CommEvent = comEvReceive then
do 
    InBuff = MSComm1.Input
    Loop Until MSComm1.InBufferCount < 1

首先接收所有数据,然后以您自己的方式使用这些数据。

于 2014-12-03T12:25:58.027 回答