溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Visual C#怎么編寫(xiě)DLL

發(fā)布時(shí)間:2021-12-02 11:43:27 來(lái)源:億速云 閱讀:351 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“Visual C#怎么編寫(xiě)DLL”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Visual C#怎么編寫(xiě)DLL”吧!

一、引言

串行通訊口作為計(jì)算機(jī)與外部串行設(shè)備進(jìn)行數(shù)據(jù)傳輸?shù)闹匾丝?,因其使用?jiǎn)單、方便,在業(yè)界的各種計(jì)算機(jī)系統(tǒng)中得到了廣泛的應(yīng)用。由于應(yīng)用范圍很廣,軟件人員在串行通信方面也積累了豐富的編程經(jīng)驗(yàn)。關(guān)于串行通信的文章不時(shí)見(jiàn)于報(bào)端,并且還有一些專門(mén)討論
串行通訊編程的書(shū)籍,為軟件人員提供了豐富的資源,同時(shí)對(duì)初次涉足串口編程的軟件開(kāi)發(fā)者提供很好的范例幫助。

雖然關(guān)于串口編程的資料很多,但由于工程上需求多種多樣,需要根據(jù)不同的條件對(duì)串口進(jìn)行靈活控制,在實(shí)際應(yīng)用中,常用的方法有:
(1)用匯編或標(biāo)準(zhǔn)通訊函數(shù),往指定端口直接讀寫(xiě)數(shù)據(jù);
(2)利用Visual Studio提供的MSComm控件;
(3)使用Windows提供的API函數(shù)。

本文是作者在工程實(shí)踐中根據(jù)實(shí)際需要,在Visual C#環(huán)境中,直接使用Windows提供的API函數(shù)實(shí)現(xiàn)一個(gè)串行通信動(dòng)態(tài)鏈接庫(kù)(DLL)的完整實(shí)例,實(shí)例既給出了DLL函數(shù)的編寫(xiě)方法,又包括一份用其它編程工具(VB)對(duì)此DLL進(jìn)行聲明及調(diào)用的范例。為了使讀者一目了然,并減少代碼量,本例作了簡(jiǎn)化,但完全可以運(yùn)行。希望對(duì)需要進(jìn)行串行通信編程的同行以及需要學(xué)習(xí)編寫(xiě)DLL的編程愛(ài)好者提供一點(diǎn)幫助。

二、準(zhǔn)備知識(shí)

1、Visual C#編寫(xiě)DLL基本概念

動(dòng)態(tài)鏈接庫(kù)(DLL) 是Windows操作系統(tǒng)的基礎(chǔ),Windows API中的所有函數(shù)就是包含在DLL中,它有眾多優(yōu)點(diǎn),如:簡(jiǎn)化軟件項(xiàng)目管理以便分工合作,有助于節(jié)省內(nèi)存,便于資源共享并且可以用多種語(yǔ)言來(lái)編寫(xiě)。

用VC# 編寫(xiě)動(dòng)態(tài)鏈接有以下四種類型:Win32 DLL、MFC常規(guī)DLL(動(dòng)態(tài)鏈接MFC)、MFC常規(guī)DLL(靜態(tài)鏈接MFC)、MFC擴(kuò)展DLL等。本程序的編寫(xiě)為Win32 DLL。

2、串行通信基礎(chǔ)知識(shí)

在Windows系統(tǒng),系統(tǒng)通過(guò)一個(gè)叫DCB(Device Control Block)的結(jié)構(gòu)對(duì)串行口進(jìn)行配置,通過(guò)Windows API GetCommState函數(shù)可以得到串行通訊口的狀態(tài)信息,使用SetCommState函數(shù)可以對(duì)串行通訊口進(jìn)行設(shè)置,實(shí)現(xiàn)串行通信一般需按以下四步進(jìn)行:
(1) 打開(kāi)串口。由于串口是獨(dú)占性資源,因此應(yīng)用程序打開(kāi)串口后,別的應(yīng)用程序就不能再打開(kāi)此串口了。
(2)配置串口。利用GetCommState函數(shù)獲取串口當(dāng)前配置,根據(jù)需要更改DCB 結(jié)構(gòu)中的參數(shù),然后用SetCommState函數(shù)設(shè)置串口通訊參數(shù)。
(3)數(shù)據(jù)傳送。在串口上進(jìn)行數(shù)據(jù)發(fā)送接收,并根據(jù)需要進(jìn)行校驗(yàn),觸發(fā)一些事件等等。這個(gè)串口通訊DLL的目的就是收發(fā)數(shù)據(jù)。
(4)關(guān)閉串口。不需要此串口時(shí),關(guān)閉串口,供其它的應(yīng)用程序使用。

3、CALLBACK函數(shù)

在微軟的官方手冊(cè)中是這樣定義CALLBACK函數(shù)的:“CALLBACK函數(shù)是由應(yīng)用程序定義而由操作系統(tǒng)調(diào)用的函數(shù)”。在我們編寫(xiě)DLL時(shí),就是由應(yīng)用程序定義而由此DLL執(zhí)行的函數(shù),這一機(jī)制在被調(diào)用者(DLL)和調(diào)用者(應(yīng)用程序)之間進(jìn)行信息傳遞是非常有用的。這一特性,讓初學(xué)者較難理解,但是它卻是編寫(xiě)串行通信程序者的福音,正是由于使用這一特性,才可很方便地在動(dòng)態(tài)鏈接庫(kù)中實(shí)現(xiàn)MSComm控件中的OnComm 事件,并且可根據(jù)需要進(jìn)行靈活控制。

到此,相信大家對(duì)“Visual C#怎么編寫(xiě)DLL”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI