資源描述:
《并行口與串行口實(shí)時(shí)通訊 》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、并行口與串行口實(shí)時(shí)通訊摘要該文介紹了一種利用并行打印口與串行通訊口實(shí)施單向數(shù)據(jù)通訊的方法,該方法曾成功地實(shí)際應(yīng)用于由386微機(jī)所組成的某個(gè)工程系統(tǒng)中,取得了滿意的效果。一、引言一般的科學(xué)實(shí)驗(yàn)或工程應(yīng)用中,常常需將實(shí)驗(yàn)數(shù)據(jù)或產(chǎn)品數(shù)據(jù)由打印機(jī)輸出,然后再由人工(或輸入電腦)進(jìn)行分析處理。如果將那些送往打印口的數(shù)據(jù),直接傳送給電腦,由軟件進(jìn)行分析處理,形成一個(gè)完整的數(shù)據(jù)處理系統(tǒng),將給用戶的數(shù)據(jù)處理帶來方便,更好地為生產(chǎn)科研服務(wù)。本文敘述的是,結(jié)合油田使用的檢波器測試儀(SMT-100),解決了將那些送往打印口(熱敏打印機(jī)-富士通FTPO40UCS)的數(shù)據(jù)通過PC機(jī)串行口直接送往電腦的問題,以及
2、所開發(fā)的接口應(yīng)用軟件。二、工作原理由于SMT-100檢波器測試儀的8位數(shù)據(jù)是經(jīng)并行口送到打印機(jī)的,若欲將輸出到該并行口的數(shù)據(jù)再經(jīng)并行口送往電腦主機(jī),則需設(shè)計(jì)專用接口板(如掃描儀專用接口板)。因?yàn)殡娔X所配置的并行口均被系統(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è)實(shí)際應(yīng)用中,既可節(jié)省遠(yuǎn)距離并行電纜的開支,又提高了抗干擾能力,因此在傳送數(shù)據(jù)量不是很大時(shí),可以采用并行發(fā)送,串行接收的通訊方式。如圖1所示。圖1接口連接圖(并口到串口)雙向轉(zhuǎn)換器采用工業(yè)產(chǎn)品SXP
3、-320[2]。(略)其主要功能參數(shù)如表1。表1(略)其參數(shù)設(shè)置由側(cè)面的8位DIP開頭完成:圖2(略)工作時(shí),只需將其波特率、數(shù)據(jù)長度、停止位和奇偶校驗(yàn)等的設(shè)置與主機(jī)相匹配即可。三、接口程序設(shè)計(jì)利用BIOS提供的串行口例行程序傳輸,當(dāng)傳輸速度大于2400bps時(shí),有可能丟失字符[3]。為此,本系統(tǒng)采用了中斷控制方式,對串行口的接收和存儲實(shí)施控制,以防數(shù)據(jù)丟失。PC機(jī)中執(zhí)行串行通訊的主芯片8250是可編程的,有10個(gè)可訪問寄存器,其中5個(gè)根據(jù)需要,在程序開始時(shí),對它們初始化就可使用。其端口地址與狀態(tài)字的含義如表2。表2PC機(jī)內(nèi)的8259A芯片,有一個(gè)中斷屏敝寄存器(IMR),可以提供8個(gè)中
4、斷源,其中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í)用中的初始化設(shè)置如下:moval2ch;8259a初始化movdx,3fbhout21h,almoval,03hmovdx,3fbh;8350初始化outdx,almoval,80hmovdx,3fchoutdx,almoval,0bhmovdx,3f8houtdx,almoval,20movdx,3f9houtdx,almoval,01h
5、movdx,3f9houtdx,almoval,0sti;開中斷outdx,al利用線狀態(tài)寄存器(端口地址3FDH),可檢測接收的數(shù)據(jù)是否有錯(cuò)。若有錯(cuò),就發(fā)出報(bào)警聲,退出中斷服務(wù)程序,以便根據(jù)情況中止數(shù)據(jù)傳送。四、應(yīng)用程序設(shè)計(jì)采用上述通訊方式,可以采集到外部設(shè)備發(fā)送的全部信息,欲對其做進(jìn)一步處理和存儲,尚需根據(jù)用戶需要,開發(fā)相應(yīng)的應(yīng)用軟件。我們將油田檢波器測試儀與主機(jī)(386)按上述方式連通,并將那些經(jīng)串行口接收到的全部信息,經(jīng)過應(yīng)用軟件分析、處理,生成磁盤數(shù)據(jù)文件[4],為用戶項(xiàng)目的深入研究提供原始資料[5]。檢測一個(gè)元件的處理過程如下:(1)在主程序中為串行口存儲數(shù)據(jù),建立一個(gè)先進(jìn)先
6、出的字符緩沖區(qū)circle-buffer,動(dòng)態(tài)申請64K內(nèi)存,可接收相當(dāng)于2000個(gè)元件的全部信息。(2)在主程序中開辟一個(gè)能存放單個(gè)元件處理結(jié)果的小緩沖區(qū)(如30字節(jié))readbuffer。(3)BX基指針指向circlebuffer緩沖區(qū),順序掃描,每次處理一個(gè)元件所接收的信息量,利用堆棧技術(shù),將一個(gè)元件各參數(shù)間分隔符(如"=")地址壓入堆棧。然后逐一彈出,按輸出文本格式進(jìn)行處理,并將處理結(jié)果存入readbuffer。(4)將readbuffer的內(nèi)容經(jīng)磁盤文件管理功能調(diào)用,寫入數(shù)據(jù)文件。一次一個(gè)記錄,如此重復(fù)(3)和(4),直到circle-buffer的內(nèi)容為空。(5)工作過程中
7、,通過ESC功能鍵可隨時(shí)中止串行口通訊工作。五、結(jié)束語在調(diào)試過程中,經(jīng)對500個(gè)元件進(jìn)行測試、傳送、接收和處理,都取得了令人滿意的結(jié)果。本項(xiàng)目已交西安石油勘探儀器廠檢波器分廠使用,系統(tǒng)實(shí)時(shí)方便,可靠性高,實(shí)用性強(qiáng)。