我使用專有協議通過USB進行通信,並使用我構建的一些定製硬件。我有一個GUI來處理所有與該硬件的通信/交互,以及一個公開所有相關USB功能的(C#)DLL。我需要編寫一個用於與硬件通信的LabVIEW驅動程序(VI)。我的想法是,我只是使用LabVIEW來打開我的GUI並使用一個套接字將所有相關控件公開給LabVIEW。是否可以在LabVIEW中打開套接字並與我的GUI進行通信?這是一種不好的方法,或者我應該試着讓LabVIEW調用DLL並處理硬件控制而不是我的GUI(輪詢通信,請求/未經請求的命令等)?LabVIEW中的套接字
回答
是否有你想使用你的GUI的理由?就時間而言,我會說在LabVIEW中構建一個良好的前面板,並直接使用DLL與硬件進行通信。添加GUI僅僅是一個複雜的層面,可能以後難以維護?如果可以的話,爲什麼不用LabVIEW來做所有事情?
是的,LabVIEW支持同時使用TCP/IP和UDP的套接字。
您應該能夠創建一個連續運行的程序/服務,充當TCP/IP服務器。您可以發送命令並以字符串形式接收響應。如果你需要打包數據,你可以使用flatten to string命令。
本質上,您的應用程序應該被構造爲一個運行TCP/IP服務器的循環,以及另一個實際與儀器通信的循環。如果您需要從設備獲取數據到TCP客戶端,這可能會改變。一個生產者消費者模型,如果你願意:)
爲了讓你開始,打開NI範例查找器(幫助 - >查找範例)並瀏覽到網絡 - > TCP和UDP->簡單數據服務器.vi
他想用他的軟件與儀器進行通信,但是,他和LabVIEW是否能夠與他的軟件進行通信? – nekomatic 2011-04-15 12:04:21
這取決於誰將使用LabVIEW驅動程序和什麼。如果你將這個硬件移交給想要爲其創建自己的應用程序的其他人,他們可能更願意直接與DLL交談,而不是通過GUI。例如,如果您更傾向於使用LabVIEW中的現有軟件自動執行測試或在硬件上執行重複性任務,那麼從LabVIEW驅動GUI可能不太方便。
- 1. LabView TCP連接
- 2. 連接PIC 18f4455到LabVIEW中
- 3. Labview硬件接口
- 4. 連接到從LabVIEW
- 5. C中的Unix套接字讀取套接字中的環路
- 6. Python套接字 - 連接套接字
- 7. 中斷連接套接字
- 8. 從Boost.ASIO的套接字類中分離出本地套接字
- 9. 將數據發送到套接字列表中的套接字
- 10. 什麼是套接字編程中的RAW套接字
- 11. 網絡編程中的單套接字與雙套接字
- 12. Java中的SSL套接字
- 13. Delphi中的SSL套接字
- 14. Pascal中的套接字
- 15. WebView中的套接字Android
- 16. Java中的套接字流
- 17. ruby中的TCPServer套接字
- 18. Java中的套接字...?
- 19. C#中的UDP套接字?
- 20. Swipl中的套接字
- 21. Rust中的套接字
- 22. 在Labview中繪製直接運動
- 23. 套接字超時套接字編程
- 24. 套接字和TCP套接字
- 25. Java套接字到C套接字
- 26. Java套接字 - 套接字端口
- 27. java套接字SocketException套接字關閉
- 28. C++套接字-WString到Java套接字
- 29. JavaScript套接字與Flash套接字?
- 30. LabVIEW中的光標
這是正確的做法。我做了一些研究,發現LabVIEW與.NET非常緊密集成,只是調用DLL會比搞亂TCP/IP,套接字等容易得多。 – 2011-04-15 16:37:04
如果您正在尋找有關從LabVIEW調用DLL的文檔,NI有一系列文件可以很好地解釋如何傳遞一些潛在的複雜數據類型,如指針和數據類型: https://decibel.ni.com/content/docs/DOC-9072 – 2012-01-12 23:12:38