• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      μC/OS-II基礎(chǔ)上實(shí)現(xiàn)的無(wú)紙傳真收發(fā)系統(tǒng)

      2011-06-25 02:45:20張聰敏劉軍劉福良游向東
      關(guān)鍵詞:傳真機(jī)報(bào)文串口

      張聰敏,劉軍,劉福良,游向東

      (北京郵電大學(xué)信息與通信工程學(xué)院,北京 100876)

      引 言

      隨著Internet的高速發(fā)展,通信工具日益更新,傳真憑借其具有憑證確認(rèn)、快速、方便等特點(diǎn),是企業(yè)不可或缺的通信工具。傳統(tǒng)硬件傳真機(jī)存在很多問(wèn)題,影響了企業(yè)使用傳真機(jī)的成本和效率。很多企業(yè)已經(jīng)放棄使用傳統(tǒng)傳真機(jī),或是尋找替代產(chǎn)品。無(wú)紙傳真系統(tǒng)[1]正是針對(duì)企業(yè)的這種需求應(yīng)運(yùn)而生的。其實(shí)質(zhì)是電子化收發(fā)傳真。無(wú)紙化傳真系統(tǒng)啟動(dòng)后,在無(wú)人參與條件下可自動(dòng)可靠地運(yùn)行,減少多余的環(huán)節(jié),縮短信息的傳遞時(shí)間,使傳真盡快得到處理。同時(shí),增強(qiáng)了傳真的保密性。電子化過(guò)程可以節(jié)省大量資源,包括人力、紙張、打印、通信費(fèi)用、維護(hù)費(fèi)用等,從而減少成本。目前無(wú)紙化傳真系統(tǒng)對(duì)企業(yè)的重要作用已經(jīng)逐步顯現(xiàn),使用也越來(lái)越廣泛[2]。

      1 傳真協(xié)議介紹

      T.30協(xié)議為PSTN網(wǎng)上的傳真?zhèn)鬏攨f(xié)議與規(guī)程,是標(biāo)準(zhǔn)傳真。它對(duì)3類(lèi)傳真機(jī)在普通電話網(wǎng)上的通信流程、所采用的信號(hào)格式、控制信令以及糾錯(cuò)方式都作了詳細(xì)的描述和規(guī)定。該協(xié)議規(guī)定了8種可能的操作方式,每種操作方式均可用5個(gè)獨(dú)立而又連貫的階段來(lái)描述:呼叫建立階段、報(bào)文傳輸前標(biāo)識(shí)和選擇所需性能的過(guò)程、報(bào)文傳輸階段、報(bào)文后處理階段和呼叫釋放階段。其中傳真報(bào)文[3]的傳輸將按照T4協(xié)議中所描述的調(diào)制方式進(jìn)行。

      T4是ITU-T制定的傳真協(xié)議。該協(xié)議用于3類(lèi)傳真終端文件傳輸?shù)臉?biāo)準(zhǔn)化協(xié)議。它定義了黑白文件和彩色文件在普通電話交換網(wǎng),國(guó)際租用電路以及ISDN進(jìn)行三類(lèi)傳真的各種特性,包括編碼、線掃描等定義[4]。

      2 μC/OS-II操作系統(tǒng)介紹

      μC/OS-II是一種公開(kāi)源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時(shí)內(nèi)核的實(shí)時(shí)操作系統(tǒng)。μC/OS-II大部分代碼是用C語(yǔ)言編寫(xiě)的。CPU硬件相關(guān)部分是用匯編語(yǔ)言編寫(xiě)的??偭考s200行的匯編語(yǔ)言部分被壓縮到最低限度,為的是便于移植到其他的CPU上。用戶(hù)只要有標(biāo)準(zhǔn)的ANSI的C交叉編譯器、匯編器、連接器等軟件工具,就可以將μC/OS-II嵌入到開(kāi)發(fā)的產(chǎn)品中。μC/OS-II具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。最小內(nèi)核可編譯至2 KB。μC/OS-II操作系統(tǒng)已經(jīng)移植到了大部分知名的CPU上。

      3 傳真數(shù)據(jù)處理的算法設(shè)計(jì)

      收到傳真數(shù)據(jù)后,往往需要對(duì)數(shù)據(jù)進(jìn)行解析,比如生成tiff文件、格式轉(zhuǎn)換、錯(cuò)誤統(tǒng)計(jì)等。由前文所述,T.4協(xié)議中規(guī)定了傳真數(shù)據(jù)采用前綴編碼,所以本文采用霍夫曼樹(shù)進(jìn)行數(shù)據(jù)解析[5]。

      霍夫曼算法一般用于數(shù)據(jù)壓縮,基本思想是根據(jù)數(shù)據(jù)的統(tǒng)計(jì)頻度,生成一種帶權(quán)路徑長(zhǎng)度最短的二叉樹(shù)。從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)所經(jīng)歷的路徑即代表該葉子節(jié)點(diǎn)的編碼。本文采用了這種思想對(duì)傳真數(shù)據(jù)進(jìn)行解析,比如N的編碼為0001,該編碼為前綴編碼,每個(gè)碼字之間不會(huì)出現(xiàn)混淆[6]?;舴蚵鏄?shù)如圖1所示。

      基于霍夫曼樹(shù)的思想,將T.4協(xié)議中對(duì)傳真掃描點(diǎn)的編碼構(gòu)建成一顆帶權(quán)二叉樹(shù),如圖2所示。

      圖1 霍夫曼二叉樹(shù)

      圖2 傳真數(shù)據(jù)構(gòu)建的部分二叉樹(shù)

      其中每一個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)于某一個(gè)編碼,首先設(shè)置一個(gè)游標(biāo),用于標(biāo)識(shí)當(dāng)前位置,其初始位置為根節(jié)點(diǎn),收到傳真數(shù)據(jù)后,根據(jù)數(shù)據(jù)中的bit位移動(dòng)游標(biāo),可能有以下3種情況:

      ①游標(biāo)到達(dá)某一個(gè)葉子節(jié)點(diǎn),但此葉子節(jié)點(diǎn)不是EOL,表明收到一個(gè)完整的編碼,但1行還沒(méi)結(jié)束,游標(biāo)返回到根節(jié)點(diǎn);

      ②游標(biāo)到達(dá)EOL葉子節(jié)點(diǎn),表明1行結(jié)束,游標(biāo)返回根節(jié)點(diǎn);

      ③游標(biāo)下一步?jīng)]有路徑可走,表明數(shù)據(jù)出錯(cuò),此時(shí)需要搜尋下一個(gè)EOL用于重新同步。

      4 無(wú)紙傳真收發(fā)系統(tǒng)設(shè)計(jì)

      4.1 基本模式

      按照T.30協(xié)議規(guī)定,文件傳真在公用電話交換網(wǎng)上的傳輸操作方法可能有8種組合,如表1所列。本文設(shè)計(jì)的系統(tǒng)采用的操作方法為4-T,即主叫站與被叫站均為自動(dòng)操作,主叫站作為傳真的發(fā)送方,被叫站作為傳真的接收方。

      表1 文件傳輸操作方法分類(lèi)

      4.2 硬件框架

      整個(gè)傳真系統(tǒng)的硬件框圖如圖3所示。左側(cè)虛線框內(nèi)模塊和右側(cè)的FAX模塊是從交換機(jī)的兩根電話線中分離出來(lái)的2個(gè)獨(dú)立傳真模塊。右側(cè)的FAX模塊是普通紙傳真機(jī),為測(cè)試左側(cè)虛框內(nèi)模塊的功能而配置的。左側(cè)虛線框內(nèi)4大模塊為無(wú)紙傳真模塊。

      圖3 傳真系統(tǒng)硬件框圖

      無(wú)紙傳真模塊中,左側(cè)的PC機(jī)為輔助設(shè)備,利用PC機(jī)上的集成開(kāi)發(fā)調(diào)試環(huán)境IAR和代碼編輯軟件source insight進(jìn)行源碼編輯與調(diào)試,將調(diào)試無(wú)誤的代碼通過(guò)JLINK下載到STM32芯片中。STM32芯片和Fax Modem都是通過(guò)USB線與PC機(jī)相連來(lái)供電。

      Fax Modem內(nèi)部包含CX68033芯片,其通過(guò)串口與STM32芯片相連,支持標(biāo)準(zhǔn)的AT命令集,使得二者可以交互信令和數(shù)據(jù),STM32芯片主要負(fù)責(zé)任務(wù)管理和文件管理,并且通過(guò)串口控制 Fax Modem。同樣為了便于測(cè)試,焊了一根線接出“USB轉(zhuǎn)串口模塊”來(lái)與電腦通信,進(jìn)而可以利用串口調(diào)試助手軟件來(lái)輔助測(cè)試。

      4.3 總流程設(shè)計(jì)

      兩臺(tái)傳真機(jī)相互通信的規(guī)約稱(chēng)為協(xié)議或傳真呼叫時(shí)間序列,分為A、B、C 、D、E五個(gè)階段,如圖 4所示 。

      圖4 傳真流程圖

      (1)階段A:呼叫建立階段

      這一階段與電話呼叫建立的過(guò)程相似,不同之處在于要發(fā)送包含標(biāo)識(shí)發(fā)送/接收終端的傳真單音。

      (2)階段B:報(bào)文前處理階段

      這個(gè)處理階段主要進(jìn)行傳真能力的協(xié)商與訓(xùn)練。完成傳真機(jī)功能的鑒別、選送合適的傳輸模式、核對(duì)相位、發(fā)送線路校驗(yàn)信號(hào)以及可以接收的信號(hào)等。

      過(guò)程描述:首先由被叫站發(fā)送DIS信號(hào),DIS信號(hào)中包含了被叫站傳真機(jī)具有的各種兼容性功能信息、傳輸數(shù)碼率、掃描線密度和最小行掃描時(shí)間等。當(dāng)主叫站收到DIS信號(hào)后,了解到被叫站傳真機(jī)的功能,再根據(jù)本站傳真機(jī)的功能和操作人員事先安排的指令,發(fā)出DCS信號(hào),DCS信號(hào)是數(shù)字接收指令,由發(fā)送方進(jìn)行發(fā)送,要求接收方是接收傳真。該指令還指定了接收傳真機(jī)的工作方式、傳輸數(shù)碼率、掃描線密度、稿件寬度以及最小行掃描時(shí)間等。被叫站接收到DCS信號(hào)后,按命令選擇合適的工作模式,這時(shí),主叫站發(fā)出線路校驗(yàn)信號(hào)TCF。TCF信號(hào)是一個(gè)持續(xù)時(shí)間為1.5 s的0序列,它用于校驗(yàn)信道在這個(gè)數(shù)碼率下可接受的程度。當(dāng)被叫站收到這個(gè)線路校驗(yàn)信號(hào)之后認(rèn)為合格,就發(fā)送CFR信號(hào),CFR信號(hào)標(biāo)志全部報(bào)文前處理過(guò)程已經(jīng)結(jié)束。當(dāng)主叫站收到CFR信號(hào),就可以發(fā)送稿件。

      (3)階段C:報(bào)文傳輸過(guò)程

      按照T.4規(guī)程傳輸傳真報(bào)文,并進(jìn)行報(bào)文傳輸控制,包括報(bào)文同步、誤碼檢測(cè)和糾錯(cuò)、線路監(jiān)測(cè)等。

      (4)階段D:報(bào)文后處理階段

      這個(gè)處理階段主要提供報(bào)文的證實(shí)、報(bào)文結(jié)束、多頁(yè)續(xù)發(fā)等控制操作。當(dāng)發(fā)送方發(fā)完稿件后,將出現(xiàn)若干不同的情況,如是否還要繼續(xù)向接收方發(fā)送稿件,如果需要發(fā)送,是繼續(xù)發(fā)送還是重新進(jìn)行報(bào)文前處理后再發(fā)送,是否暫時(shí)中斷進(jìn)行通話后再發(fā)送等。為了滿(mǎn)足上述要求,發(fā)送方共設(shè)置6種主要的傳真控制字段分別對(duì)應(yīng)6種指令。當(dāng)接收方收到這6種指令中的一種后,就會(huì)發(fā)出響應(yīng)信號(hào),這些指令和響應(yīng)只有傳真控制字段,而無(wú)傳真信息字段。

      (5)階段E:呼叫釋放階段

      呼叫釋放發(fā)生在某一特定的條件下,當(dāng)最后一頁(yè)稿件發(fā)送完畢后,進(jìn)行最后一個(gè)信息處理,發(fā)送EOP信號(hào),在EOP信號(hào)之后,過(guò)程轉(zhuǎn)入階段E,呼叫釋放,切斷接續(xù),電路由傳真狀態(tài)返回到電話狀態(tài)。

      圖5是單頁(yè)傳真正常傳輸?shù)囊粋€(gè)實(shí)例,便于傳真流程的理解。

      4.4 功能模塊設(shè)計(jì)

      圖5 單頁(yè)傳真的一個(gè)實(shí)例

      圖6 軟件層次結(jié)構(gòu)圖

      本設(shè)計(jì)自底向上包括如下3個(gè)功能模塊,如圖 6所示。底層串口模塊、中層數(shù)據(jù)緩沖區(qū)模塊和上層傳真模塊。各個(gè)模塊由 μC/OS-II負(fù)責(zé)管理,其中底層串口模塊包含了所有基于串口的基本操作,包括讀串口和寫(xiě)串口等;中層數(shù)據(jù)緩沖區(qū)模塊做了大量的細(xì)節(jié)性數(shù)據(jù)處理工作;上層傳真模塊封裝了發(fā)送傳真和接收傳真的基本功能。

      4.4.1 底層串口模塊

      底層串口模塊的代表性函數(shù)包括如下3個(gè)。

      ①void RxInterrupt_Handler();

      功能說(shuō)明:fax modem每次接收到數(shù)據(jù)后都會(huì)發(fā)生中斷,跳入此函數(shù)。通過(guò)mdm_append_data函數(shù)將串口收到的新數(shù)據(jù)添加到接收緩沖區(qū)。

      ②void USART1_SendByte(INT16U byte);

      功能說(shuō)明:直接向串口中發(fā)送一個(gè)字節(jié),并等待完成。

      ③void USART1_SendData(INT8U*data,INT16S len);

      功能說(shuō)明:直接向串口寫(xiě)數(shù)據(jù)并等待完成,數(shù)據(jù)長(zhǎng)度不限。它被fax_send_cmd函數(shù)和fax_send_frame函數(shù)多次調(diào)用。

      4.4.2 中層數(shù)據(jù)緩沖區(qū)模塊

      本模塊采用隊(duì)列來(lái)管理數(shù)據(jù),如圖7所示。底層串口模塊收到數(shù)據(jù)后,將數(shù)據(jù)存入隊(duì)尾緩存,上層傳真模塊從隊(duì)頭取出數(shù)據(jù)進(jìn)行處理,這種方式使得程序不必關(guān)心串口接收數(shù)據(jù)的方式,一定程度上減小了程序的耦合性。

      圖7 緩沖區(qū)隊(duì)列

      隊(duì)列的數(shù)據(jù)結(jié)構(gòu)定義如下:

      本模塊提供了以下接口函數(shù),供上層傳真機(jī)模塊調(diào)用。

      ①void mdm_init_buffer();

      功能說(shuō)明:本函數(shù)用于初始化緩沖區(qū),一般在程序啟動(dòng)時(shí)調(diào)用。

      ②char*mdm_get_line(int timeout);

      功能說(shuō)明:在timeout規(guī)定的時(shí)間里面,等待并讀取一行數(shù)據(jù)(以/r/n結(jié)尾),如果超時(shí)則返回NULL。

      ③int mdm_get_byte(char*byte,int timeout);

      功能說(shuō)明:在timeout規(guī)定的時(shí)間里,等待并讀取一個(gè)字節(jié)的數(shù)據(jù),如果有數(shù)據(jù)則返回1,如果超時(shí)則返回0。

      ④int mdm_get_byte_count();

      功能說(shuō)明:獲取當(dāng)前緩沖區(qū)內(nèi)的數(shù)據(jù)量,單位為字節(jié)。

      ⑤void mdm_clear_buffer();

      功能說(shuō)明:清空緩沖區(qū)的數(shù)據(jù)。

      ⑥void mdm_append_data(char data);

      功能說(shuō)明:向緩沖區(qū)隊(duì)尾添加一個(gè)數(shù)據(jù),該函數(shù)在串口接收中斷中被調(diào)用。

      4.4.3 上層傳真模塊

      上層傳真模塊分為發(fā)送傳真接口和接收傳真接口兩大部分,其中發(fā)送部分為1個(gè)集成的函數(shù),而接收部分為3個(gè)按時(shí)序相接的功能分支。

      (1)發(fā)送傳真接口

      原型說(shuō)明:int fax_send(char*num,char*page[]);

      功能說(shuō)明:發(fā)送傳真,對(duì)端的傳真號(hào)為num,傳真文件通過(guò)page變量傳入,結(jié)尾以NULL指針或空字符串結(jié)尾。

      (2)接收傳真接口

      ①int fax_ringing();

      功能說(shuō)明:循環(huán)檢測(cè)并接收響鈴,只有接通了,才會(huì)跳出循環(huán)。該函數(shù)可以在一個(gè) task里面調(diào)用,進(jìn)行傳真監(jiān)聽(tīng),當(dāng)收到”RING”時(shí),退出函數(shù),等待應(yīng)答。

      ②int fax_answer_and_connect();

      功能說(shuō)明:傳真應(yīng)答與連接。該函數(shù)一般在收到”RING”時(shí)調(diào)用。當(dāng)連接成功后,即可接收傳真。

      ③int fax_receive(int*pagenum,char*dir);

      功能說(shuō)明:接收傳真,收到的傳真頁(yè)數(shù)為pagenum,保存地址為dir。只有當(dāng)連接成功后才能調(diào)用該函數(shù)。

      4.5 傳真接口調(diào)用示例

      結(jié) 語(yǔ)

      本文對(duì)無(wú)紙傳真進(jìn)行了研究,在該研究的基礎(chǔ)上開(kāi)發(fā)出一套實(shí)用的系統(tǒng),其擴(kuò)展性強(qiáng),具有很好的移植性。一般的傳真機(jī)僅限于紙質(zhì)文件的傳輸,而本系統(tǒng)則輔助實(shí)現(xiàn)了紙質(zhì)文件與電子版文件的轉(zhuǎn)化傳輸。本系統(tǒng)存在的意義在于,用戶(hù)可以將此傳真模塊作為一個(gè)獨(dú)立功能單元集成到其他產(chǎn)品中,以較低的成本來(lái)增加產(chǎn)品的功能。

      [1]李貞輝.無(wú)紙傳真系統(tǒng)的現(xiàn)狀與改進(jìn)[J].電腦知識(shí)與技術(shù),2006(8).

      [2]呂剛.無(wú)紙化傳真系統(tǒng)的若干問(wèn)題總結(jié)與探討[J].金華職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008(4).

      [3]ITU Group.ITU-T Recommendation T.30—2003 Procedures for document facsimile transmission in the general switched telephone network[S].

      [4]ITU Group.ITU-T Recommendation T.4—1996 Standardization of Group 3 facsimile terminals for document transmission[S].

      [5]宋愷,嚴(yán)麗平.基于Internet的網(wǎng)絡(luò)傳真技術(shù)[J].科技廣場(chǎng),2004(8):30-31.

      [6]劉郁蓉,尤肖虎.傳真業(yè)務(wù)的設(shè)計(jì)與實(shí)現(xiàn)[J].電氣電子教學(xué)學(xué)報(bào),2007(6).

      猜你喜歡
      傳真機(jī)報(bào)文串口
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      傳真機(jī)導(dǎo)致東京每天確診不超300人?
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      ATS與列車(chē)通信報(bào)文分析
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
      基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
      沒(méi)有傳真機(jī)?咱就免費(fèi)在線發(fā)
      安西县| 海口市| 崇明县| 温泉县| 洛川县| 枣强县| 财经| 乌审旗| 启东市| 旌德县| 衡南县| 舟山市| 密山市| 云阳县| 来安县| 内黄县| 周至县| 寿光市| 襄城县| 梁平县| 富宁县| 上饶市| 康保县| 青冈县| 永福县| 揭西县| 镇沅| 剑阁县| 奉节县| 凤庆县| 新蔡县| 黔西| 武冈市| 正安县| 盐源县| 郑州市| 麟游县| 郯城县| 寿宁县| 紫云| 天等县|