FANUC開發(fā):動態(tài)鏈接庫DLL在C中的應(yīng)用
要開發(fā)FANUC程序,首先需要引入FANUC提供的動態(tài)鏈接庫DLL。只有正確引入這些DLL文件,才能調(diào)用其提供的函數(shù)。在C#中通??梢酝ㄟ^右鍵項目名稱然后選擇“添加引用”來導(dǎo)入DLL文件,但是FANU
要開發(fā)FANUC程序,首先需要引入FANUC提供的動態(tài)鏈接庫DLL。只有正確引入這些DLL文件,才能調(diào)用其提供的函數(shù)。在C#中通??梢酝ㄟ^右鍵項目名稱然后選擇“添加引用”來導(dǎo)入DLL文件,但是FANUC提供的DLL無法直接這樣導(dǎo)入,因為它沒有托管到公共語言運(yùn)行庫。因此,我們需要使用DllImport來將其導(dǎo)入項目。
使用DllImport導(dǎo)入DLL文件
DllImport默認(rèn)會在項目的exe所在目錄查找DLL文件,通常是在Debug目錄下。因此,我們只需將需要使用的DLL文件預(yù)先復(fù)制到該目錄。然后,在代碼中添加命名空間引用`using ;`,接著在類中添加DllImport修飾符來指定FANUC提供的動態(tài)鏈接庫DLL的位置。
設(shè)置DllImport參數(shù)
DllImport有6個參數(shù)需要設(shè)置:
1. CallingConvention參數(shù):指定入口點(diǎn)的調(diào)用方式,默認(rèn)為。
2. CharSet參數(shù):指定用于入口點(diǎn)的字符集,默認(rèn)為。
3. EntryPoint參數(shù):指定在DLL中方法的入口點(diǎn)名稱,默認(rèn)為方法本身的名稱。
4. ExactSpelling參數(shù):指示EntryPoint是否必須與入口點(diǎn)的拼寫完全匹配,默認(rèn)為false。
5. PreserveSig參數(shù):指示方法簽名是否應(yīng)該保留還是轉(zhuǎn)換,默認(rèn)為false。
6. SetLastError參數(shù):指示方法是否保留Win32上的錯誤,默認(rèn)為false。
調(diào)用FANUC提供的DLL文件
引用了FANUC提供的動態(tài)鏈接庫DLL之后,就可以開始使用它了。使用DllImport修飾的方法必須用static extern修飾符進(jìn)行定義,并根據(jù)文檔中的說明定義相應(yīng)的參數(shù)。將參數(shù)傳遞給函數(shù)并獲取返回值,文檔中提供了各種返回參數(shù)的含義,方便對比和理解。
示例代碼演示
下面是一個示例代碼演示,如何使用FANUC提供的動態(tài)鏈接庫DLL:
```csharp
[DllImport("FWLIB32.dll", EntryPoint "cnc_allclibhndl3")]
public static extern short cnc_allclibhndl3([In, MarshalAs()] Object ip, ushort port, int timeout, out ushort FlibHndl);
private void button1_Click(object sender, EventArgs e)
{
string ip textBox1.Text; // IP地址:127.0.0.1
string port textBox2.Text; // 端口號:8888
string timeout textBox3.Text; // 延遲時間(秒):10
int ret cnc_allclibhndl3(ip, (port), (timeout), out ushort h);
if (ret Focas1.EW_OK) // 和系統(tǒng)提供的參數(shù)進(jìn)行對比,EW_OK返回值為0,表示成功
{
("連接成功!");
}
else
{
(ret "-連接失??!");
}
}
```
這樣,通過以上步驟,我們可以成功地在C中引入并使用FANUC提供的動態(tài)鏈接庫DLL進(jìn)行開發(fā),實現(xiàn)對FANUC設(shè)備的控制和操作。