- 相關(guān)推薦
并行口與串行口實時通訊
摘要 該文介紹了一種利用并行打印口與串行通訊口實施單向數(shù)據(jù)通訊的方法,該方法曾成功地實際應(yīng)用于由386微機所組成的某個工程系統(tǒng)中,取得了滿意的效果。
一、引言
一般的科學(xué)實驗或工程應(yīng)用中,常常需將實驗數(shù)據(jù)或產(chǎn)品數(shù)據(jù)由打印機輸出,然后再由人工(或輸入電腦)進行分析處理。
如果將那些送往打印口的數(shù)據(jù),直接傳送給電腦,由軟件進行分析處理,形成一個完整的數(shù)據(jù)處理系統(tǒng),將給用戶的數(shù)據(jù)處理帶來方便,更好地為生產(chǎn)科研服務(wù)。
本文敘述的是,結(jié)合油田使用的檢波器測試儀(SMT-100),解決了將那些送往打印口(熱敏打印機-富士通FTPO40UCS)的數(shù)據(jù)通過PC機串行口直接送往電腦的問題,以及所開發(fā)的接口應(yīng)用軟件。
二、工作原理
由于SMT-100檢波器測試儀的8位數(shù)據(jù)是經(jīng)并行口送到打印機的,若欲將輸出到該并行口的數(shù)據(jù)再經(jīng)并行口送往電腦主機,則需設(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串行口送往電腦主機是可行的。特別是在工業(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è)置與主機相匹配即可。
三、接口程序設(shè)計
利用BIOS提供的串行口例行程序傳輸,當(dāng)傳輸速度大于2400bps時,有可能丟失字符[3]。為此,本系統(tǒng)采用了中斷控制方式,對串行口的接收和存儲實施控制,以防數(shù)據(jù)丟失。
PC機中執(zhí)行串行通訊的主芯片8250是可編程的,有10個可訪問寄存器,其中5個根據(jù)需要,在程序開始時,對它們初始化就可使用。
其端口地址與狀態(tài)字的含義如表2。
表2
PC機內(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ù)程序,進行數(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ù)用戶需要,開發(fā)相應(yīng)的應(yīng)用軟件。
我們將油田檢波器測試儀與主機(386)按上述方式連通,并將那些經(jīng)串行口接收到的全部信息,經(jīng)過應(yīng)用軟件分析、處理,生成磁盤數(shù)據(jù)文件[4],為用戶項目的深入研究提供原始資料[5]。
檢測一個元件的處理過程如下:
圖3
(1)在主程序中為串行口存儲數(shù)據(jù),建立一個先進先出的字符緩沖區(qū)circle-buffer,動態(tài)申請64K內(nèi)存,可接收相當(dāng)于2000個元件的全部信息。
(2)在主程序中開辟一個能存放單個元件處理結(jié)果的小緩沖區(qū)(如30字節(jié))readbuffer。
(3)BX基指針指向circle buffer緩沖區(qū),順序掃描,每次處理一個元件所接收的信息量,利用堆棧技術(shù),將一個元件各參數(shù)間分隔符(如"=")地址壓入堆棧。然后逐一彈出,按輸出文本格式進行處理,并將處理結(jié)果存入readbuffer。
(4)將readbuffer的內(nèi)容經(jīng)磁盤文件
[1] [2]
【并行口與串行口實時通訊】相關(guān)文章:
GPS數(shù)據(jù)實時通訊中數(shù)據(jù)解碼問題的算法研究04-27
基于嵌入式操作系統(tǒng)VxWorks的實時通訊的實現(xiàn)05-02
實時調(diào)度算法04-30
遙測參數(shù)的實時判別05-02
基于Web的實時答疑系統(tǒng)04-30
公路隧道實時監(jiān)控系統(tǒng)的研究04-26
實時熒光定量PCR技術(shù)綜述04-27
通訊04-29
江西冬季測量實時固體降水的對策04-27