Как снять ограничение на чтение, полученное от 232 рупий - PullRequest
0 голосов
/ 28 октября 2019

Мы используем гаджет, который работает со скоростью 115200 бод, теперь VBA для Rs 232 требует вставки ограничения на чтение полученных данных, но гаджет не требует этого ограничения.

Гаджет, который у нас нетТребовать каких-либо ограничений для данных, полученных от RS 232, как мы можем снять это ограничение? И порт должен оставаться открытым 24 часа, как нам это сделать?

Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
    Dim lngStatus As Long
    Dim strError  As String
    Dim strData   As String


    ' Initialize Communications
    lngStatus = CommOpen(intPortID, "COM" & CStr(intPortID), _
        "baud=115200 parity=N data=8 stop=1")

    If lngStatus <> 0 Then
    ' Handle error.
        lngStatus = CommGetError(strError)
    MsgBox "COM Error: " & strError
    End If


    ' Set modem control lines.
    lngStatus = CommSetLine(intPortID, LINE_RTS, True)
    lngStatus = CommSetLine(intPortID, LINE_DTR, True)

    ' Write data to serial port.
    lngSize = Len(strData)
    lngStatus = CommWrite(intPortID, strData)
    If lngStatus <> lngSize Then
    ' Handle error.
    End If



    ' Read maximum of 14400 bytes from serial port.
    lngStatus = CommRead(intPortID, strData, 14400)
    If lngStatus > 0 Then
        ' Process data.
    ElseIf lngStatus < 0 Then
        ' Handle error.
    End If

    ' Reset modem control lines.
    lngStatus = CommSetLine(intPortID, LINE_RTS, False)
    lngStatus = CommSetLine(intPortID, LINE_DTR, False)



    ' Close communications.
    Call CommClose(intPortID)

(1) Снять ограничение полученных данных (2) Порт должен оставаться открытым 24 часа

Еслиизмените этот код lngStatus = CommRead (PortID, strData, 14400) на lngStatus = CommRead (PortID, strData), тогда я получаю ошибку компиляции?

введите описание изображения здесь

1 Ответ

0 голосов
/ 30 октября 2019

Попробуйте этот код с бесконечным циклом:

    While True
        ' Read maximum of 14400 bytes from serial port.
        lngStatus = CommRead(intPortID, strData, 14400)
        If lngStatus > 0 Then
            ' Process data.
        ElseIf lngStatus < 0 Then
            ' Handle error.
        End If

    wend

Но, возможно, вам следует изменить размер пакета с 14400 на другое значение, более подходящее для вашей ситуации.

...