1

comポートでデータを送信する臨床デバイスがあります。ENQでACKを送信した後、最初のフレーム(254)文字も受信したデバイスからデータを受信したい[ETB] [CR] [LF]文字を受信して​​から、もう一度ACKを送信します次のフレーム用ですが、EOT文字のみを受信するデータは受信しません

デバイスごとのデバイス通信は次のとおりです。

<-[ENQ]

-> [ACK]

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

-> [ACK]

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

-> [ACK]

<-[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 に答える