Проблема со строкой чтения сериального порта

#vb.net #serial-port

Вопрос:

У меня есть приложение (vb.net), который надежно работал в течение 12 лет, но начал выдавать сообщения об ошибках.

Я вычисляю значения вращения — отправляю их на сервопривод — затем проверяю, завершена ли передача.

Проблема в том, что readline выдает мне ошибку тайм-аута

Вот код —

 Sub SendSerialData()
    CurrentPositionDisplay.BackColor = Color.White
    CameraServoReadOK = 0
    ' Send strings to CameraServo serial port.
    ServoCommdataOut = ServoCommdataOut amp; vbCr
    CameraServoComm.DiscardOutBuffer()
    CameraServoComm.ReadTimeout = 150
    CameraServoComm.Write(ServoCommdataOut)
    CameraServoReadOK = 0
    If VerboseLogging = 2 Then
        dtString = dispDt.ToString(datePatt)
        outMessage = dtString amp; " - " amp; ServoCommdataOut
        Call WriteToLog(outLabel, outMessage)
    End If

    If outLabel = "Starting Picture Sequence " Then
        SkipRead = True
    End If

    'wait code added to accomodate 5ms turnarround time at CameraServo
    Call DelayTimer(10)
    ' If SkipRead = False Then
    If SkipRead = False Then
        Try
            CameraServoCommDataIn = CameraServoComm.ReadLine()
        Catch ex As Exception
            outMessage = "Missed Read after servo write" amp; ex.ToString
            Call WriteToLog(outLabel, outMessage)
        End Try
        CameraServoReadOK = InStr(CameraServoCommDataIn, CameraServoresponseStartString, CompareMethod.Text)
        If CameraServoReadOK > 0 Then
            CameraServoStatusDataIn = CameraServoCommDataIn
        End If
    End If

End Sub
 

Комментарии:

1. проверьте, открыт ли порт или нет, прежде чем читать строку » если cameraServoComm. isOpen затем CameraServoCommDataIn = CameraServoComm.ReadLine() В противном случае вызовите WriteToLog(надпись «Порт закрыт .. «) Конец, если `

2. Привет — проблема решена, но все еще запутана — решением было перейти на другой разъем USB3 на материнской плате. Никаких тайм-аутов приема. Однако со старым портом я мог отправлять и получать с помощью эмулятора терминала без ошибок. Я попробую предложенный открытый тест теперь, когда я знаю, что могу вернуться к отсутствию ошибок при перемещении USB.