使用 Call Library Function Node 呼叫會回傳空白字元(Null Character)的 DLL 函式



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

問題: 我的 Call Library Function Node 呼叫 DLL 函式時無法回傳完整的字串

解答: 讓 DLL 函式回傳包含空字元的字串是可行的。要做到這點,這個字串必須被設定為
數字的位元組陣列〈array of byte〉。以下的步驟是完成這個設定的方法之一:

1.  使用 Initialize Array VI 初始化一個陣列。將一個長度為 U8 的數字常數連結到
     Initialize Array 的 element 輸入;同時將 dimension size 設定大於或等於回傳
     字串中字元的數目。

2.  將這個初始化的陣列設定為 Call Library Function Node 的輸入參數。

3.  使用 Byte Array to String VI 將 Call Library Function Node 的位元組陣列〈
     array of byte〉的輸出轉換為字串。

以下附上兩個範例程式。這兩個 VI 都呼叫了 nationalinstruments.dll;而這個 DLL
回傳一個包含 14 個字元的字串 "Labview/0Rocks/0",其中 /0 是在兩個字中宇與字
串結束時的空白字元。第一個範例〈InvalidDLLReadNullBytes.vi〉沒有初始化位元
組陣列的資料型態因此沒有成功讀回回傳的字串;而第二個範例 〈IValidDLLReadNullBytes.vi
按照以上的步驟從 dll 中回傳完整的字串。

相關連結:

附加檔案:


nationalinstruments.dll - nationalinstruments.dllValidDLLReadNullBytes.vi - ValidDLLReadNullBytes.vi
ATTPIRGZ - ATTPIRGZ
InvalidDLLReadNullBytes.vi - InvalidDLLReadNullBytes.vi
ATTKV7FL - ATTKV7FL



報告日期: 06/14/2004
最後更新: 07/10/2007
文件偏號: 3AD7S2XR