Home
登入.會員服務
論壇.討論區
LabVIEW教學
LabVIEW技術專家專欄
技術專欄
資源中心
線上購物
資料代管
手機簡訊
LabSMS
LabEmail
尋找 專案人才
LabVIEW自動控制專案
關於LabVIEW360
聯絡我們

labview call delphi dll function issue

labview

#1

前輩們大家好,最近在運用labview 的call library function load delphi 的dll function 運用,
但在運用的過程中目前遇到的問題有幾個如下所示:
1.load 此dll 檔後於function name 中是可以看的到dll檔中所建構的function
2.選擇完成要使用的function ,calling convection : stdcall (WINAPI)的方式


3.再來到parameters,此function 一共需樣6 input 參數及2 output 參數
5.目前6 input 及1 output Type :String String Formate :C String Pointer, 另外一個output 則是定義成return type Type:Numeric(Int32),如下圖所示:

4.開發者所提供的參數都為pch(delphi程式語言),如下圖所示.
image
-想詢問此為需要輸入string 的形式嗎?
5.將所有參數都設定完成時執行這個功能,output 卻沒有任何的值回饋,labview error out 卻回饋 error code 1097

-想詢問此問題是參數檔與dll 所需求的型態不符合?
6.目前利用C#此程式語言是能夠Import 此dll檔並且成功呼叫運用,程式碼如下所示:
[UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true)]
private delegate int fpCanIGo(string szServerIPAddr, string szProdModel, string szTrackSerial, string szTestStation, string szOperatorID, string szMachName, StringBuilder szSFCResponse);

-因為不太懂C#這個語言,只知道目前這樣的形式是可以運作

想請各位有經驗的前輩們指導此問題,如有需要再提供些什麼資料不靦告知,
以上,感激不盡.


#2

最後StringBuilder的資料型態是不是需要先傳入一個固定長度的字串,當作讀取回傳資料的暫存區?
這個部份先試試看.


#3

Hi Jimmy
StringBuilder 這個函式,Labivew 有對應vi 嗎?,
看網上大家運用這個函式時後面都會在帶一個ToString(),
對於這個方式真的很不懂,抱歉,我只懂Labivew 的語言,希望您這邊能多指導,

以上,非常感激不盡.


#4

StringBuilder的物件 需要設定容量和長度
所以在使用LabVIEW的 DLL node的時候,最後一個參數雖然是輸出的回傳訊息,但 是不是在同一個接點的輸入端要給先給一定長度的字串當作呼叫之後回傳訊息的暫存空間?
沒有想法就先朝這個方向試試看,類似這類工廠上傳資料到Shop floor的函數 通常用法差不多.


#5

Hi Jimmy
想請教您幾個問題,
1.如果C#中沒有特別使用charset這個函式來特別定義sting 的型態,例如單純宣告string AAA,這時的string 就是unicode UTF-16的資料型態?

2.假設如果C#中的String 是unicode UTF-16的資料型態,那labview 的String 是屬於ASCII 的資料型態,這時如果我用一個ASCII 轉unicode UTF-16的工具,基本上應該就能達到與C#的相同格式嗎?

以上,感激不盡.