一種鍵鼠平滑切換的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供了一種鍵鼠平滑切換方法、裝置及系統(tǒng),涉及計算機【技術(shù)領(lǐng)域】,可以實現(xiàn)鍵鼠的智能平滑切換,且成本低,易擴(kuò)展。所述方法包括:當(dāng)前終端PC截獲用戶的按鍵信息,同時,切換器接收用戶的按鍵信息,并識別按鍵信息是否為有效的切換快捷鍵,若是,則將切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi);當(dāng)前終端PC分析按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并將切換快捷鍵對應(yīng)的ID號攜帶在反饋信息中發(fā)送到切換器;切換器接收到反饋信息后,將按鍵信息與反饋信息中的ID號進(jìn)行對比,若兩個ID號相同,則進(jìn)行切換動作,將鼠標(biāo)和鍵盤的USB信號切換到所述切換快捷鍵對應(yīng)的ID號所標(biāo)識的終端PC上。
【專利說明】一種鍵鼠平滑切換的方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,尤其涉及一種鍵鼠平滑切換方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息化在當(dāng)今社會的全面推進(jìn),各行各業(yè)對計算機的需求以及由計算機幫助人們處理的問題越來越多的情況下,使人們從繁雜的手工操作中解放出來,大大提高了工作效率,節(jié)省出更多的時間處理其他的事情。
[0003]目前,在工業(yè)生產(chǎn)中,通常在控制室里需要一人控制多臺計算機,并且這些計算機都是各自獨立分別配置鼠標(biāo)和鍵盤,并且這些計算機都是在一個工作臺面上,鼠標(biāo)鍵盤也都擺放在共同臺面上,因此我們可以想象,當(dāng)操作人員需要控制另一臺計算機時就會因為忘記或者臺面鍵鼠較多,導(dǎo)致要操作另一臺計算機時出現(xiàn)混亂的情況,而且整個臺面也看著不整潔,沒有空間擺放其他辦公設(shè)備如,打印機或者電話等。因此,綜上所述,有必要開發(fā)一種設(shè)備使得對于多計算機操作人員能夠很自然的切換到需要控制的計算機中,不需要頻發(fā)轉(zhuǎn)換位置,而且也可以避免前述出現(xiàn)的問題。
[0004]多接口鍵鼠平滑切換器技術(shù)一直是實際生活生產(chǎn)中需要迫切解決的技術(shù)難題,目前國內(nèi)外相關(guān)技術(shù)人員和眾多研究機構(gòu)都在致力平滑切換設(shè)備的研究。由于要解決鍵鼠切換過程中過程中一出現(xiàn)硬件重連,切換過程不平滑這些問題,目前的切換設(shè)備一般都采用設(shè)計手動按鈕結(jié)構(gòu),每次需要切換時都要事先按一下該切換設(shè)備上的按鈕才可以裝換到另外一臺設(shè)備上,過程不具備智能性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實施例提供一種鍵鼠平滑切換方法及切換器,可以實現(xiàn)鍵鼠的智能平滑切換,且成本低,易擴(kuò)展。
[0006]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0007]—種鍵鼠平滑切換方法,包括:
[0008]當(dāng)前終端PC截獲用戶的按鍵信息,同時,切換器接收用戶的所述按鍵信息,并識別所述按鍵信息是否為有效的切換快捷鍵,若是,則將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi);
[0009]所述當(dāng)前終端PC分析所述按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并將所述切換快捷鍵對應(yīng)的ID號攜帶在反饋信息中發(fā)送到所述切換器;
[0010]所述切換器接收到所述反饋信息后,將所述按鍵信息與所述反饋信息中的ID號進(jìn)行對比,若兩個ID號相同,則進(jìn)行切換動作,將鼠標(biāo)和鍵盤的USB信號切換到所述切換快捷鍵對應(yīng)的ID號所標(biāo)識的終端PC上。
[0011]—種切換器,包括:
[0012]多個輸出接口,用于分別連接各個終端PC上的鼠標(biāo)USB接口和鍵盤USB接口 ;
[0013]兩個輸入接口,用于連接鍵盤和鼠標(biāo);
[0014]共享及反饋電路,用于接收用戶輸入的按鍵信息,并對所述按鍵信息進(jìn)行過濾;
[0015]決策模塊,用于接收所述共享及反饋電路發(fā)送的過濾后的按鍵信息,并識別所述按鍵信息是否是否為有效的切換快捷鍵,若是將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi);
[0016]所述共享及反饋電路,還用于接收當(dāng)前終端PC發(fā)送的包含有ID號的反饋信息,并對所述反饋信息進(jìn)行過濾;
[0017]所述決策模塊,還用于接收所述共享及反饋電路發(fā)送的過濾后的反饋信息,并比對所述緩存單元中的ID號和所述反饋信息的ID號,若一致,則向平滑切換電路發(fā)送切換命令;
[0018]平滑切換電路,用于根據(jù)所述決策模塊發(fā)送的切換命令,將鼠標(biāo)和鍵盤的USB信號以平滑的形式切換到所述ID號對應(yīng)的終端PC上;
[0019]基本功能電路,包括電源分壓電路,振蕩電路及單片機復(fù)位電路。
[0020]一種終端PC,包括:
[0021]按鍵信息攔截模塊,用于截獲從所述切換器發(fā)送過來的按鍵信息;
[0022]識別模塊,用于識別按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并識別出所述切換快捷鍵對應(yīng)的ID號;
[0023]通信模塊,用于向所述切換器發(fā)送攜帶有所述ID號的反饋信息。
[0024]一種系統(tǒng),包括:上述的切換器,上述的終端PC以及一套鍵盤和鼠標(biāo)。
[0025]上述技術(shù)方案提供的鍵鼠平滑切換方法、裝置及系統(tǒng),能夠進(jìn)行一套鍵鼠同時控制多臺獨立運行的計算機,免除了因為多臺計算機配備的多套鍵鼠擺放桌面雜亂以及操作不便且成本高的不利之處。本設(shè)計采用的TS3USB221芯片內(nèi)部自帶功能,相當(dāng)于再切換動作的前后瞬間,由芯片內(nèi)部產(chǎn)生一個積分過渡信號,該信號最小值不會超過USB驅(qū)動信號的最小值,這樣就避免了因為USB電壓過低而在PC機的右下角不斷彈出“發(fā)現(xiàn)新硬件”設(shè)備連接相關(guān)提示信息,這本身也是對計算機的硬件保護(hù)。另外,通過采用軟硬家交互信息方式時本質(zhì)上采用的是信息反饋控制方式,避免了因為USB信號單向傳遞而沒有反饋驗證造成的不可靠性,造成切換混亂等情況。因此,利用軟硬件交互可以提高系統(tǒng)的魯棒性。并本發(fā)明具成本低易于擴(kuò)展和智能性的特點。
【專利附圖】
【附圖說明】
[0026]圖1為本發(fā)明實施例提供的一種鍵鼠平滑切換方法的流程示意圖;
[0027]圖2為本發(fā)明實施例提供的一種切換器的結(jié)構(gòu)框圖;
[0028]圖3為本發(fā)明實施例提供的一種切換器輸入輸出接口的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)示意圖;
[0029]圖4為本發(fā)明實施例提供的一種切換器的共享及反饋電路示意圖;
[0030]圖5為本發(fā)明實施例提供的一種切換器的決策模塊與平滑切換電路部分的電路示意圖;
[0031]圖6為本發(fā)明實施例提供的一種切換器的基本功能電路中的電源分壓電路示意圖;
[0032]圖7為本發(fā)明實施例提供的一種切換器的基本功能電路中的振蕩電路及單片機復(fù)位電路的不意圖;
[0033]圖8為本發(fā)明實施例提供的一種鼠鍵切換系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0034]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0035]本發(fā)明實施例提供了一種鍵鼠平滑切換方法,如圖1所示,所述方法包括以下步驟:
[0036]101、當(dāng)前終端PC截獲用戶的按鍵信息,同時,切換器接收用戶的所述按鍵信息。
[0037]用戶應(yīng)用鍵盤和鼠標(biāo),通過切換器的信息傳輸,向終端PC輸入按鍵信息。當(dāng)前終端PC中的切換專用軟件會不斷截獲用戶的按鍵信息,同時,切換器也不斷接收用戶的所述按鍵信息。
[0038]102、切換器識別所述按鍵信息是否為有效的切換快捷鍵,若是,則將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi)。
[0039]切換快捷鍵及其對應(yīng)的標(biāo)識終端PC的ID號為預(yù)設(shè)在切換器和終端PC內(nèi)的,切換器可以識別所述按鍵信息是否為有效的切換快捷鍵,并在識別出是的情況下,將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi)
[0040]103、所述當(dāng)前終端PC分析所述按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并將所述切換快捷鍵對應(yīng)的ID號攜帶在反饋信息中發(fā)送到所述切換器。
[0041]當(dāng)前終端PC接收到按鍵信息后,也會分析所述按鍵信息是否為有效的切換快捷鍵。
[0042]104、所述切換器接收到所述反饋信息后,將所述按鍵信息與所述反饋信息中的ID號進(jìn)行對比,若兩個ID號相同,則進(jìn)行切換動作。
[0043]105、所述切換器將鼠標(biāo)和鍵盤的USB信號切換到所述切換快捷鍵對應(yīng)的ID號所標(biāo)識的終端PC上。
[0044]本發(fā)明實施例還提供了一種切換器,如圖2所示,所述切換器包括:兩個輸入接口I和多個輸出接口 2,共享及反饋電路3,決策模塊4,平滑切換電路5,基本功能電路6。
[0045]其中,多個輸出接口 1,用于分別連接各個終端PC上的鼠標(biāo)USB接口和鍵盤USB接口。兩個輸入接口 2,用于連接鍵盤和鼠標(biāo)。
[0046]可選的,這些接口采用金字塔結(jié)構(gòu)的USB 口拓展形式,依次將在前一級TS3USB221拓展出來的兩個USB 口后端分別再次連接一個TS3USB221,共連接N個TS3USB221,這樣就可以獲得I個輸入接口以及對應(yīng)的2N個輸出接口。
[0047]如圖3所示,假設(shè)有4個終端PC,USBConnector_KEY表示與鍵盤連接的USB接口,同時為了拓展該USB接口,本設(shè)計采用了 TS3USB221芯片作為I進(jìn)2出USB拓展切換芯片;同時為了再次拓展更多的USB接口,這樣可以連接到更多的客戶端PC上。所以,設(shè)計中將在前一級TS3USB221拓展出來的兩個USB 口后端分別再次連接一個TS3USB221,如圖3中所示,這樣從頂級USBConnector_KEY經(jīng)過兩級拓展后可以獲得I進(jìn)4出的USB鍵盤接口 ;其中,I個輸入的USB接口用于連接鍵盤,4個輸出的USB接口用于連接4個終端PC上的鍵盤USB接口。同理,可以將與鼠標(biāo)相連的接口 USB Connector_MOUSE類似的上述USBConnector_KEY 一樣經(jīng)過兩級拓展后獲得I進(jìn)4出USB鼠標(biāo)接口。其中,I個輸入的USB接口用于連接鼠標(biāo),4個輸出的USB接口用于連接4個終端PC上的鼠標(biāo)USB接口。當(dāng)然,如果有N個終端PC,也可以根據(jù)具體需要拓展出更多的I進(jìn)N出USB接口。
[0048]共享及反饋電路3,用于接收用戶輸入的按鍵信息,并對所述按鍵信息進(jìn)行過濾,還用于接收當(dāng)前終端PC發(fā)送的包含有ID號的反饋信息,并對所述反饋信息進(jìn)行過濾。
[0049]共享及反饋電路用于鍵盤輸入的USB端和與PC相連接的切換器輸出端對應(yīng)的USB接口,通過共享鍵盤信號,目的是使得決策模塊能夠知道當(dāng)前按鍵信息,為切換器做出切換決定提供先前依據(jù),同時結(jié)合終端PC應(yīng)用程序反饋給決策模塊的反饋信息作為切換決定的反饋依據(jù),兩者結(jié)合共同作為實現(xiàn)切換動作的決策參考信息,決策模塊將會在后面介紹。在共享及反饋電路接收到的信息中需要考慮噪聲對信號的影響,因此在這一部分為每條信號線都設(shè)計了 LC濾波電路。如圖4所示。圖4中左邊部分信號連接到?jīng)Q策模塊的PBO和PBl引腳,用于共享前端鍵盤輸入信息,決策模塊中的STM32利用USB驅(qū)動程序以中斷的方式識別按鍵值。同樣,也利用USB驅(qū)動程序以中斷的方式接收來自終端PC應(yīng)用程序發(fā)來的信息值。
[0050]決策模塊4,用于接收所述共享及反饋電路發(fā)送的過濾后的按鍵信息,并識別所述按鍵信息是否是否為有效的切換快捷鍵,若是將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi);所述決策模塊4,還用于接收所述共享及反饋電路發(fā)送的過濾后的反饋信息,并比對所述緩存單元中的ID號和所述反饋信息的ID號,若一致,則向平滑切換電路發(fā)送切換命令;平滑切換電路5,用于根據(jù)所述決策模塊4發(fā)送的切換命令,將鼠標(biāo)和鍵盤的USB信號以平滑的形式切換到所述ID號對應(yīng)的終端PC上。
[0051 ] 決策模塊4與平滑切換電路5這一部分的電路如圖5所示,其主要功能是實現(xiàn)USB信號走向切換控制,本發(fā)明中采用的是AD公司的I進(jìn)2出USB信號切換芯片TS3USB221,發(fā)明中考慮到能夠?qū)崿F(xiàn)一套鍵盤和鼠標(biāo)能夠在多臺終端設(shè)備中頻繁切換使用,所以,采用利用該芯片設(shè)計成兩級網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),即由前級TS3USB221芯片輸出可轉(zhuǎn)換的兩個USB接口,然后在分別以前TS3USB221的兩個USB輸出端為下級TS3USB221的輸入端口,這樣就可以擴(kuò)展出四個USB轉(zhuǎn)切口,也就是說利用多級設(shè)計方式實現(xiàn)了 I進(jìn)4出的設(shè)計。當(dāng)然,可以根據(jù)實際需要,擴(kuò)展到第三級TS3USB221,實現(xiàn)I進(jìn)8出的設(shè)計,甚至更多級。
[0052]本發(fā)明以鍵盤所對應(yīng)的USB接口為例進(jìn)行說明,S_Key_B,0E_Key_B分別表示前級TS3USB221 的切換方向和切換使能控制端,S_Key_B_l,S_Key_B_2,0E_Key_B_l,和 0E_Key_B_2分別表示后級TS3USB221-A-1和TS3USB221-A-2的切換方向和切換使能控制端,連接到?jīng)Q策塊中控制芯片STM32的引腳上;設(shè)計中信號DM_Key,DP_Key,分別表示USB的數(shù)據(jù)信號線,為前級TS3USB221-A的USB數(shù)據(jù)輸入端信號;假設(shè)決策模塊當(dāng)前獲取切換ID號為I號終端USB Connectorjfeyl接口,則決策模塊將立即執(zhí)行USB路由導(dǎo)向切換動作。
[0053]假設(shè)路由走向為J3->J4->J6 ;切換過程中,STM32首先分別向前級S_Key_B和后級S_Key_B_l信號端輸出信號,選擇信號走向;規(guī)定當(dāng)信號S_Key_B和S_Key_B_l分別為O時,切換到J3->J4->J6,然后STM32分別向0E_Key_B和0E_Key_B_l端發(fā)送使能信號,前后級TS3USB221同時執(zhí)行切換動作。TS3USB221芯片在執(zhí)行切換動作時,會很平滑的將信號轉(zhuǎn)換到另外一個USB通道上,TS3USB221芯片內(nèi)部可以保證在切換期間USB的電流電壓保持原有的連續(xù)狀態(tài),因TS3USB221芯片內(nèi)部已做好相關(guān)補償。
[0054]但是,在一些比較特殊的情況下,如果單純依靠共享前端鍵盤的按鍵信息,作為決策模塊做出切換動作的唯一依據(jù)是不可靠的。由于存在不可預(yù)見的干擾等會使得決策模塊做出錯誤動作,使得用戶在使用過程中無故的切換到別的客戶端PC,這種情況是不被允許的,因此為了保證每次切換動作的準(zhǔn)確性,本發(fā)明又增加了與終端應(yīng)用程序的通信功能。
[0055]根據(jù)圖4可以知道,左邊為鍵盤前端信息共享回路,這里不再贅述。右邊為與終端應(yīng)用程序通信的接口,根據(jù)終端應(yīng)用程序中按鍵識別分析程序窗口的工作內(nèi)容,圖4中右邊部分,將按鍵識別分析程序窗口發(fā)來的按鍵信息反饋到?jīng)Q策模塊相應(yīng)的I/O 口,然后,決策模塊接收該信息即ID號后將其與鍵盤前端共享信息作比對,如果信息一致,則說明本次不存在誤操作,接下來決策塊將會向USB切換電路發(fā)出切換指令,直到完成一次操作為止。
[0056]基本功能電路,包括電源分壓電路,振蕩電路及單片機復(fù)位電路。基本功能電路完成電源分壓,振蕩電路及單片機復(fù)位電路基礎(chǔ)服務(wù)功能。如圖6所示,為電源分壓電路,電源分壓電路采用芯片LP2985A-33DBV,實現(xiàn)將5V電壓轉(zhuǎn)換成VCC = 3.3V電壓輸出,作為切換芯片和stm32單片機的輸入電源。其中USB_VIN是從USB端輸入的5V電壓。芯片引腳30N/端作為芯片啟動信號使能端,低電平有效,本發(fā)明中直接與地相連。如圖7所示為振蕩電路及復(fù)位電路,所述振蕩電路及復(fù)位電路STM32單片機正常工作的兩大必要功能部分,振蕩電路分為兩個部分,其中一個為備用;NRST為單片機復(fù)位信號,可以通過按鍵SI手動復(fù)位。
[0057]本發(fā)明實施例還提供了一種終端PC,所述終端PC包括:
[0058]按鍵信息攔截模塊,用于截獲從所述切換器發(fā)送過來的按鍵信息。
[0059]識別模塊,用于識別按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并識別出所述切換快捷鍵對應(yīng)的ID號。
[0060]通信模塊,用于向所述切換器發(fā)送攜帶有所述ID號的反饋信息。
[0061]終端PC中應(yīng)用軟件來實現(xiàn)上述的各種功能。該軟件的開發(fā)主要分為兩大部分,這兩部分都是基于VB語言開發(fā)的,包括USB驅(qū)動程序和按鍵識別分析程序窗口。USB驅(qū)動完成終端專用程序與切換器進(jìn)行檢測和通信功能;按鍵識別分析程序窗口主要用于實現(xiàn)鍵盤按鍵的信息攔截,識別,然后根據(jù)按鍵類型分析所屬按鍵對應(yīng)的功能,本申請中主要是用于識別用戶需要切換到的終端PCID按鍵,然后向切換器通過USB發(fā)送反饋信息,切換器在收到反饋信息后判斷是否進(jìn)行切換;該窗口同時還具有用戶交互功能,即運行改程序窗口后,會要求用戶為每個PC終端設(shè)置一個切換快捷鍵,可以是單鍵也可以是組合鍵,目的是使得用戶能用根據(jù)自己的使用習(xí)慣進(jìn)行快速操作,同時也能通過設(shè)置專用的切換快捷鍵避免和系統(tǒng)的其他快捷鍵相沖突。
[0062]終端程序會在用戶的操作下在后臺最小化運行,并以查詢形式監(jiān)視USB接口下的鍵盤動作,一旦有按鍵按下就會及時啟動主程序。
[0063]本申請應(yīng)用VB語言編制Windows下檢測USB設(shè)備應(yīng)用程序時,使用Win32API函數(shù)與Windows系統(tǒng)下的HID方式的USB設(shè)備驅(qū)動會話;在VB中對API函數(shù)調(diào)用時,主要通過VB提供的API瀏覽工具實現(xiàn)程序復(fù)制的。相應(yīng)的API函數(shù)找到后,再對函數(shù)的聲明進(jìn)行符合本設(shè)計的修改,才可以才VB中使用其強大的功能。
[0064]終端軟件程序設(shè)計步驟包括檢測和通信兩部分,各部分設(shè)計步驟概述如下:
[0065]利用VB調(diào)用API函數(shù)實現(xiàn)USB設(shè)備的檢測流程如下:
[0066]首先,獲取HID類的USB鍵盤的標(biāo)識符⑶ID ;
[0067]此時通過調(diào)用API函數(shù)HidD_getHidGuid O獲得設(shè)備標(biāo)識符⑶ID,此時不對函數(shù)進(jìn)一步操作,而是將其作為下一次調(diào)用API函數(shù)時的一個參數(shù)適用。
[0068]其次,應(yīng)用程序獲取USB鍵盤的設(shè)備信息數(shù)組;
[0069]此時要先聲明一個函數(shù),用于在Windows中進(jìn)行設(shè)備管理,VB語言下聲明的該函數(shù)如下:Public Declare Funct1n StepDiGetClassDevs Lib,,setupap1.dll,,AliasSetupDiGetDevsA(ByRef ClassGuid As GUID), ByVal Enumerator As String, ByValhandParent As Long,ByVal Flags As Long) As Long。該函數(shù)用于返回 USB 設(shè)備(鍵盤)
的信息。
[0070]再次,應(yīng)用程序檢測和識別USB鍵盤的設(shè)備接口 ;
[0071]此時調(diào)用API函數(shù)DeEnumDeviceInterfaces,目的是在此時能夠獲取上一步驟中函數(shù)返回的地址指針,找到本設(shè)計中USB鍵盤的正確接口位置。
[0072]最后,調(diào)用程序獲取USB鍵盤的路徑名;
[0073]經(jīng)過上面三個步驟以后,這時就需要調(diào)用函數(shù)SetDiGetDeviceInterfaceDetail函數(shù),用該函數(shù)可以返回USB鍵盤的路徑名稱,使得基于VB開發(fā)的應(yīng)用程序可以和本設(shè)計中的切換器接口設(shè)備實現(xiàn)通信功能。
[0074]設(shè)計中經(jīng)過上述幾大步驟,可以輕松地獲取USB鍵盤的路徑信息,利用這些信息作為Windows判斷設(shè)備是否被檢測到,這種在Windows系統(tǒng)下調(diào)用的API函數(shù)方法可以非常簡單和方便的實現(xiàn)。
[0075]實現(xiàn)USB設(shè)備檢測功能后,還應(yīng)該使本的設(shè)計中的專用程序能夠和本設(shè)計中的USB設(shè)備進(jìn)行正常的數(shù)據(jù)交換,即實現(xiàn)通信功能。
[0076]過程如下:
[0077]首先,獲取操作USB鍵盤接口的操作句柄;
[0078]由于前述檢測USB設(shè)備過程已經(jīng)確定了連接狀態(tài),此時調(diào)用API函數(shù)CreateFile開放應(yīng)用程序與USB設(shè)備的通信通道。該函數(shù)可以打開被訪問設(shè)備,實現(xiàn)和設(shè)備的訪問功能,當(dāng)需要關(guān)閉訪問該USB設(shè)備時只需要調(diào)用函數(shù)CloseHandle即可釋放所占用的系統(tǒng)資源。
[0079]其次,利用本設(shè)計的應(yīng)用程序向被打開的USB設(shè)備寫數(shù)據(jù);
[0080]此時只要調(diào)用API函數(shù)WriteFile,但前提先把要寫入的數(shù)據(jù)寫入到緩存里才可以執(zhí)行寫入操作。
[0081]再次,應(yīng)用程序從被打開的USB設(shè)備中讀取數(shù)據(jù);
[0082]此時只要調(diào)用API函數(shù)ReadFile,同時將獲取的數(shù)據(jù)放到一個足夠大的緩存空間保存起來;需要注意的是在使用該函數(shù)的時候要防止系統(tǒng)不響應(yīng)應(yīng)用程序的要求,失去USB數(shù)據(jù)讀取功能。所以,在本設(shè)計中將函數(shù)ReadFile放在獨立的進(jìn)程中完成讀USB功能。
[0083]最后,應(yīng)用程序?qū)崿F(xiàn)關(guān)閉與USB接口設(shè)備的通信功能。
[0084]通信結(jié)束后,需要應(yīng)用程序關(guān)閉和USB設(shè)備的聯(lián)系,以釋放系統(tǒng)資源。調(diào)用API函數(shù)CloseHandle可以實現(xiàn)該功能。
[0085]完成上述四個步驟即可以實現(xiàn)應(yīng)用程序?qū)SB的通信功能。
[0086]按鍵識別方法、分析和程序窗口設(shè)計
[0087]該部分完成讀USB鍵盤輸入信息的分析和識別作用,當(dāng)應(yīng)用程序完成對USB鍵盤的檢測和通信連接后,利用鍵盤識別程序?qū)Π存I信息進(jìn)行分析和對比,監(jiān)視按鍵信息是否與手動設(shè)置的切換指令信息相匹配,如果匹配則開始則停止攔截和檢測鍵盤信息,轉(zhuǎn)入與切換器裝置的寫操作程序,即將切換信息的ID告知切換器。
[0088]在用戶PC終端,需要額外即時的檢測用戶鍵盤的按鍵情況,使得切換裝置能夠在第一時間了解到用戶的意圖。
[0089]按鍵攔截方法如下:
[0090]應(yīng)用三個事件KeyPress O , KeyDown 和 KeyUp:
[0091]在KeyPressO事件里,當(dāng)用戶按下和松開一個ANSI鍵時發(fā)生(ANSI是可見ASCII字符1-127)。KeyPress事件語法包含下列部分:
[0092]部分描述object —個對象表達(dá)式,其值是〃應(yīng)用于〃列表中的一個對象。
[0093]index 一個整數(shù),它用來唯一標(biāo)識一個在控件數(shù)組中的控件(僅有控件數(shù)組時才有)。
[0094]keyascii是返回一個標(biāo)準(zhǔn)數(shù)字ANSI鍵代碼的整數(shù)。Keyascii通過引用傳遞,對它進(jìn)行改變可給對象。發(fā)送一個不同的字符。將keyascii改變?yōu)镺時可取消擊鍵,這樣一來對象便接收不到字符KeyPress事件可以引用任何可打印的鍵盤字符,一個來自標(biāo)準(zhǔn)字母表的字符或少數(shù)幾個特殊字符之一的字符與CTRL鍵的組合,以及ENTER或BACKSPACE鍵。KeyPress O事件過程能夠非常有效的截取TextBox或ComboBox控件所輸入的擊鍵。它可立即測試擊鍵的有效性或在字符輸入時對其進(jìn)行格式處理。
[0095]改變keyascii參數(shù)的值會改變所顯示的字符。可使用下列表達(dá)式將keyascii參數(shù)轉(zhuǎn)變?yōu)橐粋€字符:Chr (KeyAscii),然后執(zhí)行字符串操作,并將該字符反譯成一個控件可通過該表達(dá)式解釋的ANSI數(shù)字,KeyAscii = Asc (char)。
[0096]在KeyPress O處理不了的功能可以由KeyDownO和KeyUpO事件來處理:
[0097]Private Sub object_KeyDown ([index As Integer,]keycode As Integer,shiftAs Integer)
[0098]Private Sub object_KeyUp([index As Integer, ]keycode As Integer, shiftAs Integer)
[0099]KeyDown和KeyUp事件包括下列部分:
[0100]object 一個對象表達(dá)式,其值是〃應(yīng)用于〃列表中的一個對象。
[0101]index是一個整數(shù),它用來唯一標(biāo)識一個在控件數(shù)組中的控件(僅有控件數(shù)組時才有)。
[0102]keycode 是一個鍵代碼,諸如 vbKeyFl (Fl 鍵)或 vbKeyHome (HOME 鍵)。
[0103]shift是在該事件發(fā)生時響應(yīng)SHIFT,CTRL和ALT鍵的狀態(tài)的一個整數(shù)。shift、CTRL、ALT鍵在這些位分別對應(yīng)于值1、2和4。例如:如果CTRL和ALT這兩個鍵都被按下,則shift的值為6。
[0104]上述按鍵攔截完成后得到的按鍵值即可用來作為數(shù)據(jù)發(fā)送給切換器的決策部分,用來與切換器自從USB截取的按鍵相對比。
[0105]窗口設(shè)計內(nèi)容有:與用戶交互的信息輸入框。此處要求用戶依次輸入每臺終端PC切換ID時使用的快捷鍵;同時,在每個ID后面還設(shè)計了一個顯示此時鍵盤和鼠標(biāo)所在的位置指示狀態(tài),鍵盤和鼠標(biāo)被切換到那臺終端PC,則對應(yīng)的ID后的指示狀態(tài)就會點亮,否則為暗色。
[0106]本發(fā)明實施例還提供了一種系統(tǒng),如圖8所示,所述系統(tǒng)包括上述的切換器,鍵盤、鼠標(biāo)以及若干終端PC。
[0107]示例的,如圖8所示,假設(shè)共有3臺終端PC,從圖8中我們可以知道,工作臺面共有三臺終端PC即I號計算機、2號計算機和3號計算機,一套鍵盤和鼠標(biāo),并且鍵盤和鼠標(biāo)被分別連接在本發(fā)明設(shè)計的切換器的2個輸入接口上。所述切換器共有6個輸出接口,其中連接鍵盤的輸入接口對應(yīng)的3個輸出接口,用于連接3臺終端PC的鍵盤USB接口,連接鼠標(biāo)的輸入接口對應(yīng)的3個輸出接口,用于連接3臺終端PC的鍵盤USB接口。
[0108]3臺終端PC為設(shè)置好的,運行上述軟件的終端PC,每個終端PC上安裝和運行利用VB語言開發(fā)的為切換器專用終端軟件程序。在彈出的對話框內(nèi)分別設(shè)置每個PC機所對應(yīng)的ID,以及該ID號所對應(yīng)的切換快捷鍵;按下“完成”按鈕可以確定設(shè)置完成,“取消”按鈕則取消全部設(shè)置,此時若要重新設(shè)置,則只有關(guān)閉應(yīng)用程序界面,再次對對話框內(nèi)容進(jìn)行設(shè)置。完成每個PC終端機的軟件安裝和快捷鍵設(shè)置后,可以點選最小化應(yīng)用程序進(jìn)入后臺自動運行狀態(tài)。
[0109]連接好本系統(tǒng)并將3臺設(shè)置好的終端PC開機后,整個切換過程為:當(dāng)前終端PC的切換專用模塊截獲用戶的按鍵信息,同時,切換器接收用戶的所述按鍵信息,并識別所述按鍵信息是否是否為有效的切換快捷鍵,若是,則將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi);所述當(dāng)前終端PC的切換專用模塊分析所述按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并將所述切換快捷鍵對應(yīng)的ID號攜帶在反饋信息中發(fā)送到所述切換器;所述切換器接收到所述反饋信息后,將其保存到指定緩存單元;并將所述按鍵信息與所述反饋信息中的ID號進(jìn)行對比,若兩個ID號相同,則進(jìn)行切換動作,將鼠標(biāo)和鍵盤的USB信號切換到所述切換快捷鍵對應(yīng)的ID號所標(biāo)識的終端PC上。
[0110]本系統(tǒng)應(yīng)用一套鍵盤鼠標(biāo)同時控制臺面上的三臺終端PC,很明顯本發(fā)明不僅使得工作臺面更加整潔,而且也減少了不必要的設(shè)備投入,給操作者提供了更加便捷的操作空間和切換方式。
[0111]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種鍵鼠平滑切換方法,其特征在于,包括: 當(dāng)前終端PC截獲用戶的按鍵信息,同時,切換器接收用戶的所述按鍵信息,并識別所述按鍵信息是否為有效的切換快捷鍵,若是,則將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi); 所述當(dāng)前終端PC分析所述按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并將所述切換快捷鍵對應(yīng)的ID號攜帶在反饋信息中發(fā)送到所述切換器;所述切換器接收到所述反饋信息后,將所述按鍵信息與所述反饋信息中的ID號進(jìn)行對比,若兩個ID號相同,則進(jìn)行切換動作,將鼠標(biāo)和鍵盤的USB信號切換到所述切換快捷鍵對應(yīng)的ID號所標(biāo)識的終端PC上。
2.一種切換器,其特征在于,包括: 多個輸出接口,用于分別連接各個終端PC上的鼠標(biāo)USB接口和鍵盤USB接口; 兩個輸入接口,用于連接鍵盤和鼠標(biāo); 共享及反饋電路,用于接收用戶輸入的按鍵信息,并對所述按鍵信息進(jìn)行過濾; 決策模塊,用于接收所述共享及反饋電路發(fā)送的過濾后的按鍵信息,并識別所述按鍵信息是否是否為有效的切換快捷鍵,若是將所述切換快捷鍵對應(yīng)的ID號存儲在緩存單元內(nèi); 所述共享及反饋電路,還用于接收當(dāng)前終端PC發(fā)送的包含有ID號的反饋信息,并對所述反饋信息進(jìn)行過濾; 所述決策模塊,還用于接收所述共享及反饋電路發(fā)送的過濾后的反饋信息,并比對所述緩存單元中的ID號和所述反饋信息的ID號,若一致,則向平滑切換電路發(fā)送切換命令;平滑切換電路,用于根據(jù)所述決策模塊發(fā)送的切換命令,將鼠標(biāo)和鍵盤的USB信號以平滑的形式切換到所述ID號對應(yīng)的終端PC上; 基本功能電路,包括電源分壓電路,振蕩電路及單片機復(fù)位電路。
3.根據(jù)權(quán)利要求2所述的切換器,其特征在于,所述2個輸入接口和所述多個輸出接口的結(jié)構(gòu),包括: 依次將在前一級TS3USB221拓展出來的兩個USB 口后端分別再次連接一個TS3USB221,共連接N個TS3USB221,獲得I個輸入接口,2N個輸出接口。
4.根據(jù)權(quán)利要求2所述的切換器,其特征在于,所述共享及反饋電路中包含有LC濾波電路,用于對接收到的信號進(jìn)行濾波處理。
5.根據(jù)權(quán)利要求2所述的切換器,其特征在于,所述決策模塊包括stm32單片機; 所述電源分壓電路采用芯片LP2985A-33DBV,實現(xiàn)將5V電壓轉(zhuǎn)換成VCC = 3.3V電壓輸出,作為平滑切換電路和stm32單片機的輸入電源;所述振蕩電路及單片機復(fù)位電路為stm32單片機正常工作的兩大必要功能部分,所述振蕩電路分為兩個部分,其中一個為備用。
6.一種終端PC,其特征在于,包括: 按鍵信息攔截模塊,用于截獲從所述切換器發(fā)送過來的按鍵信息; 識別模塊,用于識別按鍵信息是否為有效的切換快捷鍵,若是,則停止截獲下一個按鍵信息,并識別出所述切換快捷鍵對應(yīng)的ID號; 通信模塊,用于向所述切換器發(fā)送攜帶有所述ID號的反饋信息。
7.一種系統(tǒng),其特征在于,包括:權(quán)利要求2-5任一項所述的切換器,所述權(quán)利要求6所述的終端PC以及一套鍵盤和鼠標(biāo)。
【文檔編號】G06F3/038GK104317417SQ201410539381
【公開日】2015年1月28日 申請日期:2014年10月14日 優(yōu)先權(quán)日:2014年10月14日
【發(fā)明者】趙輝, 劉雅喆, 張丹 申請人:渤海大學(xué)