2011-04-14 33 views
2

我使用專有協議通過USB進行通信,並使用我構建的一些定製硬件。我有一個GUI來處理所有與該硬件的通信/交互,以及一個公開所有相關USB功能的(C#)DLL。我需要編寫一個用於與硬件通信的LabVIEW驅動程序(VI)。我的想法是,我只是使用LabVIEW來打開我的GUI並使用一個套接字將所有相關控件公開給LabVIEW。是否可以在LabVIEW中打開套接字並與我的GUI進行通信?這是一種不好的方法,或者我應該試着讓LabVIEW調用DLL並處理硬件控制而不是我的GUI(輪詢通信,請求/未經請求的命令等)?LabVIEW中的套接字

回答

4

是否有你想使用你的GUI的理由?就時間而言,我會說在LabVIEW中構建一個良好的前面板,並直接使用DLL與硬件進行通信。添加GUI僅僅是一個複雜的層面,可能以後難以維護?如果可以的話,爲什麼不用LabVIEW來做所有事情?

+1

這是正確的做法。我做了一些研究,發現LabVIEW與.NET非常緊密集成,只是調用DLL會比搞亂TCP/IP,套接字等容易得多。 – 2011-04-15 16:37:04

+0

如果您正在尋找有關從LabVIEW調用DLL的文檔,NI有一系列文件可以很好地解釋如何傳遞一些潛在的複雜數據類型,如指針和數據類型: https://decibel.ni.com/content/docs/DOC-9072 – 2012-01-12 23:12:38

2

是的,LabVIEW支持同時使用TCP/IP和UDP的套接字。

您應該能夠創建一個連續運行的程序/服務,充當TCP/IP服務器。您可以發送命令並以字符串形式接收響應。如果你需要打包數據,你可以使用flatten to string命令。

本質上,您的應用程序應該被構造爲一個運行TCP/IP服務器的循環,以及另一個實際與儀器通信的循環。如果您需要從設備獲取數據到TCP客戶端,這可能會改變。一個生產者消費者模型,如果你願意:)

爲了讓你開始,打開NI範例查找器(幫助 - >查找範例)並瀏覽到網絡 - > TCP和UDP->簡單數據服務器.vi

+0

他想用他的軟件與儀器進行通信,但是,他和LabVIEW是否能夠與他的軟件進行通信? – nekomatic 2011-04-15 12:04:21

1

這取決於誰將使用LabVIEW驅動程序和什麼。如果你將這個硬件移交給想要爲其創建自己的應用程序的其他人,他們可能更願意直接與DLL交談,而不是通過GUI。例如,如果您更傾向於使用LabVIEW中的現有軟件自動執行測試或在硬件上執行重複性任務,那麼從LabVIEW驅動GUI可能不太方便。