專利名稱:一種基于usb設(shè)備的數(shù)據(jù)交換方法
技術(shù)領(lǐng)域:
本發(fā)明屬于USB數(shù)據(jù)交換領(lǐng)域,特別涉及一種基于USB設(shè)備的數(shù)據(jù)交換方法。
背景技術(shù):
USB設(shè)備以其方便易用,數(shù)據(jù)傳輸速度快等優(yōu)勢(shì),已經(jīng)在現(xiàn)代計(jì)算機(jī)產(chǎn)品中占據(jù)了重要的席位。在計(jì)算機(jī)觸摸交互領(lǐng)域,大部分的觸摸定位框都采用USB接口與主機(jī)相連。這樣定位框并不固定在顯示平臺(tái)上,對(duì)定位框的安裝、拆卸、維護(hù)都帶來(lái)極大不便利。目前Windows平臺(tái)下的USB-HID驅(qū)動(dòng)程序多半采用微軟的WDF驅(qū)動(dòng)開(kāi)發(fā)框架進(jìn)行USB-HID驅(qū)動(dòng)開(kāi)發(fā),而硬件設(shè)備一般都是采用單接口方案設(shè)置,并通常有輸入輸出兩個(gè)端點(diǎn)。在實(shí)際開(kāi)發(fā)過(guò)程中,WDF采用系統(tǒng)中mshidkmdf.sys作為過(guò)濾驅(qū)動(dòng),并配合HID微小驅(qū)動(dòng)hidusb.sys,實(shí)現(xiàn)普通USB接口的HID接口輸出。但該方法中,框架要求獨(dú)占USB的一個(gè)接口,該接口只收發(fā)數(shù)據(jù)到HID設(shè)備,輸出到操作系統(tǒng),而在實(shí)際使用過(guò)程中,有時(shí)需要對(duì)定位框進(jìn)行必要的校正操作,即需要從第三方軟件與硬件設(shè)備實(shí)現(xiàn)讀寫(xiě)交互。這樣就會(huì)與先前的HID設(shè)備輸出到PC端有了沖突。
發(fā)明內(nèi)容
為了解決這個(gè)問(wèn)題,本發(fā)明提出了一種基于USB設(shè)備的數(shù)據(jù)交換方法,本發(fā)明將普通USB驅(qū)動(dòng)程序與Windows服務(wù)程序相結(jié)合,保證普通BULK接口的USB設(shè)備既能實(shí)現(xiàn)HID數(shù)據(jù)傳輸,又能實(shí)現(xiàn)其他程序,即第三方軟件讀寫(xiě)數(shù)據(jù)到USB設(shè)備。為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:
一種基于USB設(shè)備的數(shù)據(jù)交換方法,基于WDF框架,創(chuàng)建普通USB驅(qū)動(dòng)程序,將USB設(shè)備加載到系統(tǒng)中;創(chuàng)建服務(wù)程序,其中所述服務(wù)程序中創(chuàng)建有與其他程序進(jìn)行交互的接口,并創(chuàng)建有用于實(shí)現(xiàn)USB-HID驅(qū)動(dòng)程序的掛載的虛擬USB設(shè)備;將USB驅(qū)動(dòng)程序、USB-HID驅(qū)動(dòng)程序、服務(wù)程序加載到系統(tǒng)中;`
所述服務(wù)程序收發(fā)并判斷USB設(shè)備數(shù)據(jù),如果是HID數(shù)據(jù)收發(fā)狀態(tài),則服務(wù)程序?qū)ID收發(fā)數(shù)據(jù)傳送到USB-HID驅(qū)動(dòng)程序,將HID收發(fā)數(shù)據(jù)傳送到系統(tǒng)中;否則,則服務(wù)程序?qū)SB設(shè)備數(shù)據(jù)傳送到其他程序進(jìn)行調(diào)試,譬如發(fā)送調(diào)試數(shù)據(jù)進(jìn)行調(diào)試。正常觸摸狀態(tài)下,服務(wù)程序?qū)崟r(shí)讀取普通USB設(shè)備的觸摸數(shù)據(jù),計(jì)算成觸摸數(shù)據(jù),并按照HID報(bào)告描述符規(guī)定,傳送給上層的USB-HID驅(qū)動(dòng)程序,繼而將HID數(shù)據(jù)傳輸給系統(tǒng)。當(dāng)其他程序運(yùn)行時(shí),使得從普通USB設(shè)備收發(fā)數(shù)據(jù)的渠道轉(zhuǎn)入到其他程序中,當(dāng)其他程序工作完成時(shí),服務(wù)程序恢復(fù)USB-HID收發(fā)數(shù)據(jù)狀態(tài)。這樣既可實(shí)現(xiàn)其他程序,即第三方軟件讀寫(xiě)數(shù)據(jù)到USB設(shè)備,又可以實(shí)現(xiàn)USB設(shè)備數(shù)據(jù)的HID發(fā)送。
圖1為本發(fā)明的基于WDF中非HID設(shè)備映射成HID設(shè)備示意圖。圖2為本發(fā)明的軟件架構(gòu)示意圖。
圖3為本發(fā)明的操作流程圖。
具體實(shí)施例方式現(xiàn)結(jié)合實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步說(shuō)明。如圖,一種基于USB設(shè)備的數(shù)據(jù)交換方法,基于WDF框架,包括以下步驟:
1)創(chuàng)建普通USB驅(qū)動(dòng)程序,將普通USB設(shè)備加載到PC系統(tǒng)中;
2)創(chuàng)建服務(wù)程序;其中,
a)設(shè)置變量,用于存儲(chǔ)判定目前USB設(shè)備數(shù)據(jù)狀態(tài)是HID數(shù)據(jù)收發(fā)還是其他程序,在本實(shí)施例中,其他程序?yàn)檎{(diào)試校正軟件數(shù)據(jù);
b)創(chuàng)建虛擬USB設(shè)備,接口端點(diǎn)為普通BULK類(lèi)型,用于為上層USB-HID驅(qū)動(dòng)程序加載;虛擬USB設(shè)備用于實(shí)現(xiàn)USB-HID驅(qū)動(dòng)程序的掛載;將USB驅(qū)動(dòng)程序、USB-HID驅(qū)動(dòng)程序、月艮務(wù)程序加載到系統(tǒng)中;
c)在服務(wù)程序上創(chuàng)建命名管道NamedPipe,用來(lái)與其他程序進(jìn)行數(shù)據(jù)交互;并實(shí)現(xiàn)與Windows服務(wù)程序的數(shù)據(jù)交互。d)創(chuàng)建數(shù)據(jù)讀取線程,循環(huán)讀取普通USB硬件設(shè)備數(shù)據(jù);
3)創(chuàng)建非HID設(shè)備映射USB-HID驅(qū)動(dòng)程序,具體如圖1所示。4)創(chuàng)建調(diào)試校正軟件作為其他程序,軟件中設(shè)置命名管道NamedPipe,實(shí)現(xiàn)與服務(wù)程序的數(shù)據(jù)交互。5)將定位框USB·設(shè)備接入PC系統(tǒng),將上述普通USB設(shè)備驅(qū)動(dòng)程序、服務(wù)程序、HID驅(qū)動(dòng)程序安裝到系統(tǒng)中。6)調(diào)試校正軟件沒(méi)有運(yùn)行時(shí),服務(wù)程序中得到的硬件數(shù)據(jù)將按照HID報(bào)告描述符規(guī)定,發(fā)送到上層HID驅(qū)動(dòng)程序中,最終發(fā)送到操作系統(tǒng)中,實(shí)現(xiàn)設(shè)備的觸摸定位。當(dāng)打開(kāi)調(diào)試軟件時(shí),更改服務(wù)程序中的設(shè)置,停止發(fā)送數(shù)據(jù)到HID驅(qū)動(dòng)程序,并通過(guò)命名管道收發(fā)調(diào)試數(shù)據(jù)。在本實(shí)施例中,服務(wù)程序中創(chuàng)建的與其他程序交互的接口還可以為Socket網(wǎng)絡(luò)數(shù)據(jù)交換接口、郵槽Mailslot或讀寫(xiě)共享文件。
權(quán)利要求
1.一種基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于, 基于WDF框架,創(chuàng)建普通USB驅(qū)動(dòng)程序,將普通USB設(shè)備加載到系統(tǒng)中;創(chuàng)建服務(wù)程序,其中所述服務(wù)程序中創(chuàng)建有與其他程序進(jìn)行交互的接口,并創(chuàng)建有用于實(shí)現(xiàn)USB-HID驅(qū)動(dòng)程序的掛載的虛擬USB設(shè)備;將USB驅(qū)動(dòng)程序、USB-HID驅(qū)動(dòng)程序、服務(wù)程序加載到系統(tǒng)中; 所述服務(wù)程序收發(fā)并判斷USB設(shè)備數(shù)據(jù),如果是HID數(shù)據(jù)收發(fā)狀態(tài),則服務(wù)程序?qū)ID收發(fā)數(shù)據(jù)傳送到USB-HID驅(qū)動(dòng)程序,將HID收發(fā)數(shù)據(jù)傳送到系統(tǒng)中;否則,則服務(wù)程序?qū)SB設(shè)備數(shù)據(jù)發(fā)送到其他程序。
2.根據(jù)權(quán)利要求1所述的基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于,所述服務(wù)程序還設(shè)有用于存儲(chǔ)USB設(shè)備數(shù)據(jù)狀態(tài)的變量,其USB設(shè)備數(shù)據(jù)狀態(tài)包括HID數(shù)據(jù)收發(fā)狀態(tài)和數(shù)據(jù)調(diào)試校正狀態(tài); 還設(shè)有用于循環(huán)讀取普通USB設(shè)備數(shù)據(jù)的數(shù)據(jù)讀取線程。
3.根據(jù)權(quán)利要求2所述的基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于,所述服務(wù)程序中與其他程序進(jìn)行交互的接口為:命名管道、Socket網(wǎng)絡(luò)數(shù)據(jù)交換接口、郵槽Mailslot或讀寫(xiě)共享文件方式中的一種或多種。
4.根據(jù)權(quán)利要求3所述的基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于,所述其他程序中創(chuàng)建有命名管道,用于實(shí)現(xiàn)與Windows服務(wù)程序的數(shù)據(jù)交互。
5.根據(jù)權(quán)利要求4所述的基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于,所述其他程序?yàn)檎{(diào)試校正軟件。
6.根據(jù)權(quán)利要求5所述的基于USB設(shè)備的數(shù)據(jù)交換方法,其特征在于,所述普通USB設(shè)備的接口端點(diǎn)為普通BULK類(lèi)型,虛擬USB設(shè)備的接口端點(diǎn)為普通BULK類(lèi)型。
全文摘要
本發(fā)明公開(kāi)一種基于USB設(shè)備的數(shù)據(jù)交換方法,基于WDF框架,創(chuàng)建普通USB驅(qū)動(dòng)程序,將普通USB設(shè)備加載到系統(tǒng)中;創(chuàng)建服務(wù)程序,其中所述服務(wù)程序中創(chuàng)建有與其他程序進(jìn)行交互的接口,并創(chuàng)建有用于實(shí)現(xiàn)USB-HID驅(qū)動(dòng)程序的掛載的虛擬USB設(shè)備;將USB驅(qū)動(dòng)程序、USB-HID驅(qū)動(dòng)程序、服務(wù)程序加載到系統(tǒng)中;所述服務(wù)程序收發(fā)并判斷USB設(shè)備數(shù)據(jù),如果是HID數(shù)據(jù)收發(fā)狀態(tài),則服務(wù)程序?qū)ID收發(fā)數(shù)據(jù)傳送到USB-HID驅(qū)動(dòng)程序,將HID收發(fā)數(shù)據(jù)傳送到系統(tǒng)中;否則服務(wù)程序?qū)SB設(shè)備數(shù)據(jù)發(fā)送到其他程序。本發(fā)明保證普通BULK接口的USB設(shè)備既能實(shí)現(xiàn)HID數(shù)據(jù)傳輸,又能實(shí)現(xiàn)第三方軟件讀寫(xiě)數(shù)據(jù)到USB設(shè)備。
文檔編號(hào)G06F13/10GK103246620SQ20131009925
公開(kāi)日2013年8月14日 申請(qǐng)日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者唐年華 申請(qǐng)人:廣東威創(chuàng)視訊科技股份有限公司