并行口與串行口實時通訊
摘要 該文介紹了一種利用并行打印口與串行通訊口實施單向數(shù)據(jù)通訊的方法,該方法曾成功地實際應(yīng)用于由386微機(jī)所組成的某個工程系統(tǒng)中,取得了滿意的效果。
一、引言
一般的科學(xué)實驗或工程應(yīng)用中,常常需將實驗數(shù)據(jù)或產(chǎn)品數(shù)據(jù)由打印機(jī)輸出,然后再由人工(或輸入電腦)進(jìn)行分析處理。
如果將那些送往打印口的數(shù)據(jù),直接傳送給電腦,由軟件進(jìn)行分析處理,形成一個完整的數(shù)據(jù)處理系統(tǒng),將給用戶的數(shù)據(jù)處理帶來方便,更好地為生產(chǎn)科研服務(wù)。
本文敘述的是,結(jié)合油田使用的檢波器測試儀(SMT-100),解決了將那些送往打印口(熱敏打印機(jī)-富士通FTPO40UCS)的數(shù)據(jù)通過PC機(jī)串行口直接送往電腦的問題,以及所開發(fā)的接口應(yīng)用軟件。
二、工作原理
由于SMT-100檢波器測試儀的8位數(shù)據(jù)是經(jīng)并行口送到打印機(jī)的,若欲將輸出到該并行口的數(shù)據(jù)再經(jīng)并行口送往電腦主機(jī),則需設(shè)計專用接口板(如掃描儀專用接口板)。因為電腦所配置的并行口均被系統(tǒng)定義成標(biāo)準(zhǔn)輸出設(shè)備,無法接收外來的并行數(shù)據(jù),但其所配置的串行口卻是標(biāo)準(zhǔn)的輸入設(shè)備[1]。將并行數(shù)據(jù)經(jīng)"并-串"轉(zhuǎn)換之后,由標(biāo)準(zhǔn)RS-232串行口送往電腦主機(jī)是可行的。特別是在工業(yè)實際應(yīng)用中,既可節(jié)省遠(yuǎn)距離并行電纜的開支,又提高了抗干擾能力,因此在傳送數(shù)據(jù)量不是很大時,可以采用并行發(fā)送,串行接收的通訊方式。如圖1所示。
圖1接口連接圖(并口到串口)雙向轉(zhuǎn)換器采用工業(yè)產(chǎn)品SXP-320[2]。(略)
其主要功能參數(shù)如表1。
表1(略)
其參數(shù)設(shè)置由側(cè)面的8位DIP開頭完成:
圖2(略)
工作時,只需將其波特率、數(shù)據(jù)長度、停止位和奇偶校驗等的設(shè)置與主機(jī)相匹配即可。
三、接口程序設(shè)計
利用BIOS提供的串行口例行程序傳輸,當(dāng)傳輸速度大于2400bps時,有可能丟失字符[3]。為此,本系統(tǒng)采用了中斷控制方式,對串行口的接收和存儲實施控制,以防數(shù)據(jù)丟失。
PC機(jī)中執(zhí)行串行通訊的主芯片8250是可編程的,有10個可訪問寄存器,其中5個根據(jù)需要,在程序開始時,對它們初始化就可使用。
其端口地址與狀態(tài)字的含義如表2。
表2
PC機(jī)內(nèi)的8259A芯片,有一個中斷屏敝寄存器(IMR),可以提供8個中斷源,其中RS-232接口對應(yīng)于IRQ4,可按要求設(shè)置中斷屏蔽控制字。
當(dāng)8250發(fā)出的中斷申請信號(表示已準(zhǔn)備好接收數(shù)據(jù)),經(jīng)系統(tǒng)總線到達(dá)8259A中斷控制器的輸入端(IRQ4),CPU若響應(yīng)該中斷,則執(zhí)行該中斷的服務(wù)程序,進(jìn)行數(shù)據(jù)的傳送和存儲操作。
實用中的初始化設(shè)置如下:
mov al 2ch; 8259a初始化 mov dx,3fbh
out 21h,almov al,03h
mov dx,3fbh;8350初始化out dx,al
mov al,80hmov dx,3fch
out dx,almov al,0bh
mov dx,3f8hout dx,al
mov al,20mov dx,3f9h
out dx,almov al,01h
mov dx,3f9hout dx,al
mov al,0sti;開中斷
out dx,al
利用線狀態(tài)寄存器(端口地址3FDH),可檢測接收的數(shù)據(jù)是否有錯。若有錯,就發(fā)出報警聲,退出中斷服務(wù)程序,以便根據(jù)情況中止數(shù)據(jù)傳送。
四、應(yīng)用程序設(shè)計
采用上述通訊方式,可以采集到外部設(shè)備發(fā)送的全部信息,欲對其做進(jìn)一步處理和存儲,尚需根據(jù)用戶需要,開發(fā)相應(yīng)的應(yīng)用軟件。
我們將油田檢波器測試儀與主機(jī)(386)按上述方式連通,并將那些經(jīng)串行口接收到的全部信息,經(jīng)過應(yīng)用軟件分析、處理,生成磁盤數(shù)據(jù)文件[4],為用戶項目的深入研究提供原始資料[5]。
檢測一個元件的處理過程如下:
(1)在主程序中為串行口存儲數(shù)據(jù),建立一個先進(jìn)先出的字符緩沖區(qū)circle-buffer,動態(tài)申請64K內(nèi)存,可接收相當(dāng)于2000個元件的全部信息。
(2)在主程序中開辟一個能存放單個元件處理結(jié)果的小緩沖區(qū)(如30字節(jié))readbuffer。
(3)BX基指針指向circle buffer緩沖區(qū),順序掃描,每次處理一個元件所接收的信息量,利用堆棧技術(shù),將一個元件各參數(shù)間分隔符(如"=")地址壓入堆棧。然后逐一彈出,按輸出文本格式進(jìn)行處理,并將處理結(jié)果存入readbuffer。
(4)將readbuffer的內(nèi)容經(jīng)磁盤文件管理功能調(diào)用,寫入數(shù)據(jù)文件。一次一個記錄,如此重復(fù)(3)和(4),直到circle-buffer的內(nèi)容為空。
(5)工作過程中,通過ESC功能鍵可隨時中止串行口通訊工作。
五、結(jié)束語
在調(diào)試過程中,經(jīng)對500個元件進(jìn)行測試、傳送、接收和處理,都取得了令人滿意的結(jié)果。本項目已交西安石油勘探儀器廠檢波器分廠使用,系統(tǒng)實時方便,可靠性高,實用性強(qiáng)。
參考文獻(xiàn)
1 王士元,吳芝芳.IBM PC/XT接口技術(shù)及其應(yīng)用.天津:南開大學(xué)出版社,1990年
2 TWO WAY CONVERTER/BUFFER SXP-320 User's Manual .copyright 1990 ATEN International Co., LTD
3 沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計.北京:清華大學(xué)出版社,1991年
4 趙文忠等.微型機(jī)外圍接口與通道.西安交通大學(xué)出版社,1991年
5 地震檢波器原理.西安石油儀器廠,1986年