您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C#的二次開發(fā)及應(yīng)用舉例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C#的二次開發(fā)及應(yīng)用舉例分析”吧!
二次開發(fā)及應(yīng)用
支持二次開發(fā)是框架的重要特點(diǎn),作為設(shè)計(jì)者或架構(gòu)師能使自己的作品廣泛被使用是一件很榮幸的一件事。不管做過多少項(xiàng)目,能夠有自己的代表作品是一件很不容易的一件事,能夠通過一個(gè)作品廣泛的結(jié)交一些朋友也是一件很慶幸的事。所以,一直努力讓SuperIO更穩(wěn)定、更好的支持二次開發(fā)、更快的構(gòu)建一個(gè)通訊平臺(tái)。
這部分主要介紹利用SuperIO進(jìn)行二次開發(fā),開發(fā)流程如下圖:
1)目標(biāo)框架選擇Framework4.0
2)生成的目標(biāo)平臺(tái)采用x86
所有事例程序的目標(biāo)平臺(tái)采用x86。主要考慮到32位操作系統(tǒng)與64操作系統(tǒng)的兼容性。
在“開發(fā)包”中引用相關(guān)組件。如下圖:
通過繼承SuperIO.UI.MainForm窗體類可以構(gòu)建自己的宿主程序,這只是一個(gè)基本的界面框架,可以在此基礎(chǔ)上進(jìn)行擴(kuò)展。構(gòu)建好的宿主程序如下圖:
計(jì)算機(jī)發(fā)送0x61指令為讀實(shí)時(shí)數(shù)據(jù)命令,共發(fā)送6個(gè)字節(jié),校驗(yàn)和為從“從機(jī)地址”開始的累加和,不包括“數(shù)據(jù)報(bào)頭”、“校驗(yàn)和”和“協(xié)議結(jié)束”。
發(fā)送指令數(shù)據(jù)幀如下:
幀結(jié)構(gòu) | 數(shù)據(jù)報(bào)頭 | 從機(jī)地址 | 指令代碼 | 校驗(yàn)和 | 協(xié)議結(jié)束 | |
0x55 | 0xAA |
| 0x61 |
| 0x0D | |
字節(jié)數(shù) | 1 | 1 | 1 | 1 | 1 | 1 |
下位機(jī)接收到讀實(shí)時(shí)數(shù)據(jù)命令后,并校驗(yàn)成功,返回實(shí)時(shí)數(shù)據(jù),校驗(yàn)和為從“從機(jī)地址”開始的累加和,不包括“數(shù)據(jù)報(bào)頭”、“校驗(yàn)和”和“協(xié)議結(jié)束”。
接收數(shù)據(jù)幀如下:
幀結(jié)構(gòu) | 數(shù)據(jù)報(bào)頭 | 從機(jī)地址 | 指令代碼 | 流量 | 信號(hào) | 校驗(yàn)和 | 協(xié)議結(jié)束 | |
0x55 | 0xAA |
| 0x61 | 浮點(diǎn)型 | 浮點(diǎn)型 |
| 0x0D | |
字節(jié)數(shù) | 1 | 1 | 1 | 1 | 4 | 4 | 1 | 1 |
發(fā)送(十六進(jìn)制):0x55 0xaa 0x00 0x61 0x61 0x0d
接收(十六進(jìn)制):0x55 0xaa 0x00 0x61 0x43 0x7a 0x00 0x00 0x43 0xb4 0x15 0x0d
流量數(shù)據(jù)為:250.00
信號(hào)數(shù)據(jù)為:360.00
如下圖:
增加對(duì)SuperIO.dll的引用,如下圖:
新建兩個(gè)類:MySendProtocol 和MyReceiveProtocol,MySendProtocol繼承SuperIO.Device.DeviceSendProtocol基類,MyReceiveProtocol類繼承SCL.Device.DeviceReceiveProtocol。
MySendProtocol 和MyReceiveProtocol兩個(gè)類都重寫(override)
“Function61”函數(shù),MySendProtocol類中的Function61函數(shù)完成打包發(fā)送命令操作,MyReceiveProtocol類中的Function61函數(shù)完成解析數(shù)據(jù)操作,F(xiàn)unctionXX在兩個(gè)類中都會(huì)成對(duì)出現(xiàn),主要是為了好記。
在MySendProtocol實(shí)例中可以調(diào)用DriverFunction函數(shù),傳入相應(yīng)的命令,例如:0x61。會(huì)自動(dòng)調(diào)用“Function61”函數(shù),作為調(diào)用相應(yīng)命令函數(shù)的驅(qū)動(dòng)接口。GetSendCmdBytes函數(shù)接口是在DriverFunction函數(shù)基礎(chǔ)上封裝的,同樣也可以使用,但是要把“isbox“設(shè)置成false,否則會(huì)對(duì)發(fā)送的數(shù)據(jù)做特殊的處理。
在MyReceiveProtocol實(shí)例中可以調(diào)用DriverFunction函數(shù),傳入相應(yīng)的命令,例如:0x61。會(huì)自動(dòng)調(diào)用“Function61”函數(shù),作為調(diào)用相應(yīng)命令函數(shù)的驅(qū)動(dòng)接口。GetAnalysisData函數(shù)是在DriverFunction函數(shù)基礎(chǔ)上封裝的,同樣可以使用,只是多調(diào)用了一層GetCommand函數(shù)接口。
具體代碼請(qǐng)參見:DeviceDemo項(xiàng)目。
新建兩個(gè)類:MyDeviceParameter和MyDeviceRTDataMyDeviceParameter繼承SuperIO.Device.DeviceParameter類,用于保存?zhèn)鋮?shù),可以在此類中增加新的設(shè)備參數(shù)。
MyDeviceRTData繼承SuperIO.Device.DeviceRealTimeData類,用于保存設(shè)備的實(shí)時(shí)數(shù)據(jù),可以根據(jù)通訊協(xié)議自定義設(shè)備的實(shí)時(shí)數(shù)據(jù)。
這兩個(gè)類繼承基類后會(huì)自動(dòng)繼承SaveSerialize和GetSerialize兩個(gè)泛型函數(shù),SaveSerialize函數(shù)是把當(dāng)前對(duì)象序列化成XML,GetSerialize是把序列化的XML反向生成對(duì)象實(shí)例。SuperIO.Device.DeviceParameter類和SuperIO.Device.DeviceRealTimeData類是繼承自SerializeOperation類,他們的接口是IserializeOperation,SerializeOperation只是一個(gè)簡(jiǎn)單的序列化XML操作類庫(kù)。
如果開發(fā)者想完全自定義一個(gè)數(shù)據(jù)持久文件,那么可以繼承IserializeOperation接口,重寫相應(yīng)的接口函數(shù),自定義存儲(chǔ)數(shù)據(jù)的方式。
“構(gòu)建協(xié)議驅(qū)動(dòng)”和“構(gòu)建參數(shù)和實(shí)時(shí)數(shù)據(jù)實(shí)例類”兩節(jié)都是為構(gòu)建運(yùn)行設(shè)備做的前期準(zhǔn)備,將作為運(yùn)行設(shè)備的屬性。
新建一個(gè)設(shè)備類:MyDevice,它繼承自SuperIO.Device. RunDevice1。
開發(fā)者注意到還有一個(gè)SuperIO.Device. RunDevice類,它是比較早的運(yùn)行設(shè)備類,考慮的平臺(tái)的兼容性,現(xiàn)在還在繼承使用,但是新開發(fā)的設(shè)備模型不建議使用SuperIO.Device. RunDevice1類。它們都是繼承自IRunDevice接口。
增加對(duì)SuperIO組件的引用。
新建Form窗體,繼承SuperIO.Show.IGraphicsShow接口,并且實(shí)現(xiàn)接口功能。
通過UpdateDevice接口實(shí)現(xiàn)解析對(duì)象,并顯示解析對(duì)象后的數(shù)據(jù)。
增加對(duì)SuperIO組件的引用。
新建類,繼承SuperIO.Export.IExportData接口,并且實(shí)現(xiàn)接口功能。
通過UpdateDevice接口實(shí)現(xiàn)解析對(duì)象,并輸出格式化后的數(shù)據(jù)。
增加對(duì)SuperIO組件的引用。
新建類,繼承SuperIO.Services.AppService抽象類,并且實(shí)現(xiàn)接口功能。
可以通過UpdateDevice接口函數(shù)更新設(shè)備的緩存數(shù)據(jù)。
手動(dòng)對(duì)框架平臺(tái)的配置文件進(jìn)行修改,對(duì)配置信息不容易理解,也容易影響配置文件的格式,所以寫了一個(gè)配置工具“ConfigTool.exe”,對(duì)框架平臺(tái)的全局參數(shù)和驅(qū)動(dòng)信息進(jìn)行掛載、刪除等。
參數(shù)配置主要涉及到:軟件信息、安裝操作、網(wǎng)絡(luò)和串口通訊等信息。配置內(nèi)容如下圖
配置工具也可以掛載驅(qū)動(dòng)和插件,配置好之后,啟動(dòng)框架平臺(tái)可以對(duì)其進(jìn)行操作,以掛載設(shè)備驅(qū)動(dòng)為例如下圖:
到此,相信大家對(duì)“C#的二次開發(fā)及應(yīng)用舉例分析”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(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)容。