Я работаю в проекте, который состоит в разработке кода, который позволяет собирать и собирать данные в масштабе в реальном времени. Я использую 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 мс. В любом случае это проблема скорости доставки, но не конфигурации портов.
Кто-нибудь может мне помочь? Заранее спасибо.