欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

激光頭驅(qū)動(dòng)架構(gòu)及方法

文檔序號(hào):9929392閱讀:997來(lái)源:國(guó)知局
激光頭驅(qū)動(dòng)架構(gòu)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及系統(tǒng)驅(qū)動(dòng)架構(gòu)領(lǐng)域,具體涉及一種激光頭驅(qū)動(dòng)架構(gòu)及方法。
【背景技術(shù)】
[0002]T30智能采集終端系統(tǒng)是一款基于Wince6.0的定制系統(tǒng)。Wince系統(tǒng)在電力數(shù)據(jù)采集行業(yè)使用較為廣泛。激光頭作為數(shù)據(jù)采集的重要元件,在數(shù)據(jù)采集領(lǐng)域中有著龐大的使用量。
[0003]激光頭驅(qū)動(dòng)屬于流驅(qū)動(dòng)設(shè)備,目前的一般流驅(qū)動(dòng)的架構(gòu)及T30中激光頭驅(qū)動(dòng)的架構(gòu)中,Wince6.0系統(tǒng)操作系統(tǒng)提供了流接口函數(shù),如XXX_Init()、XXX_0pen()、XXX_Read()、XXX_ffrite()、XXX_Close ()等等。這一類(lèi)的驅(qū)動(dòng)由Device Manager來(lái)管理,它調(diào)用ActivateDeviceEx( )函數(shù)來(lái)加載流驅(qū)動(dòng)。ActivateDeviceEx()的參數(shù)是注冊(cè)表中相應(yīng)的鍵,用來(lái)設(shè)定加載流驅(qū)動(dòng)的屬性,如Index、Order、Pref ix等等。流驅(qū)動(dòng)的注冊(cè)表配置信息一般存放在[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下。流驅(qū)動(dòng)加載成功后,應(yīng)用程序通過(guò)調(diào)用CreateFile()、ReadFile()、WirteFile()等來(lái)訪問(wèn)流驅(qū)動(dòng)的設(shè)備。流驅(qū)動(dòng)可以動(dòng)態(tài)管理,驅(qū)動(dòng)調(diào)試助手就是用來(lái)幫助調(diào)試這一類(lèi)驅(qū)動(dòng)的。
[0004]綜上所述是流驅(qū)動(dòng)的一般解決方案,下面分析它的利弊。
[0005]一般的流驅(qū)動(dòng)能夠滿足激光頭數(shù)據(jù)采集的需求。根據(jù)多年激光頭使用經(jīng)驗(yàn),將激光頭用一般流驅(qū)動(dòng)進(jìn)行實(shí)現(xiàn)會(huì)存在以下問(wèn)題:
[0006]1.激光頭驅(qū)動(dòng)崩潰會(huì)導(dǎo)致系統(tǒng)device.exe崩潰,系統(tǒng)很多模塊驅(qū)動(dòng)將癱瘓。
[0007]2.激光頭型號(hào)眾多,在性能和使用方式上也存在差異,加大了用戶程序編寫(xiě)難度。
[0008]3.一旦激光頭型號(hào)更換,上層應(yīng)用程序需要重新改寫(xiě)。
[0009]針對(duì)上述問(wèn)題,本發(fā)明提出了新的激光頭驅(qū)動(dòng)架構(gòu)及方法,并使用在T30智能采集終端中。

【發(fā)明內(nèi)容】

[0010]為解決現(xiàn)有技術(shù)存在的不足,本發(fā)明公開(kāi)了激光頭驅(qū)動(dòng)架構(gòu)及方法,本申請(qǐng)對(duì)激光頭的支持采用了新的架構(gòu)和模式。該架構(gòu)沒(méi)有通過(guò)流驅(qū)動(dòng)的方式實(shí)現(xiàn),主要通過(guò)Windows服務(wù)技術(shù)進(jìn)行實(shí)現(xiàn)。
[0011]為實(shí)現(xiàn)上述目的,本發(fā)明的具體方案如下:
[0012]激光頭驅(qū)動(dòng)架構(gòu),包括:統(tǒng)一接口模塊、驅(qū)動(dòng)管理模塊及驅(qū)動(dòng)模塊;
[0013]所述統(tǒng)一接口模塊用于接收用戶層發(fā)送的命令并對(duì)該命令進(jìn)行解析,并將解析后的數(shù)據(jù)發(fā)送至驅(qū)動(dòng)管理模塊;
[0014]驅(qū)動(dòng)管理模塊對(duì)解析后的命令進(jìn)行分析并執(zhí)行,執(zhí)行命令時(shí)調(diào)用驅(qū)動(dòng)模塊,驅(qū)動(dòng)模塊驅(qū)動(dòng)激光頭的動(dòng)作。
[0015]進(jìn)一步的,所述激光頭驅(qū)動(dòng)架構(gòu)應(yīng)用在智能采集終端中。
[0016]進(jìn)一步的,智能采集終端為基于Wince6.0定制系統(tǒng)的智能采集終端,帶有采集設(shè)備,包括激光頭、紅外設(shè)備、藍(lán)牙設(shè)備。
[0017]激光頭驅(qū)動(dòng)架構(gòu)的工作方法,包括以下步驟:
[0018]步驟一:用戶層發(fā)動(dòng)命令至管理層;
[0019]步驟二:管理層分析命令并將分析結(jié)果發(fā)送至驅(qū)動(dòng)層;
[0020]步驟三:驅(qū)動(dòng)層執(zhí)行命令驅(qū)動(dòng)激光頭并返回?cái)?shù)據(jù)至管理層,
[0021]步驟四:管理層將激光頭返回的數(shù)據(jù)返回至用戶層,
[0022]步驟五:用戶層接收激光頭數(shù)據(jù)。
[0023]進(jìn)一步的,管理層中設(shè)有只有用戶層可見(jiàn)的API層,在系統(tǒng)Windows目錄下添加動(dòng)態(tài)庫(kù),在動(dòng)態(tài)庫(kù)中存儲(chǔ)有提供給用戶的激光頭的調(diào)用函數(shù),通過(guò)加載此動(dòng)態(tài)庫(kù),然后利用提供的激光頭調(diào)用函數(shù)實(shí)現(xiàn)對(duì)激光頭的操作。
[0024]進(jìn)一步的,API層通過(guò)系統(tǒng)信息中的硬件版本號(hào)來(lái)區(qū)分當(dāng)前設(shè)備的型號(hào),然后根據(jù)設(shè)備型號(hào)從驅(qū)動(dòng)層調(diào)用相應(yīng)的激光頭驅(qū)動(dòng)程序,驅(qū)動(dòng)層編寫(xiě)激光頭驅(qū)動(dòng)程序時(shí)調(diào)用API層提供好的統(tǒng)一接口即可。
[0025]進(jìn)一步的,驅(qū)動(dòng)層中包含多個(gè)激光頭的驅(qū)動(dòng)程序,用于適應(yīng)不同種類(lèi)的激光頭。
[0026]進(jìn)一步的,在動(dòng)態(tài)庫(kù)中,通過(guò)增加和修改Wince系統(tǒng)的注冊(cè)表下內(nèi)容實(shí)現(xiàn)注冊(cè)服務(wù),Wince系統(tǒng)啟動(dòng)時(shí)services.exe進(jìn)程會(huì)根據(jù)注冊(cè)表中的配置信息自動(dòng)加載動(dòng)態(tài)庫(kù)到內(nèi)存中。
[0027]進(jìn)一步的,動(dòng)態(tài)庫(kù)中定義了多個(gè)導(dǎo)出函數(shù),當(dāng)系統(tǒng)加載動(dòng)態(tài)庫(kù)時(shí)會(huì)首先調(diào)用相應(yīng)的函數(shù),在此API層中實(shí)現(xiàn)對(duì)激光頭所用串口的初始化操作,當(dāng)服務(wù)被卸載時(shí)會(huì)調(diào)用相應(yīng)的函數(shù),利用該函數(shù)實(shí)現(xiàn)對(duì)激光頭進(jìn)行了釋放工作。
[0028]進(jìn)一步的,在系統(tǒng)中添加第二動(dòng)態(tài)庫(kù),第二動(dòng)態(tài)庫(kù)主要作用是給應(yīng)用程序加載調(diào)用激光頭,第二動(dòng)態(tài)庫(kù)存儲(chǔ)了多個(gè)函數(shù),激光頭驅(qū)動(dòng)程序運(yùn)行在T30Service服務(wù)中,在第二動(dòng)態(tài)庫(kù)中通過(guò)相應(yīng)的函數(shù)來(lái)獲得T30Service服務(wù)的句柄,根據(jù)該句柄,使用相應(yīng)的函數(shù)來(lái)訪問(wèn)運(yùn)行在T30SerVice服務(wù)里的激光頭驅(qū)動(dòng)程序。
[0029]進(jìn)一步的,第二動(dòng)態(tài)庫(kù)中,驅(qū)動(dòng)層編程使用激光頭前應(yīng)先調(diào)用相應(yīng)的函數(shù)初始化激光頭,初始化激光頭包括激光頭型號(hào)的判斷和激光頭驅(qū)動(dòng)和串口鏈路層的初始化。
[0030]進(jìn)一步的,激光頭型號(hào)的判斷是通過(guò)設(shè)備硬件版本號(hào)進(jìn)行的,硬件版本號(hào)是寫(xiě)在T30智能終端中的一組數(shù)字組合,該組數(shù)字組合每位代表不同的含義。首先去讀取設(shè)備來(lái)獲得硬件版本號(hào),然后根據(jù)硬件版本號(hào)的命名規(guī)則分析這臺(tái)智能終端的硬件配置,其中就有激光頭型號(hào)的確定,一旦確定了激光頭的型號(hào),相應(yīng)的函數(shù)調(diào)用T30SerViCe服務(wù)中與之類(lèi)型相同的激光頭驅(qū)動(dòng)代碼來(lái)初始化激光頭驅(qū)動(dòng),最終完成激光頭驅(qū)動(dòng)的初始化。
[0031]進(jìn)一步的,第二動(dòng)態(tài)庫(kù)中,還包括關(guān)閉激光頭驅(qū)動(dòng)的步驟,關(guān)閉激光頭函數(shù)的主要邏輯也是調(diào)用到T30SerViCe服務(wù)里去釋放激光頭資源,不使用激光頭模塊時(shí)應(yīng)該調(diào)用關(guān)閉激光頭函數(shù)去釋放激光頭。
[0032]進(jìn)一步的,第二動(dòng)態(tài)庫(kù)中,還包括使能激光頭出光掃碼并返回所掃描到的條碼的步驟,當(dāng)驅(qū)動(dòng)層調(diào)用相應(yīng)的函數(shù)時(shí),該函數(shù)會(huì)根據(jù)初始化中判斷好的激光頭型號(hào)去調(diào)用相應(yīng)的激光頭掃碼函數(shù)。
[0033]進(jìn)一步的,第二動(dòng)態(tài)庫(kù)中,還包括設(shè)置激光頭配置參數(shù)的步驟,對(duì)激光頭的出光時(shí)間、掃碼類(lèi)型、安全等級(jí)均是用相應(yīng)的參數(shù)來(lái)控制的,驅(qū)動(dòng)層配置激光頭的參數(shù)。
[0034]本發(fā)明的有益效果:
[0035]1.脫離流驅(qū)動(dòng),采用Windows服務(wù)技術(shù)實(shí)現(xiàn)=Windows服務(wù)運(yùn)行流程是在系統(tǒng)開(kāi)機(jī)后自動(dòng)加載并在后臺(tái)運(yùn)行。當(dāng)激光頭驅(qū)動(dòng)出現(xiàn)問(wèn)題崩潰,服務(wù)會(huì)自動(dòng)重啟,不會(huì)影響到驅(qū)動(dòng)device.exe。
[0036]2.多種型號(hào)的激光頭驅(qū)動(dòng)集成在服務(wù)中:常用的幾種激光頭驅(qū)動(dòng)集成在了服務(wù)中,如明德Ue966和新大陸的Em3000等等。
[0037]3.智能調(diào)用正確型號(hào)的激光頭驅(qū)動(dòng):為了區(qū)分各種不同型號(hào)的激光頭,在T30系統(tǒng)中植入了硬件版本號(hào)這一機(jī)制。此機(jī)制原理是通過(guò)自助研發(fā)的寫(xiě)號(hào)工具向T30終端Flash中寫(xiě)入版本號(hào)。當(dāng)調(diào)用激光頭驅(qū)動(dòng)時(shí)首先通過(guò)驅(qū)動(dòng)版本號(hào)來(lái)判斷激光頭型號(hào),然后API層會(huì)選擇調(diào)用服務(wù)中的相應(yīng)的激光頭的驅(qū)動(dòng)程序,最終實(shí)現(xiàn)智能化調(diào)用。
[0038]4.API層統(tǒng)一的激光頭函數(shù):針對(duì)用戶層編程問(wèn)題,API層屏蔽了激光頭的型號(hào)問(wèn)題,用戶編程是用的是統(tǒng)一的激光頭調(diào)用函數(shù),如ZZ_LaSer_Init()等等函數(shù)接口。與激光頭型號(hào)相關(guān)的復(fù)雜問(wèn)題都在API層以下被處理了,保證了用戶程序的可移植性。
【附圖說(shuō)明】
[0039]圖1本發(fā)明的功能架構(gòu)圖;
[0040]圖2本發(fā)明的方法流程圖;
[0041]圖3本發(fā)明的程序?qū)崿F(xiàn)框圖。
【具體實(shí)施方式】
:
[0042]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明:
[0043]T30全稱T30智能采集終端,是振中公司推出的一款智能采集終端。該款設(shè)備主要在電力行業(yè)工作中使用。在T30智能采集終端系統(tǒng)中使用了新的激光頭驅(qū)動(dòng)架構(gòu)。
[0044]智能終端T30實(shí)現(xiàn)了對(duì)各種外設(shè)的支持(如攝像頭,wifi,藍(lán)牙等等)。其中對(duì)激光頭的支持采用了新的架構(gòu)和模式。該架構(gòu)沒(méi)有通過(guò)流驅(qū)動(dòng)的方式實(shí)現(xiàn),主要通過(guò)Windows月艮務(wù)技術(shù)進(jìn)行實(shí)現(xiàn)。
[0045]如圖2所示,激光頭驅(qū)動(dòng)架構(gòu)的工作方法,包括以下步驟:
[0046]步驟一:用戶層發(fā)動(dòng)命令至管理層;
[0047]步驟二:管理層分析命令并將分析結(jié)果發(fā)送至驅(qū)動(dòng)層;
[0048]步驟三:驅(qū)動(dòng)層執(zhí)行命令驅(qū)動(dòng)激光頭并返回?cái)?shù)據(jù)至管理層,
[0049]步驟四:管理層將激光頭返回的數(shù)據(jù)返回至用戶層,
[0050]步驟五:用戶層接收激光頭數(shù)據(jù)。
[0051]Windows服務(wù)是運(yùn)行在后臺(tái)沒(méi)有界面的服務(wù)程序,Wince6.0服務(wù)程序的建立方法主要是按照規(guī)則編寫(xiě)動(dòng)態(tài)庫(kù)DLL文件,T30智能終端的激光頭驅(qū)動(dòng)就編寫(xiě)在T30Service.dll動(dòng)態(tài)庫(kù)中,然后通過(guò)增加和修改Wince系統(tǒng)的注冊(cè)表HKEY_LOCAL_MACHINE\Services\Service下內(nèi)容實(shí)現(xiàn)注冊(cè)服務(wù)。這樣Wince系統(tǒng)啟動(dòng)時(shí)services.exe進(jìn)程會(huì)根據(jù)注冊(cè)表中的配置信息自動(dòng)加載T30Service.dll動(dòng)態(tài)庫(kù)到內(nèi)存中。這就是T30Service后臺(tái)服務(wù)的實(shí)現(xiàn)。
[0052]T30Service.dll一共定義了如下導(dǎo)出函數(shù):
[0053]ZZS_Init()
[0054]ZZS_Deinit()
[0055]ZZS_0pen()
[0056]ZZS_Close()
[0057]ZZS_Read()
[0058]ZZS_Write()
[0059]ZZS_10Control()
[0060]以上函數(shù)就是T30Service.dlI中導(dǎo)出的接口函數(shù)。當(dāng)系統(tǒng)加載T30Service.dll時(shí)會(huì)首先調(diào)用ZZS_Init(),在此API中我們做了對(duì)激光頭所用串口的初始化操作,這樣作保證了系統(tǒng)啟動(dòng)后會(huì)第一時(shí)間將激光頭打開(kāi)。與之相反的當(dāng)服務(wù)被卸載時(shí)會(huì)調(diào)用ZZS_Deinit(),在這個(gè)函數(shù)對(duì)激光頭進(jìn)行了釋放工作。這樣就將激光頭驅(qū)動(dòng)完美融合在自定義服務(wù)T30SeriVice生命周期中,保證了激光頭驅(qū)動(dòng)運(yùn)行在內(nèi)存中。而且服務(wù)進(jìn)程一旦崩潰就會(huì)重新啟動(dòng),并不會(huì)影響到激光頭和其它模塊的使用。
[0061]以上所述會(huì)將激光頭驅(qū)動(dòng)運(yùn)行在服務(wù)里,為了進(jìn)一步方便
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
梓潼县| 哈尔滨市| 祁门县| 东乡县| 三明市| 常宁市| 郸城县| 彭州市| 博客| 永城市| 克什克腾旗| 平阴县| 淄博市| 建平县| 乐山市| 托克逊县| 洪湖市| 汉沽区| 苍梧县| 吉林省| 盘锦市| 漯河市| 新乡市| 白朗县| 电白县| 桐梓县| 方城县| 神池县| 肥城市| 吴川市| 湛江市| 桂阳县| 绍兴县| 化德县| 朝阳县| 五峰| 抚州市| 若羌县| 廉江市| 建德市| 文成县|