一種微機並行列印口輸出數據實時截獲裝置的製作方法
2023-06-06 00:17:36
專利名稱:一種微機並行列印口輸出數據實時截獲裝置的製作方法
技術領域:
本發明屬計算機硬體接口領域,涉及印表機及類似並行接口外設的接口及數據截獲技術。
印表機是當前PC微機系統中最常用的外設之一,大多數的程序運行結果由它輸出。在很多場合,比如不同印表機間控制命令的相互轉換仿真、將列印數據作另一程序輸入進行再加工、將列印數據變換後遠傳、進行列印效果在顯示器上模擬預演等,都需對已有程序的列印輸出數據進行截獲再重定向輸出。
在先有技術中,這種截獲通常用軟體實現,即通過修改DOS設備驅動程序或BIOS中的INT17H中斷服務程序,截獲將要(不是已經)從列印口輸出的數據,如常見的各種印表機漢字驅動軟體。這種軟體截獲方法最大的缺點之一,是它僅支持由調用DOS功能或BIOSINT17H中斷進行列印輸出的程序,對很多直接對列印並口操作進行輸出(如WPS等常用大型軟體)的數據不適用。另一個缺點,是所截獲的數據還不是最終從列印口送出的,會有很多因素造成它與真正從列印口送出數據的差異(如列印通道故障或病毒幹擾等)。
在這種情況下,發展了硬體實時截獲技術。目前的硬體截獲技術主要用於印表機命令仿真卡,在先有技術中其實現方法可分為兩種一種是利用單片機或大規模可編程器件,從硬體上仿真一個印表機並從列印口按印表機時序讀回數據。這種方法最大的缺點,就是成本高、使用聯接複雜、因數據再處理軟體固化在卡上而功能相對單一且不便於升級、將截獲數據重新送入微機再處理也很不方便。另一種硬體截獲方法,是當向列印口輸出時,利用列印口輸出信號返回其控制卡中(或控制卡通過仿真一部分列印口的功能自己產生)一硬體中斷請求,微機響應中斷後,讀回已送上列印埠的數據。這種方法的主要缺點是要佔用微機系統總線擴展槽和一個硬中斷向量,要開蓋進行機內安裝,不適用於無擴展槽或內部空間很小的便攜機,成本也相對較高。
本發明的目的,就是提供一種新型硬體和軟體相結合的截獲列印口已發出的數據並及時回送入微機內存緩衝區的裝置,以克服先有技術的上述缺點。
實現上述目的的技術方案如下祥述本裝置硬體由一個聯接插頭T、一個邏輯控制部件IC和它們各引腳之間的特定相互聯接線組成。
對照(
圖1),T是一個25芯D型(針型)插頭,它的引腳排列與標準列印接口的25芯D型插座一一對應。通過T將本裝置插接在微機標準列印接口的插座上取得本裝置所需的所有來自微機的信號和電源,以及把本裝置所截獲的數據和產生的虛擬印表機應答信號返回給列印口。
對照(圖1),IC是由通用低功耗(如CMOS)數字電路組成的一邏輯部件。IC的電源由列印口通過T第16腳(即 T)供給。在列印口中,此引腳是用來初始化印表機,在列印過程中它一直保持為高電平;同時,它在標準的列印接口卡上是通過一個3-5K的電阻上拉接+5V,因整個IC的工作電流<400μA,故可直接用它作可控的電源,實踐證明其工作是穩定可靠的。IC的GND端直接接T的第25腳,與微機共地。IC的主要功能是在P/S=1時用CP脈衝上升沿鎖存D0-D7數據,並在P/S=0時,在CP脈衝下將鎖存數據從Q8端串行移出。即其邏輯功能是一個8位同步並行輸入串行輸出的移位寄存器。
對照(圖1),T與IC各引腳的連接關係是在T中, (1腳)與BUBY(11腳)直接相連,產生一虛擬印表機「忙」信號, (15腳)和SLCT(13腳)直接與 (16腳)相連固定接為高電平,PE(12腳)和GND(25腳)連接固定為低電平。這樣,列印口插上本裝置後,各返回信號類同於一個正常工作的印表機,而其虛擬「忙」信號軟體可控。
T與IC之間的連線有 (1腿)與CP相連、 (14腿)與P/S相連、D0-D7分別與P1-P8相連,而IC的DS直接接地(也可接Vcc端)。這樣連接後,當所要截獲的數據向列印口發出時,因列印時默認(印表機要求) =1,所以它被 脈衝同步置入IC。當下述駐留軟體的定時中斷發生時,在軟體控制下置 =0,並再發8個 脈衝,將鎖存在IC中的截獲數據依次移入Q8通過與之相連的 (T之10腿)逐位讀回。
本裝置總體功能的實現,還在於上述硬體設計和微機中駐留軟體的配合。這個配合軟體的設計方案如下1、微機使用本裝置時,先執行這個配合的的驅動程序。這個程序在內存中開闢一個存儲截獲數據的緩衝區BUFF、安裝一個定時讀回所截獲數據的軟中斷服務程序INT 1CH、然後把列印口的 (T中引腳1)置為低電平「L」,駐留內存。這時虛擬「忙」信號BUBY為低,準許要截獲的數據隨時由前臺程序發出。
2、每隔一定時間(如55ms)產生一次定時中斷。進入中斷後,先檢查BUBY是否仍為低,若是,則前臺還沒往列印口發過數,直接返回繼續等待。若BUBY變高( 被前臺置高引起),則說明IC中已鎖存了一個數據,就繼續執行中斷取回數據、修改緩衝指針存入緩衝區,然後將 清為低,準許前臺繼續發送數據,再返回等待下次中斷。
3、前臺程序每發送(列印)一個數據後,因印表機接口的時序要求,必將 置高。這樣,一方面在IC的CP端產生一上跳沿,使IC將數據鎖存,另一方面,它也將BUBY拉高,使本裝置作為虛擬印表機向接口體現為「忙」,阻止前臺程序再次送數,直到定時中斷產生從本裝置取走數據為止。
這樣,本裝置安裝並執行驅動程序後,與上述硬體配合就相當於在列印口接了一臺「虛擬印表機」,可透明地把前臺程序從列印口已經發出的數據截獲存入內存緩衝區內。對緩衝區內的數據可事後處理,也可由多任務程序或定時中斷馬上處理。
由於採取上述技術方案,使本裝置與先有技術相比,取得了以下實質性進步
1.本裝置在微機外部直接插接在列印口插座上,不使用微機總線擴展槽,不佔用系統硬中斷向量,體積小、連接方便。
2.採用準無源設計(內部採用低功耗晶片,直接從列印口控制線上獲取電源),不需外接電源。
3.採取軟硬體相結合的辦法截獲數據,硬體上產生虛擬印表機握手信號,截獲數據真實可靠;軟體定時中斷將截獲數據及時讀回,數據再處理可與截獲相分離,功能擴展及版本升級靈活方便。
4.製作工藝簡單,硬體成本極低(約10元人民幣)。
由於上述特點,本裝置截獲數據後可以經不同數據再處理軟體將數據再處理,即可實現9針仿24針列印、顯示器仿真印表機、印表機並行-串行轉換等多種功能的用途。
以下結合附圖和附錄(程序清單)具體說明一個實施實例。
(圖1)為本裝置的組成電原理圖,在圖中,T是一個25芯D型(針型)插頭,IC是一個8位同步並行輸入串行輸出的移位寄存器。(圖1)還明確體現了如上述技術方案中所說明的全部硬體電路連接關係。
在實施中,IC的最佳實施方案是選取一片通用數字集成電路CD4014,T選一能與列印口配接的標準25芯D型插座。這個實施方案中,IC各信號與CD4014管腳的對應關係如下IC信號4014管腳4014管腳IC信號P8┉116┉VccNC┉215┉P7Q8┉314┉P6P4┉413┉P5P3┉512┉NCP2┉611┉DSP1┉710┉CPGND┉89┉P/S(附錄1)為這個實施方案與硬體相配合的PC微機軟體清單(為8086宏彙編軟體),它完全是上述技術方案中軟體的一個具體實現,並在關鍵語句處有詳細中文注釋。
附錄1codesegmentassumecscodeorg100hbeginjmpstarBUFFDB0d700HDUP(0);為緩衝區預留空間;……………………………………………………………………;駐留程序開始;....工作變量區PRPDW?;列印口基址BUPdw0;緩衝區指針;....子程序開始PRINTBPROCNEAR;將一字節截獲數據存;入緩衝區PUSHES;入口AL=截獲字符PUSHDIMOVDI,CSMOVES,DIMOVDI,WORDPTRES[BUP]STOSBYTEPTRES[DI]CMPDI,0D800HJBPRBAMOVDI,0PRBAMOVWORDPTRES[BUP],DIPOPDIPOPESRETPRINTBENDP
getalprocncar;將已鎖存在IC中一字節截獲push dx ;數據從並口( 線)取入ALpushcxxorah,ahmovdx,wordptrcs[prp]incdx;DX=印表機狀態口movcx,8;getaainal,dx;取Q8入ALrclal,lrcl al,l ;取 位入Crclah,l;一位截獲數據移入AHincdx;DX=印表機控制口moval,ofh;發移位脈衝out dx,al ;此時 即IC的P/S=0mov al,oeh ;由 向IC的CP發一上跳沿outdx,aldecdx;DX恢復為狀態口loopgetaa;共讀取8位incdxmoval,ochout dx,al ;恢復 popcxpopdxmoval,ah;截獲數據存入ALretgetalendp
;.....定時中斷程序intlcpushdxpushaxmovdx,csprp;取列印口地址INCDX;讀狀態口INAL,DXTESTAL,80HJNZNOZF;沒字符被截獲,返回callgetal;取截獲字符CALLPRINTB;存入緩衝區INCDXMOVAL,ODH;撤消虛擬忙信號OUTDX,ALnozfpopax;返回popdxstiiret;……………………………………………………………………;初始化程序starmoval,byteptrds[82h];命令行參數movbx,0;為2表示LPT2cmpal,′2′;否則為PRNjnzprlhaomovbx,2prlhaomovax,0moves,axmovdx,wordptres[bx+408h]
cmpdx,0jznoprn;無對應列印口movwordptrdsprp,dx;取入列印口基址incdxincdxmoval,odh;初始化outdx,almovwordptrdsBUP,0movax,351chint21hmovax,eswordptr[bx]cmpax,wordptrds[intlc]jzjmpout;避免重複駐留movax,251Ch;安裝INT1CH中斷movdx,offset intlcint21hmovdx,offset starmovcl,4shrdx,clmovax,3100h;程序駐留int21hjmpoutmovdx,offsetczjmprrrrnoprnmovdx,offsetnprrrrmovah,9int21hmovah,4chint21hCZDB′程序已安裝,不能重複裝入!′,0DH,0AH,07H,′¥′npdb′沒有找到列印口!′,0dh,0ah,07h,′¥′codeendsendbegin
權利要求1.一種新型硬體和與之相配和軟體相結合的截獲列印口已發出的數據並及時回送入微機內存緩衝區的裝置,其硬體由一個25針D型插座T、一個邏輯控制部件IC和它們之間的特殊聯線組成,其特徵在於T是一個25芯D型(針型)插頭,它的引腳排列與標準列印接口的25芯D型插座一一對應,通過T將本裝置插接在微機標準列印接口的插座上取得本裝置所需的所有來自微機的信號和電源,以及把本裝置所截獲的數據和產生的虛擬印表機應答信號返回給列印口;IC是由通用低功耗(如CMOS)數字電路組成的一邏輯部件。IC的電源由列印口通過T第16腳(即 )供給,IC的地接T的25腳,與微機共地,IC的主要功能是在P/S=1時用CP脈衝上升沿鎖存D0-D7數據,並在P/S=0時,在CP脈衝下將鎖存數據從Q8端串行移出;在裝置中, (1腳)與BUBY(11腳)直接相連,產生一虛擬印表機「忙」信號,而 (15腳)和SLCT(13腳)直接與 (16腳)相連固定為高電平,PE(12腳)和GND(25腳)連接固定為低電平。這樣,列印口插上本裝置後,各返回信號類同於一個正常工作的印表機,而其虛擬「忙」信號軟體可控;T與IC之間的連線有STROBE(1腿)與CP相連、 (14腿)與P/S相連、D0-D7分別與P1-P8相連,而IC的DS直接接地(也可接Vcc端)。這樣連接後,當所要截獲的數據向列印口發出時,因列印時默認(印表機要求) =1,所以它被 脈衝同步置入IC。當與之配合的所述駐留軟體定時中斷發生時,在程序控制下置 =0,並再發8個 脈衝,將鎖存在IC中的截獲數據依次移入Q8通過與之相連的 (T之10腿)逐位讀回。
專利摘要一種截獲列印口已發出數據及時回送內存緩衝區的裝置,屬微機硬體接口領域。由插座T、邏輯部件IC及它們間特殊聯接的硬體及相配合的軟體組成。通過T在微機外部插接於列印口並取得電源,IC鎖存數據,整體硬體相配合產生可控虛擬印表機握手信號,軟體定時中斷將截獲數據及時讀回。數據再處理過程可與截獲相分離,不用擴展槽,不佔硬中斷,不需外接電源,工藝簡單,成本極低,用於列印數據重定向、再處理。
文檔編號G06F3/12GK2206474SQ9420637
公開日1995年8月30日 申請日期1994年3月14日 優先權日1994年3月14日
發明者吳述梗 申請人:吳述梗