Как избежать проблемы конкатенации данных при чтении последовательного порта с использованием VBA? - PullRequest
0 голосов
/ 24 октября 2019

Я работаю в проекте, который состоит в разработке кода, который позволяет собирать и собирать данные в масштабе в реальном времени. Я использую VBA в Excel для этого. Это часть кода, которая считывает данные масштаба через последовательный порт и записывает в ячейку результат:

Do
   ' To exit the loop
   If blnExit = True Then
      Exit Do
   End If

   ' CommRead returns:
   ' 0 if it do not receive data,
   ' > 0 if it receive data,
   ' < 0 if an error has ocurred
   ' The parameters are the:
   ' ID port, string for the data and the maximum bytes for reading
   lngStatus = CommRead(intPortID, strData, 64)

   ' Clean the cell
   Range("A6").ClearContents

    If lngStatus > 0 Then
        ' Write the cell
        Range("A6").Value = strData
    End If
Loop

Моя проблема заключается в том, что полученные данные записываются сцепленными. Например, если полученные данные «18», в ячейке написано «1818». Я не работаю напрямую со шкалой, а с программным обеспечением, которое позволяет мне моделировать передачу данных через циклы. Называется "Serial Port Monitor". Порты являются виртуальными, созданными другим программным обеспечением, называемым «com0com». Редактировать: проблема в том, что данные записываются дважды (или больше, иногда). Должен быть записан один раз.

Моя стандартная конфигурация для портов: baud = 9600 parity = N data = 8 stop = 1. Я сделал несколько тестов, изменив конфигурацию портов, и это ничего не решает. Единственный способ убедиться, что эта проблема не возникла, это изменение миллисекунд цикла, когда данные отправляются. Если это занимает менее 1000 миллисекунд, проблема возникает. С большим временем этого не происходит. Вместо этого я попытался получить данные с помощью другого программного обеспечения, называемого «Advanced Serial Data Logger», и проблема возникает, только если это занимает менее 300 мс. В любом случае это проблема скорости доставки, но не конфигурации портов.

Кто-нибудь может мне помочь? Заранее спасибо.

...