From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



我該如何在Borland C或Delphi上使用NI-DAQmx ANSI C的函式庫?



主要軟體:
主要軟體版本: 7.3
主要軟體修正版本:
次要軟體: N/A

問題: 我在Borland編譯器使用NI-DAQmx ANSI C函式但是並沒有任何C函式被編譯。Borland的編譯器是ANSI的標準編譯器,為什麼這些函式無法運作?

解答: 美商國家儀器確實有提供NI-DAQmx C的匯入庫(import library)給Borland使用,但這只限於CVI的使用者。這個匯入庫只有在NI-DAQmx CVI的支援下會被安裝並且只有在CVI是在Borland相容模式或是使用者將Borland當成外部編譯器時才會有用。

如果您沒有CVI,這篇知識庫(KnowledgeBase)含有給各版本NI-DAQmx的Borland C的匯入庫。如果您使用NI-DAQmx,您應該可以用NIDAQmx.h標頭檔與連接適當的匯入庫版本來編譯您的應用程式。

如過您遭遇到錯誤 -50251:
當您在Borland下編譯您的NI-DAQ應用程式,遭遇到錯誤-50251。這是一個在做浮點遮罩時發生的錯誤。很明顯地,這個狀況在使用非Borland編譯器來編譯含有Borland內建元件的應用程式時時常發生。例如當您是圖使用一個來自Delphi的OpenGL,相同的錯誤就會發生。多數的編譯器會在內部使用預定的規則來處理浮點數的錯誤發生,然而有部分的編譯器會為了啟動編譯器適當的錯誤管理機制而顯示浮點轉換錯誤。在預設狀況下,Borland Delphi就會顯示浮點轉換錯誤,導致呼叫部分的DAQmx時會傳回這些錯誤而造成DLL錯誤。吾人必須隱藏或遮蔽(mask)掉少部分可能遭遇的不同錯誤案例來處理這些錯誤。如果您無法去遮蔽(mask)掉這些錯誤,這會導致他們會透過作業系統去顯示錯誤訊息並關閉掉DLL。請在呼叫任何DAQ函式前透過下列步驟去遮蔽其FPU錯誤。這項問題已在NI-DAQmx 7.4後被修正了。

在您使用NI-DAQ 7.3或更早以前版本的Borland C應用程式中,您必須在預設程式碼加入
_control87(MCW_EM,MCW_EM)
如下
#include<float.h>
main() {
_control87(MCW_EM,MCW_EM);
.
.
.
}


針對Borland Dephin,下面的KnowledgeBase提供了解決方案:
KB Online - 3D8C2TPC: Can I Make NI-DAQmx Calls From Borland Delphi?

相關連結:

附加檔案:





報告日期: 11/05/2004
最後更新: 12/14/2005
文件偏號: 3F4DMOTY