專利名稱:鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬裝置及方法,確切地說,涉及一種在計(jì)算機(jī)操作過程中能夠存儲(chǔ)記錄并仿真模擬鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)的裝置及方法,屬于計(jì)算機(jī)外圍設(shè)備技術(shù)領(lǐng)域。
背景技術(shù):
為了提高生產(chǎn)效率、保證產(chǎn)品質(zhì)量和降低人工成本,努力實(shí)現(xiàn)和提高制造產(chǎn)業(yè)中各個(gè)工序的自動(dòng)化水平,已經(jīng)成為許多企業(yè)關(guān)注和追求的焦點(diǎn)。
目前,在電腦的生產(chǎn)線上重復(fù)性的安裝、測(cè)試操作基本上還是由人工完成的,這不僅大幅提高了產(chǎn)品成本,同時(shí)也嚴(yán)重降低了工作效率。雖然在基于WINDOWS的操作平臺(tái)下進(jìn)行系統(tǒng)和驅(qū)動(dòng)程序的安裝,以及機(jī)器的硬件配置測(cè)試時(shí),已經(jīng)可以使用以微軟軟件自動(dòng)測(cè)試規(guī)范為基礎(chǔ)的軟件自動(dòng)進(jìn)行安裝和測(cè)試。該方法主要是記錄人工操作電腦的過程,并在復(fù)現(xiàn)時(shí),通過操作當(dāng)前激活的窗口來完成各種特定的操作;自動(dòng)化程度較高,具有較好的效益。
但是在非WINDOWS的操作系統(tǒng)環(huán)境下,比如在UNIX、LINIX等操作系統(tǒng)下,因?yàn)槭褂玫氖桥cWINDOWS截然不同的運(yùn)行體系,上述微軟自動(dòng)測(cè)試軟件就無法運(yùn)行了?,F(xiàn)在,基本上只能依靠人工進(jìn)行這種單調(diào)、重復(fù)的安裝和測(cè)試操作。如何實(shí)現(xiàn)這些操作的自動(dòng)化已經(jīng)成為業(yè)內(nèi)許多人士關(guān)注的課題。
考慮到目前對(duì)電腦進(jìn)行操作的輸入設(shè)備主要是鍵盤和鼠標(biāo),并且,所有的操作系統(tǒng)都支持基于PS2協(xié)議的鍵盤和鼠標(biāo),同時(shí),幾乎所有的計(jì)算機(jī)輸入功能都可以通過鍵盤和鼠標(biāo)的操作直接或間接地實(shí)現(xiàn)之。因此,只要能夠記錄下人工對(duì)鍵盤和鼠標(biāo)的操作過程,并通過仿真模擬鍵盤和鼠標(biāo)的工作方式與電腦進(jìn)行數(shù)據(jù)交換,就可以復(fù)現(xiàn)操作人員對(duì)計(jì)算機(jī)進(jìn)行安裝和檢測(cè)的操作過程,使該生產(chǎn)工序?qū)崿F(xiàn)自動(dòng)化。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬裝置,該裝置安插在鍵盤和鼠標(biāo)與計(jì)算機(jī)連接的通道之間,相當(dāng)于在實(shí)際的鍵盤和鼠標(biāo)與計(jì)算機(jī)之間架設(shè)一條虛擬通路,通過其中的硬件和控制軟件的有機(jī)結(jié)合,在各種不同操作系統(tǒng)中實(shí)現(xiàn)電腦安裝、配置和測(cè)試等多種操作的自動(dòng)化。
本發(fā)明的另一目的是提供一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,利用本發(fā)明的裝置在各種不同操作系統(tǒng)中實(shí)現(xiàn)電腦安裝、配置和測(cè)試等多種操作的自動(dòng)化。
本發(fā)明的目的是這樣實(shí)現(xiàn)的一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),其特征在于該系統(tǒng)是由以單片機(jī)為核心的模擬控制裝置和由PC機(jī)構(gòu)成的主控計(jì)算機(jī)所組成;所述的模擬控制裝置的控制電路中,在單片機(jī)外圍設(shè)有可編程邏輯電路、鍵盤鼠標(biāo)輸入接口、鍵盤鼠標(biāo)模擬輸出接口、被控計(jì)算機(jī)電源控制電路和與主控計(jì)算機(jī)接續(xù)的串行通訊接口,所述的可編程邏輯電路分別連接有作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器(NVRAM)、控制鍵盤、狀態(tài)指示燈和被控計(jì)算機(jī)電源控制電路。
所述的控制鍵盤中設(shè)置有開始記錄、停止記錄、開始模擬和串口上傳數(shù)據(jù)四個(gè)控制按鍵,這四個(gè)控制按鍵均為自復(fù)位按鍵。
所述的作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器(NVRAM)的存儲(chǔ)容量為32K,該存儲(chǔ)器被劃分為三個(gè)區(qū)域4個(gè)字節(jié)的數(shù)據(jù)區(qū)狀態(tài)標(biāo)識(shí)區(qū),用于標(biāo)識(shí)后面兩個(gè)存儲(chǔ)區(qū)里實(shí)際存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,其中前兩個(gè)字節(jié)為數(shù)據(jù)存儲(chǔ)區(qū)長(zhǎng)度=最高字節(jié)+次高字節(jié)×256,后兩個(gè)字節(jié)為附加時(shí)間存儲(chǔ)區(qū)長(zhǎng)度=次低字節(jié)+最低字節(jié)×256;30000個(gè)字節(jié)的數(shù)據(jù)存儲(chǔ)區(qū),用于分別存儲(chǔ)鍵盤數(shù)據(jù)包、鼠標(biāo)數(shù)據(jù)包和端口轉(zhuǎn)換標(biāo)識(shí);以及2000個(gè)字節(jié)的附加時(shí)間存儲(chǔ)區(qū)。
所述的由PC機(jī)構(gòu)成的主控計(jì)算機(jī)可以省略之,此時(shí)不能夠?qū)㈡I盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份。
本發(fā)明的另一目的是這樣實(shí)現(xiàn)的一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于該方法是由控制以單片機(jī)為核心的模擬控制裝置運(yùn)行的方法和控制主控計(jì)算機(jī)運(yùn)行的方法兩部分配合完成的,如果不需要將鍵盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份,后者可以省略。
所述的以單片機(jī)為核心的模擬控制裝置運(yùn)行的方法包括有下列操作步驟(11)在該裝置加電后,初始化內(nèi)部各項(xiàng)設(shè)置,接著判斷被控計(jì)算機(jī)的鍵盤和鼠標(biāo)是否需要初始化?并進(jìn)入下述各項(xiàng)循環(huán)判斷該裝置各個(gè)控制按鍵狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(12)當(dāng)判斷到“開始記錄”的控制按鍵按下或從串口接收到“開始記錄”的控制數(shù)據(jù)后,該裝置進(jìn)入循環(huán)記錄輸入的數(shù)據(jù)狀態(tài);并在鍵盤和/或鼠標(biāo)發(fā)送數(shù)據(jù)之后的中斷中,將記錄到的鍵盤和/或鼠標(biāo)輸入的各個(gè)數(shù)據(jù)和數(shù)據(jù)間的時(shí)間間隔,經(jīng)過特定的數(shù)據(jù)運(yùn)算處理后存入該裝置內(nèi)的數(shù)據(jù)存儲(chǔ)區(qū)中;同時(shí),在循環(huán)記錄的過程中,如果判斷到“停止記錄”的控制按鍵按下或從串口接收到“停止記錄”的控制數(shù)據(jù)后,該裝置將返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(13)當(dāng)判斷到“開始模擬”的控制按鍵按下或從串口接收到“開始模擬”的控制數(shù)據(jù)后,該裝置進(jìn)入模擬工作狀態(tài),即將其數(shù)據(jù)存儲(chǔ)區(qū)中存儲(chǔ)的鍵盤和/或鼠標(biāo)的數(shù)據(jù)流按時(shí)間順序發(fā)送到被控計(jì)算機(jī)的鍵盤和/或鼠標(biāo)的輸入接口,并在發(fā)送完所有數(shù)據(jù)存儲(chǔ)區(qū)中的數(shù)據(jù)后,返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(14)當(dāng)判斷到“串口上傳數(shù)據(jù)”的控制按鍵按下或從串口接收到“串口上傳數(shù)據(jù)”的控制數(shù)據(jù)后,該裝置進(jìn)入與主控計(jì)算機(jī)串行通信工作狀態(tài)該裝置自動(dòng)識(shí)別目前數(shù)據(jù)存儲(chǔ)區(qū)和附加時(shí)間存儲(chǔ)區(qū)中存儲(chǔ)的數(shù)據(jù)總?cè)萘?,并在和主控?jì)算機(jī)建立通信鏈路后,將數(shù)據(jù)存儲(chǔ)區(qū)和附加時(shí)間存儲(chǔ)區(qū)中存儲(chǔ)的數(shù)據(jù)一次全部發(fā)送過去,備份存儲(chǔ)在主控計(jì)算機(jī)中;此后,該裝置返回到循環(huán)判斷其各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(15)當(dāng)判斷是復(fù)位后第一次從串口接收的數(shù)據(jù)時(shí),該裝置首先對(duì)收到的數(shù)據(jù)進(jìn)行命令解析,并調(diào)用相應(yīng)的操作;并在解析完數(shù)據(jù)后,返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(16)當(dāng)判斷到不是復(fù)位后第一次從串口接收的數(shù)據(jù)時(shí),該裝置將接收到的數(shù)據(jù)按照時(shí)間順序和種類分別存儲(chǔ)到相應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū)中,在接收全部數(shù)據(jù)之后,該裝置返回到循環(huán)判斷其各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程。
所述的主控計(jì)算機(jī)運(yùn)行的方法包括有下列操作步驟(21)初始化內(nèi)部資源,定義緩存區(qū)和內(nèi)部變量;(22)打開或新建一個(gè)二進(jìn)制文件;(23)按照輸入命令要求,將從串口接收到的數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中,并在接收完畢后,將緩沖區(qū)中的數(shù)據(jù)存入新建的二進(jìn)制文件中;(24)按照輸入命令要求,對(duì)打開的文件中的數(shù)據(jù)進(jìn)行處理,并將處理后的數(shù)據(jù)從串口發(fā)送出去;(25)關(guān)閉上述操作過的文件,并自行退出。
所述步驟(12)、(13)中涉及串口的操作和所述步驟(14)、(15)、(16)的操作均可省略之,此時(shí)不能夠?qū)㈡I盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份。
所述的步驟(12)中對(duì)鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)進(jìn)行特定的數(shù)據(jù)運(yùn)算處理中,用雙字節(jié)表示鍵盤輸入的數(shù)據(jù),其中低字節(jié)為時(shí)間數(shù)據(jù),高字節(jié)為鍵值數(shù)據(jù);用四字節(jié)表示鼠標(biāo)輸入的數(shù)據(jù),其中第一字節(jié)為時(shí)間數(shù)據(jù),后三個(gè)字節(jié)為鼠標(biāo)輸入的字節(jié);且默認(rèn)存儲(chǔ)區(qū)中的數(shù)據(jù)包為鍵盤數(shù)據(jù)包,而在要向存儲(chǔ)區(qū)中存入鼠標(biāo)數(shù)據(jù)包時(shí),應(yīng)在該鼠標(biāo)數(shù)據(jù)包之前加入三個(gè)字節(jié),作為端口轉(zhuǎn)換標(biāo)識(shí),這三個(gè)字節(jié)的數(shù)值均為0xFF;以便能夠動(dòng)態(tài)辨認(rèn)鼠標(biāo)或鍵盤的數(shù)據(jù),并正確模擬鍵盤或鼠標(biāo)的操作過程。
所述的步驟(12)中鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)間的時(shí)間間隔是用3個(gè)字節(jié)來表示,其中只有最低的一個(gè)字節(jié)的時(shí)間值經(jīng)過壓縮標(biāo)識(shí)后與鍵盤或鼠標(biāo)輸入的數(shù)據(jù)值組成數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)區(qū);而對(duì)另外兩個(gè)高字節(jié),只有在其有數(shù)值時(shí),即用一個(gè)字節(jié)不能夠存儲(chǔ)時(shí)間值的情況下,才以兩個(gè)一組的方式按照其出現(xiàn)的順序存儲(chǔ)到附加時(shí)間存儲(chǔ)區(qū)中。
所述的對(duì)最低的一個(gè)字節(jié)的時(shí)間值進(jìn)行壓縮標(biāo)識(shí)的方法是將一個(gè)8位字節(jié)的數(shù)據(jù)用其低7位表示,而用該字節(jié)最高位表示另外兩個(gè)高字節(jié)中是否存儲(chǔ)有時(shí)間變量數(shù)據(jù);其具體操作步驟是(1)首先判斷該最低一個(gè)字節(jié)的時(shí)間值X是否為0xFF?如是,則先將其減1,再順序進(jìn)行下述步驟;若不是,則直接進(jìn)行下述步驟;(2)判斷其兩個(gè)高字節(jié)的值是否為零?如是,則按照公式(X+1)/2,進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2;若不是,則按照另一公式(X+1)/2+0×80進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2,再加上0×80。
本發(fā)明是一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬裝置及方法,該裝置以單片機(jī)為核心,配合非易失存儲(chǔ)器(NVRAM)、復(fù)雜可編程邏輯器件(CPLD)、串行通信接口等外圍器件,在作為輸入設(shè)備的鍵盤和鼠標(biāo)與電腦之間架設(shè)一條虛擬通路,通過控制軟件和硬件的有機(jī)結(jié)合,在各種不同操作系統(tǒng)中記錄和模擬鍵盤和鼠標(biāo)輸入的數(shù)據(jù),可以適應(yīng)各種復(fù)雜、無規(guī)律的操作過程,還可以將記錄的數(shù)據(jù)歸類保存,隨用隨取,以及以各種不同方式組合和重復(fù)使用。整個(gè)輸入數(shù)據(jù)的記錄存儲(chǔ)過程是隨著操作過程同時(shí)完成的,簡(jiǎn)單實(shí)用,可以按照操作過程的原貌模擬復(fù)現(xiàn)。因此本發(fā)明能夠有效利用人力資源,降低產(chǎn)品成本,為實(shí)現(xiàn)電腦安裝、配置和測(cè)試等多種操作的全面自動(dòng)化提供了一項(xiàng)有效的技術(shù)裝備和手段。
本發(fā)明的實(shí)現(xiàn)方法由兩部分組成,一部分是控制單片機(jī)操作的,以程序方式存儲(chǔ)在單片機(jī)內(nèi)部;另一部分是控制主控計(jì)算機(jī)操作的,作為控制程序存儲(chǔ)在主控計(jì)算機(jī)內(nèi)部存儲(chǔ)器里,其中對(duì)鍵盤和鼠標(biāo)輸入的數(shù)據(jù)和各數(shù)據(jù)之間的時(shí)間值的壓縮處理和存儲(chǔ)的方法,創(chuàng)意新穎、簡(jiǎn)單、實(shí)用,大大節(jié)省了存儲(chǔ)空間。
圖1是本發(fā)明系統(tǒng)在進(jìn)行計(jì)算機(jī)自動(dòng)安裝測(cè)試時(shí)的安裝連接關(guān)系示意圖。
圖2是本發(fā)明系統(tǒng)中的模擬控制裝置硬件結(jié)構(gòu)組成方框示意圖。
圖3是本發(fā)明的數(shù)據(jù)存儲(chǔ)器中劃分為三個(gè)不同用途的功能區(qū)域示意圖。
圖4是本發(fā)明中控制單片機(jī)的模擬控制裝置運(yùn)行方法的流程圖。
圖5是本發(fā)明中對(duì)時(shí)間數(shù)據(jù)進(jìn)行壓縮處理的方法流程圖。
圖6是本發(fā)明中控制主控計(jì)算機(jī)運(yùn)行方法的流程圖。
具體實(shí)施例方式
參見圖1,本發(fā)明是一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),該系統(tǒng)是由以單片機(jī)為核心的模擬控制裝置10和由PC機(jī)構(gòu)成的主控計(jì)算機(jī)20所組成;其中記錄模擬裝置10安插在鍵盤和鼠標(biāo)與被控計(jì)算機(jī)30連接的通道之間,并通過串行口與主控計(jì)算機(jī)20建立聯(lián)絡(luò)通道。該系統(tǒng)可以在各種不同操作系統(tǒng)中實(shí)現(xiàn)電腦安裝、配置和測(cè)試等多種操作的自動(dòng)化。
參見圖2,本發(fā)明的模擬控制裝置10的控制電路中,在單片機(jī)1外圍還設(shè)有可編程邏輯電路2、鍵盤鼠標(biāo)輸入接口6、鍵盤鼠標(biāo)模擬輸出接口7、被控計(jì)算機(jī)電源控制電路4和與主控計(jì)算機(jī)接續(xù)的串行通訊接口8,其中可編程邏輯電路2分別連接有作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器3(NVRAM)、控制鍵盤5、狀態(tài)指示燈9和被控計(jì)算機(jī)電源控制電路4。在控制鍵盤5中設(shè)置有開始記錄、停止記錄、開始模擬和串口上傳數(shù)據(jù)四個(gè)控制按鍵,這四個(gè)控制按鍵均為自復(fù)位按鍵。
參見圖3,為了平衡需要記錄的數(shù)據(jù)量和單片機(jī)所能直接管理的數(shù)據(jù)量,本發(fā)明選用32K的非易失存儲(chǔ)器3(NVRAM)作為數(shù)據(jù)緩存器。為了更有效地利用內(nèi)存,使程序進(jìn)行得更加迅捷、有效,該存儲(chǔ)器被劃分為三個(gè)區(qū)域,分別為數(shù)據(jù)區(qū)狀態(tài)標(biāo)識(shí)區(qū)(占用4個(gè)字節(jié)),用于標(biāo)識(shí)后面兩個(gè)存儲(chǔ)區(qū)里實(shí)際存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,其中前兩個(gè)字節(jié)為數(shù)據(jù)存儲(chǔ)區(qū)中的數(shù)據(jù)長(zhǎng)度=最高字節(jié)+次高字節(jié)×256,后兩個(gè)字節(jié)為附加時(shí)間存儲(chǔ)區(qū)中的數(shù)據(jù)長(zhǎng)度=次低字節(jié)+最低字節(jié)×256;數(shù)據(jù)存儲(chǔ)區(qū)(占用30000個(gè)字節(jié)),用于分別存儲(chǔ)鍵盤數(shù)據(jù)包、鼠標(biāo)數(shù)據(jù)包和端口轉(zhuǎn)換標(biāo)識(shí);以及附加時(shí)間存儲(chǔ)區(qū)(占用2000個(gè)字節(jié))。
本發(fā)明的模擬控制裝置主要完成下列功能記錄鍵盤和/或鼠標(biāo)向被控計(jì)算機(jī)發(fā)送過來的數(shù)據(jù),記錄鍵盤和/或鼠標(biāo)發(fā)送數(shù)據(jù)之間的間隔時(shí)間,處理數(shù)據(jù)(完成時(shí)間壓縮、數(shù)據(jù)存取與辯識(shí)),模擬鍵盤和/或鼠標(biāo)數(shù)據(jù)發(fā)送時(shí)序與主控計(jì)算機(jī)進(jìn)行通信,以及與主控計(jì)算機(jī)進(jìn)行數(shù)據(jù)和命令通信。
參見圖4,說明本發(fā)明模擬控制裝置的操作過程。在該裝置加電后,初始化內(nèi)部各項(xiàng)設(shè)置,如中斷、串口、計(jì)時(shí)器、變量等內(nèi)部資源;接著判斷被控計(jì)算機(jī)的鍵盤和鼠標(biāo)是否需要初始化?然后進(jìn)入循環(huán)判斷該裝置四個(gè)控制按鍵(“開始記錄”、“停止記錄”、“開始模擬”和“串口上傳數(shù)據(jù)”)狀態(tài)或從串口接收到的相關(guān)控制數(shù)據(jù)后的操作過程,同時(shí)完成相應(yīng)的各項(xiàng)操作。圖4中的流程比較詳細(xì)地描述了模擬控制裝置的操作過程,這里不再贅述。
鍵盤和鼠標(biāo)輸入的數(shù)據(jù)都是以字節(jié)為基礎(chǔ),并且每個(gè)字節(jié)間的數(shù)據(jù)間隔時(shí)間是不確定的。為了能夠正確記錄數(shù)據(jù)間的時(shí)間間隔,滿足足夠的時(shí)間分辨能力(2.5ms),同時(shí)又不會(huì)占用過多的存儲(chǔ)空間。本發(fā)明對(duì)鍵盤和鼠標(biāo)輸入的數(shù)據(jù)和這些數(shù)據(jù)之間的時(shí)間間隔采用了特定的處理。其中鍵盤和鼠標(biāo)輸入的數(shù)據(jù)間的時(shí)間間隔是用3個(gè)字節(jié)來表示。這樣每個(gè)時(shí)間間隔值的數(shù)據(jù)就會(huì)關(guān)聯(lián)3個(gè)字節(jié)的數(shù)值,但是,這3個(gè)字節(jié)的時(shí)間間隔值不會(huì)在其中每個(gè)字節(jié)內(nèi)都存有有效的時(shí)間計(jì)數(shù)值。因?yàn)榇蠖鄶?shù)的時(shí)間間隔值只需用一個(gè)字節(jié)就足夠表示了,所以如果每個(gè)時(shí)間間隔值的數(shù)據(jù)都相應(yīng)地使用3個(gè)字節(jié)的數(shù)值來表示,其數(shù)據(jù)存儲(chǔ)量將會(huì)相當(dāng)大,而且,其中會(huì)有相當(dāng)多的無用時(shí)間數(shù)值占用數(shù)據(jù)存儲(chǔ)空間。為了有效、科學(xué)地利用內(nèi)存,本發(fā)明采用了“時(shí)間動(dòng)態(tài)壓縮標(biāo)識(shí)”的方法,該方法是將最低的一個(gè)字節(jié)的時(shí)間值經(jīng)過壓縮標(biāo)識(shí)后與鍵盤或鼠標(biāo)輸入的數(shù)據(jù)值組成數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)區(qū),而對(duì)另外兩個(gè)高字節(jié),只有在其有值時(shí),即用一個(gè)字節(jié)不能夠存儲(chǔ)的情況下,才被存儲(chǔ)到附加時(shí)間存儲(chǔ)區(qū)中。所謂對(duì)最低的一個(gè)字節(jié)的時(shí)間值進(jìn)行壓縮標(biāo)識(shí),是將一個(gè)字節(jié)(8位)的數(shù)據(jù)用其低7位表示,而用該字節(jié)最高位表示另外兩個(gè)高字節(jié)中是否存儲(chǔ)有時(shí)間變量的有效數(shù)據(jù)。其具體操作步驟參見圖5(1)首先判斷該最低一個(gè)字節(jié)的時(shí)間值X是否為0xFF?如是,則先將其減1,再順序進(jìn)行下述步驟;若不是,則直接進(jìn)行下述步驟;(2)判斷其兩個(gè)高字節(jié)的值是否為零?如是,則按照公式(X+1)/2,進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2;若不是,則按照另一公式(X+1)/2+0×80進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2,再加上0×80。
本發(fā)明的附加時(shí)間存儲(chǔ)區(qū)的數(shù)據(jù)是以兩個(gè)一組的方式存儲(chǔ)的,每一組的低字節(jié)在前,高字節(jié)在后。只有與某個(gè)鍵值數(shù)據(jù)相關(guān)的時(shí)間值的兩個(gè)高字節(jié)中任意一個(gè)不為零時(shí),該兩個(gè)高字節(jié)的值才會(huì)按照其出現(xiàn)的順序存儲(chǔ)在該附加時(shí)間存儲(chǔ)區(qū)中。
本發(fā)明在對(duì)鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)進(jìn)行特定的數(shù)據(jù)運(yùn)算處理中,無論鍵盤輸入什么類型、什么組合形式的鍵值,都是用雙字節(jié)表示鍵盤輸入的數(shù)據(jù),其中低字節(jié)為時(shí)間數(shù)據(jù)(即上述的最低位字節(jié)的時(shí)間值),高字節(jié)為鍵值數(shù)據(jù)。如果低字節(jié)的時(shí)間數(shù)據(jù)大于或等于128,根據(jù)本發(fā)明的“時(shí)間動(dòng)態(tài)壓縮標(biāo)識(shí)”方法,說明還有兩個(gè)字節(jié)時(shí)間值存儲(chǔ)在附加時(shí)間存儲(chǔ)區(qū)中。因?yàn)槭髽?biāo)輸入的數(shù)據(jù)格式固定,每次均為3個(gè)字節(jié),所以在存儲(chǔ)區(qū)中,它的存儲(chǔ)格式也相對(duì)固定,均用四字節(jié)表示之其中第一字節(jié)為時(shí)間數(shù)據(jù)(即上述的最低位字節(jié)的時(shí)間值),后三個(gè)字節(jié)為鼠標(biāo)輸入的字節(jié)。同樣,若第一字節(jié)的時(shí)間數(shù)據(jù)大于或等于128,則說明還有兩個(gè)字節(jié)的時(shí)間值存儲(chǔ)在附加時(shí)間存儲(chǔ)區(qū)中。
為了能夠動(dòng)態(tài)辨認(rèn)鼠標(biāo)或鍵盤輸入的數(shù)據(jù),并正確模擬鍵盤和鼠標(biāo)的操作過程,本發(fā)明采用了“默認(rèn)端口及動(dòng)態(tài)端口轉(zhuǎn)換”的概念。也就是在存儲(chǔ)區(qū)中的數(shù)據(jù)包默認(rèn)為鍵盤的數(shù)據(jù)包,而在要向存儲(chǔ)區(qū)中存入鼠標(biāo)數(shù)據(jù)包時(shí),應(yīng)在該鼠標(biāo)數(shù)據(jù)包之前加入三個(gè)字節(jié),作為端口轉(zhuǎn)換標(biāo)識(shí)。這三個(gè)字節(jié)的數(shù)值均為0xFF;以后每當(dāng)需要轉(zhuǎn)換存儲(chǔ)的數(shù)據(jù)包時(shí),都需要先加入這三個(gè)字節(jié)的標(biāo)識(shí),以便能夠動(dòng)態(tài)辨認(rèn)鼠標(biāo)或鍵盤的數(shù)據(jù),并正確模擬鍵盤或鼠標(biāo)的操作過程。
本發(fā)明的主控計(jì)算機(jī)主要完成下列功能辯識(shí)模擬控制裝置輸入的各項(xiàng)命令,并調(diào)取相應(yīng)的操作;通過串行接口與模擬控制裝置進(jìn)行命令的交換和數(shù)據(jù)的傳輸,以及完成文件的存取操作。
參見圖6,說明本發(fā)明的主控計(jì)算機(jī)操作過程(21)初始化內(nèi)部資源,定義緩存區(qū)和內(nèi)部變量;(22)打開或新建一個(gè)二進(jìn)制文件;(23)判斷輸入命令是否為從串口接收數(shù)據(jù)?若是,則從串口接收數(shù)據(jù)并存入緩沖區(qū)中,并在接收完畢后,將緩沖區(qū)中的數(shù)據(jù)存入新建的二進(jìn)制文件中;(24)判斷輸入命令是否為從串口發(fā)送數(shù)據(jù)?若是,則將打開的文件中的數(shù)據(jù)進(jìn)行處理,并將處理后的數(shù)據(jù)從串口發(fā)送出去;(25)關(guān)閉上述操作過的文件,并自行退出。
需要說明的是如果不需要將鍵盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份,可以省略該系統(tǒng)中的主控計(jì)算機(jī),模擬控制裝置中有關(guān)主控計(jì)算機(jī)的相關(guān)操作和主控計(jì)算機(jī)的操作也都可以省略之。
本發(fā)明已經(jīng)研制成性能樣機(jī),并進(jìn)行了實(shí)施試驗(yàn),試驗(yàn)的結(jié)果是成功的,實(shí)現(xiàn)了發(fā)明目的。
權(quán)利要求
1.一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),其特征在于該系統(tǒng)是由以單片機(jī)為核心的模擬控制裝置和由PC機(jī)構(gòu)成的主控計(jì)算機(jī)所組成;所述的模擬控制裝置的控制電路中,在單片機(jī)外圍設(shè)有可編程邏輯電路、鍵盤鼠標(biāo)輸入接口、鍵盤鼠標(biāo)模擬輸出接口、被控計(jì)算機(jī)電源控制電路和與主控計(jì)算機(jī)接續(xù)的串行通訊接口,所述的可編程邏輯電路分別連接有作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器、控制鍵盤、狀態(tài)指示燈和被控計(jì)算機(jī)電源控制電路。
2.根據(jù)權(quán)利要求1所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),其特征在于所述的控制鍵盤中設(shè)置有開始記錄、停止記錄、開始模擬和串口上傳數(shù)據(jù)四個(gè)控制按鍵,這四個(gè)控制按鍵均為自復(fù)位按鍵。
3.根據(jù)權(quán)利要求1所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),其特征在于所述的作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器的存儲(chǔ)容量為32K,該存儲(chǔ)器被劃分為三個(gè)區(qū)域4個(gè)字節(jié)的數(shù)據(jù)區(qū)狀態(tài)標(biāo)識(shí)區(qū),用于標(biāo)識(shí)后面兩個(gè)存儲(chǔ)區(qū)里實(shí)際存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,其中前兩個(gè)字節(jié)為數(shù)據(jù)存儲(chǔ)區(qū)長(zhǎng)度=最高字節(jié)+次高字節(jié)×256,后兩個(gè)字節(jié)為附加時(shí)間存儲(chǔ)區(qū)長(zhǎng)度=次低字節(jié)+最低字節(jié)×256;30000個(gè)字節(jié)的數(shù)據(jù)存儲(chǔ)區(qū),用于分別存儲(chǔ)鍵盤數(shù)據(jù)包、鼠標(biāo)數(shù)據(jù)包和端口轉(zhuǎn)換標(biāo)識(shí);以及2000個(gè)字節(jié)的附加時(shí)間存儲(chǔ)區(qū)。
4.根據(jù)權(quán)利要求1所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng),其特征在于所述的由PC機(jī)構(gòu)成的主控計(jì)算機(jī)可以省略之,此時(shí)不能夠?qū)㈡I盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份。
5.一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于該方法是由控制以單片機(jī)為核心的模擬控制裝置運(yùn)行的方法和控制主控計(jì)算機(jī)運(yùn)行的方法兩部分配合完成的,如果不需要將鍵盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份,后者可以省略。
6.根據(jù)權(quán)利要求5所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述的以單片機(jī)為核心的模擬控制裝置運(yùn)行的方法包括有下列操作步驟(11)在該裝置加電后,初始化內(nèi)部各項(xiàng)設(shè)置,接著判斷被控計(jì)算機(jī)的鍵盤和鼠標(biāo)是否需要初始化,并進(jìn)入下述各項(xiàng)循環(huán)判斷該裝置各個(gè)控制按鍵狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(12)當(dāng)判斷到“開始記錄”的控制按鍵按下或從串口接收到“開始記錄”的控制數(shù)據(jù)后,該裝置進(jìn)入循環(huán)記錄輸入的數(shù)據(jù)狀態(tài);并在鍵盤和/或鼠標(biāo)發(fā)送數(shù)據(jù)之后的中斷中,將記錄到的鍵盤和/或鼠標(biāo)輸入的各個(gè)數(shù)據(jù)和數(shù)據(jù)間的時(shí)間間隔,經(jīng)過特定的數(shù)據(jù)運(yùn)算處理后存入該裝置內(nèi)的數(shù)據(jù)存儲(chǔ)區(qū)中;同時(shí),在循環(huán)記錄的過程中,如果判斷到“停止記錄”的控制按鍵按下或從串口接收到“停止記錄”的控制數(shù)據(jù)后,該裝置將返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(13)當(dāng)判斷到“開始模擬”的控制按鍵按下或從串口接收到“開始模擬”的控制數(shù)據(jù)后,該裝置進(jìn)入模擬工作狀態(tài),即將其數(shù)據(jù)存儲(chǔ)區(qū)中存儲(chǔ)的鍵盤和/或鼠標(biāo)的數(shù)據(jù)流按時(shí)間順序發(fā)送到被控計(jì)算機(jī)的鍵盤和/或鼠標(biāo)的輸入接口,并在發(fā)送完所有數(shù)據(jù)存儲(chǔ)區(qū)中的數(shù)據(jù)后,返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(14)當(dāng)判斷到“串口上傳數(shù)據(jù)”的控制按鍵按下或從串口接收到“串口上傳數(shù)據(jù)”的控制數(shù)據(jù)后,該裝置進(jìn)入與主控計(jì)算機(jī)串行通信工作狀態(tài)該裝置自動(dòng)識(shí)別目前數(shù)據(jù)存儲(chǔ)區(qū)和附加時(shí)間存儲(chǔ)區(qū)中存儲(chǔ)的數(shù)據(jù)總?cè)萘?,并在和主控?jì)算機(jī)建立通信鏈路后,將數(shù)據(jù)存儲(chǔ)區(qū)和附加時(shí)間存儲(chǔ)區(qū)中存儲(chǔ)的數(shù)據(jù)一次全部發(fā)送過去,備份存儲(chǔ)在主控計(jì)算機(jī)中;此后,該裝置返回到循環(huán)判斷其各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(15)當(dāng)判斷是復(fù)位后第一次從串口接收的數(shù)據(jù)時(shí),該裝置首先對(duì)收到的數(shù)據(jù)進(jìn)行命令解析,并調(diào)用相應(yīng)的操作;并在解析完數(shù)據(jù)后,返回到循環(huán)判斷該裝置各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程;(16)當(dāng)判斷到不是復(fù)位后第一次從串口接收的數(shù)據(jù)時(shí),該裝置將接收到的數(shù)據(jù)按照時(shí)間順序和種類分別存儲(chǔ)到相應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū)中,在接收全部數(shù)據(jù)之后,該裝置返回到循環(huán)判斷其各個(gè)控制按鍵的狀態(tài)或從串口接收到的控制數(shù)據(jù)的操作過程。
7.根據(jù)權(quán)利要求5所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述的主控計(jì)算機(jī)運(yùn)行的方法包括有下列操作步驟(21)初始化內(nèi)部資源,定義緩存區(qū)和內(nèi)部變量;(22)打開或新建一個(gè)二進(jìn)制文件;(23)按照輸入命令要求,將從串口接收到的數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中,并在接收完畢后,將緩沖區(qū)中的數(shù)據(jù)存入新建的二進(jìn)制文件中;(24)按照輸入命令要求,對(duì)打開的文件中的數(shù)據(jù)進(jìn)行處理,并將處理后的數(shù)據(jù)從串口發(fā)送出去;(25)關(guān)閉上述操作過的文件,并自行退出。
8.根據(jù)權(quán)利要求6所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述步驟(12)、(13)中涉及串口的操作和所述步驟(14)、(15)、(16)的操作均可省略之,此時(shí)不能夠?qū)㈡I盤和/或鼠標(biāo)輸入操作的數(shù)據(jù)記錄存儲(chǔ)備份。
9.根據(jù)權(quán)利要求6所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述的步驟(12)中對(duì)鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)進(jìn)行特定的數(shù)據(jù)運(yùn)算處理中,用雙字節(jié)表示鍵盤輸入的數(shù)據(jù),其中低字節(jié)為時(shí)間數(shù)據(jù),高字節(jié)為鍵值數(shù)據(jù);用四字節(jié)表示鼠標(biāo)輸入的數(shù)據(jù),其中第一字節(jié)為時(shí)間數(shù)據(jù),后三個(gè)字節(jié)為鼠標(biāo)輸入的字節(jié);且默認(rèn)存儲(chǔ)區(qū)中的數(shù)據(jù)包為鍵盤數(shù)據(jù)包,而在要向存儲(chǔ)區(qū)中存入鼠標(biāo)數(shù)據(jù)包時(shí),應(yīng)在該鼠標(biāo)數(shù)據(jù)包之前加入三個(gè)字節(jié),作為端口轉(zhuǎn)換標(biāo)識(shí),這三個(gè)字節(jié)的數(shù)值均為0xFF;以便能夠動(dòng)態(tài)辨認(rèn)鼠標(biāo)或鍵盤的數(shù)據(jù),并正確模擬鍵盤或鼠標(biāo)的操作過程。
10.根據(jù)權(quán)利要求6或9所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述的步驟(12)中鍵盤和/或鼠標(biāo)輸入的數(shù)據(jù)間的時(shí)間間隔是用3個(gè)字節(jié)來表示,其中只有最低的一個(gè)字節(jié)的時(shí)間值經(jīng)過壓縮標(biāo)識(shí)后與鍵盤或鼠標(biāo)輸入的數(shù)據(jù)值組成數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)區(qū);而對(duì)另外兩個(gè)高字節(jié),只有在其有數(shù)值時(shí),即用一個(gè)字節(jié)不能夠存儲(chǔ)時(shí)間值的情況下,才以兩個(gè)一組的方式按照其出現(xiàn)的順序存儲(chǔ)到附加時(shí)間存儲(chǔ)區(qū)中。
11.根據(jù)權(quán)利要求10所述的鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬方法,其特征在于所述的對(duì)最低的一個(gè)字節(jié)的時(shí)間值進(jìn)行壓縮標(biāo)識(shí)的方法是將一個(gè)8位字節(jié)的數(shù)據(jù)用其低7位表示,而用該字節(jié)最高位表示另外兩個(gè)高字節(jié)中是否存儲(chǔ)有時(shí)間變量數(shù)據(jù);其具體操作步驟是(1)首先判斷該最低一個(gè)字節(jié)的時(shí)間值X是否為0xFF?如是,則先將其減1,再順序進(jìn)行下述步驟;若不是,則直接進(jìn)行下述步驟;(2)判斷其兩個(gè)高字節(jié)的值是否為零?如是,則按照公式(X+1)/2,進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2;若不是,則按照另一公式(X+1)/2+0×80進(jìn)行運(yùn)算,所得到的數(shù)值即為該字節(jié)壓縮后的數(shù)值,即將該最低字節(jié)的數(shù)值X加1,然后除以2,再加上0×80。
全文摘要
一種鍵盤和鼠標(biāo)輸入操作的數(shù)據(jù)記錄和模擬系統(tǒng)及方法,該系統(tǒng)是由以單片機(jī)為核心的模擬控制裝置和由PC機(jī)構(gòu)成的主控計(jì)算機(jī)所組成;在模擬控制裝置的控制電路中,在單片機(jī)外圍設(shè)有可編程邏輯電路、鍵盤鼠標(biāo)輸入接口、鍵盤鼠標(biāo)模擬輸出接口、被控計(jì)算機(jī)電源控制電路和與主控計(jì)算機(jī)接續(xù)的串行通訊接口,所述的可編程邏輯電路分別連接有作為數(shù)據(jù)緩存器的非易失存儲(chǔ)器(NVRAM)、控制鍵盤、狀態(tài)指示燈和被控計(jì)算機(jī)電源控制電路。本發(fā)明通過控制軟件和硬件的有機(jī)結(jié)合,可以在各種不同操作系統(tǒng)中記錄和模擬鍵盤和鼠標(biāo)輸入的數(shù)據(jù),還可以將記錄的數(shù)據(jù)歸類保存,隨用隨取,為實(shí)現(xiàn)電腦安裝、配置和測(cè)試等多種操作的全面自動(dòng)化提供了一項(xiàng)有效的技術(shù)裝備和手段。
文檔編號(hào)G06F13/00GK1501265SQ0214648
公開日2004年6月2日 申請(qǐng)日期2002年11月12日 優(yōu)先權(quán)日2002年11月12日
發(fā)明者龔仲濤, 盧旭, 杜春海 申請(qǐng)人:聯(lián)想(北京)有限公司