我試圖讀取從arduino獲得的傳感器值,並使用脈衝傳感器和DS18B20(溫度傳感器)在labview上顯示它,但是我需要while循環快速進行(大約50 ms ),以便從心臟脈搏中獲得波形圖,但是如果它比一分鐘慢,那麼這些值就會混合起來(我得到溫度而不是模擬傳感器值,反之亦然)有什麼建議可以解決這個問題? 我得到一個以逗號分隔的serial.print中的值,所以我在LV上使用了一個匹配模式來分隔它們使用labview從arduino快速獲得緩衝區
1
A
回答
1
如果您檢查端口上有多少個字節正在等待並且只讀取了該字節數,你可能會收到不完整的消息。如果沒有看到數據的例子以及發送它的Arduino代碼的線路,很難說這是怎麼回事,但總的來說,要讓這種數據交換工作的很好,我建議你:
- 確保Arduino代碼發送終止字符eg在每對值後換行(
0x0A
) - 當您在LabVIEW中配置串口時,設置並啓用它作爲讀取的終止字符 - 無論如何,這應該是默認值。在進入循環之前,我會清除讀取緩衝區,以清除LabVIEW代碼未運行時累積的任何舊數據。
- 在循環中,不要檢查
Bytes at Port
,但將串行讀取函數的大數值連接到bytes to read
。串行讀取將讀取串行緩衝區中的字節並將其返回幷包括終止字符,並等待它們在必要時到達(達到爲端口配置的超時設置)。這樣你應該總是收到一個完整的字符串。
要從接收到的字符串中獲取數據,我將使用Scan from String
函數。對於您的示例,它看起來好像合適的掃描字符串將是類似於%f,%f\n
的那樣,它指定由逗號分隔並以換行符結尾的兩個浮點值。從字符串掃描有一個錯誤輸出,並且還允許您爲每個要讀取的值默認連線,以便您可以檢測數據是否未被正確接收。
在此處顯示LabVIEW代碼而不是截圖的最佳方式是在圖中選擇它並選擇Edit
>Create VI Snippet from Selection
。這樣可以保存一個PNG圖像,其中嵌入了實際的LabVIEW代碼。另外請考慮安排你的程序框圖,以便數據流儘可能地從左到右,因爲這個約定使得它更容易閱讀。
相關問題
- 1. 如何從Emacs編譯緩衝區獲得快速狀態?
- 2. 在labview上快速讀取arduino的數據但是獲得ceros
- 3. 快速切換緩衝區?
- 4. 用於DMA的快速緩衝存儲器緩衝區
- 5. 快速響應正文到緩衝區
- 6. 快速修改OpenGL VAO緩衝區
- 7. Arduino清除緩衝區
- 8. LabVIEW中快速VI
- 9. 如何快速讀取OpenGL顏色緩衝區和深度緩衝區?
- 10. arduino串行緩衝區如何工作?
- 11. nginx無緩衝區高速緩存
- 12. 如何使用OpenGL獲得最大恆定緩衝區大小?
- 13. 快速切換到最後編輯的緩衝區
- 14. 用臨時緩衝區使用ofstream寫入臨時緩衝區
- 15. SQL緩衝區頁面快速增加SQL Server內存使用率
- 16. 使用緩衝區競爭編程的Python快速輸入輸出
- 17. 快速緩衝圖像壓縮
- 18. 從`NSValue`獲取緩衝區指針
- 19. 從rgb8_view_t獲取緩衝區提升gil
- 20. OpenCV從緩衝區獲取縮略圖
- 21. 從CImage獲取緩衝區數組AtlImage
- 22. 從QGLPixelBuffer獲取深度緩衝區
- 23. 從緩衝區獲得最清晰的iplimage
- 24. 如何從std :: string獲得可寫的C緩衝區?
- 25. 處理從rs232端口獲得的緩衝區數據
- 26. 使用緩衝區的ReadLine()?
- 27. 緩衝區使用示例
- 28. OpenGL中的緩衝區究竟是什麼,我如何使用多個緩衝區以獲得優勢?
- 29. 使用子緩衝區繪製緩衝區webgl
- 30. 加快IIS/.NET/LINQ從網絡緩衝區檢索數據的速度