2017-06-26 42 views
0

我使用LabVIEW(版本7.0)通過串行連接控制設備。它使用USB連接,並作爲計算機上的虛擬串行端口(運行Windows XP)進行安裝。每當我的程序發送一個命令時,我的設備會不時崩潰,並且無法接受任何更多輸入(設備本身也停止工作),直到超時。串行通信在LabVIEW中崩潰

我看過使用Portmon的串行端口流量。每當設備崩潰時,串行驅動程序將發送我使用我的程序發送的命令四次而不是一次,並在兩者之間使用IOCTL_SERIAL_GET_COMMSTATUS命令。我看不到最後一個命令返回的內容,但我認爲之前的通信會發生一些事情。我在想我的端口配置不完全正確,但我不知道如何或爲什麼。每當我想寫一些東西時,我都會打開並關閉與設備的連接。

爲了完整起見,它的波特率爲9600,8位,無奇偶校驗,1個停止位,沒有流量控制。我知道這些參數的正確設置取決於設備,但製造商尚未提供任何推薦的設置。

+1

除了Portmon,您還可以使用NI I/OTrace獲得LabVIEW串口通信的視角 - http://digital.ni.com/public.nsf/allkb/282C5D41E2BA04F2862574BA007803B9。顯示爲紅色的行表示錯誤狀態。 –

+0

爲了幫助您,您需要提供更具體的信息。你連接了什麼設備,你使用了哪個驅動程序,並且可以張貼你的labview代碼的摘錄,儘管正如所暗示的那樣,它可能不是問題。你有沒有使用相同的驅動程序沒有這個問題的另一個程序。 –

+0

@ D.J.Klomp具體來說,該設備是一個射頻發生器(由WindFreak製造,型號爲SynthUSBii)。它包含一個ATmega32U2微控制器。正如我在下面所描述的,爲每個命令添加一個回車符解決了我的問題,因此它不依賴於控制設備的程序。我意識到這個問題可能有點過於具體,無法在這裏處理,因爲我認爲它非常強烈地依賴於單片機的編程。 – Julius

回答

0

該驅動程序是某種類型的DLL?如果是這樣,這是問題的最可能的來源,並且您可能需要聯繫驅動程序的作者。 LabVIEW確實有崩潰的錯誤,但到目前爲止,簡單通信應用程序中最常見的崩潰來源是錯誤的第三方DLL。

換句話說,我懷疑這是一個LabVIEW問題,如果您編寫C程序與此驅動程序交談,您會遇到同樣的困難。我只知道你在這裏發佈的關於你的系統的內容,但是經過多年的追究,我會從設備製造商/驅動程序作者開始。

如果您有相反的證據,請分享。

+1

如果我使用一個程序通過串口直接與我的設備通信,它也會崩潰,如果我多次發送多個命令。我發現,如果我將回車添加到每個命令的末尾,則不會發生這種情況。當我將回車添加到我的LabVIEW程序發送的命令中時,解決了這個問題。 – Julius