FANUC開(kāi)發(fā):動(dòng)態(tài)鏈接庫(kù)DLL在C中的應(yīng)用
要開(kāi)發(fā)FANUC程序,首先需要引入FANUC提供的動(dòng)態(tài)鏈接庫(kù)DLL。只有正確引入這些DLL文件,才能調(diào)用其提供的函數(shù)。在C#中通??梢酝ㄟ^(guò)右鍵項(xiàng)目名稱然后選擇“添加引用”來(lái)導(dǎo)入DLL文件,但是FANU
要開(kāi)發(fā)FANUC程序,首先需要引入FANUC提供的動(dòng)態(tài)鏈接庫(kù)DLL。只有正確引入這些DLL文件,才能調(diào)用其提供的函數(shù)。在C#中通??梢酝ㄟ^(guò)右鍵項(xiàng)目名稱然后選擇“添加引用”來(lái)導(dǎo)入DLL文件,但是FANUC提供的DLL無(wú)法直接這樣導(dǎo)入,因?yàn)樗鼪](méi)有托管到公共語(yǔ)言運(yùn)行庫(kù)。因此,我們需要使用DllImport來(lái)將其導(dǎo)入項(xiàng)目。
使用DllImport導(dǎo)入DLL文件
DllImport默認(rèn)會(huì)在項(xiàng)目的exe所在目錄查找DLL文件,通常是在Debug目錄下。因此,我們只需將需要使用的DLL文件預(yù)先復(fù)制到該目錄。然后,在代碼中添加命名空間引用`using ;`,接著在類中添加DllImport修飾符來(lái)指定FANUC提供的動(dòng)態(tài)鏈接庫(kù)DLL的位置。
設(shè)置DllImport參數(shù)
DllImport有6個(gè)參數(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)的拼寫(xiě)完全匹配,默認(rèn)為false。
5. PreserveSig參數(shù):指示方法簽名是否應(yīng)該保留還是轉(zhuǎn)換,默認(rèn)為false。
6. SetLastError參數(shù):指示方法是否保留Win32上的錯(cuò)誤,默認(rèn)為false。
調(diào)用FANUC提供的DLL文件
引用了FANUC提供的動(dòng)態(tài)鏈接庫(kù)DLL之后,就可以開(kāi)始使用它了。使用DllImport修飾的方法必須用static extern修飾符進(jìn)行定義,并根據(jù)文檔中的說(shuō)明定義相應(yīng)的參數(shù)。將參數(shù)傳遞給函數(shù)并獲取返回值,文檔中提供了各種返回參數(shù)的含義,方便對(duì)比和理解。
示例代碼演示
下面是一個(gè)示例代碼演示,如何使用FANUC提供的動(dòng)態(tài)鏈接庫(kù)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; // 端口號(hào):8888
string timeout textBox3.Text; // 延遲時(shí)間(秒):10
int ret cnc_allclibhndl3(ip, (port), (timeout), out ushort h);
if (ret Focas1.EW_OK) // 和系統(tǒng)提供的參數(shù)進(jìn)行對(duì)比,EW_OK返回值為0,表示成功
{
("連接成功!");
}
else
{
(ret "-連接失敗!");
}
}
```
這樣,通過(guò)以上步驟,我們可以成功地在C中引入并使用FANUC提供的動(dòng)態(tài)鏈接庫(kù)DLL進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)對(duì)FANUC設(shè)備的控制和操作。