新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > μC/OS-II基礎上實現的無紙傳真收發(fā)系統

        μC/OS-II基礎上實現的無紙傳真收發(fā)系統

        作者: 時間:2011-08-19 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/155877.htm

        f.jpg


        4.4.1 底層串口模塊
        底層串口模塊的代表性函數包括如下3個。
        ①void RxInterrupt_Handler();
        功能說明:fax modem每次接收到數據后都會發(fā)生中斷,跳入此函數。通過mdm_append_data函數將串口收到的新數據添加到接收緩沖區(qū)。
        ②void USART1_SendByre(INT16U byte);
        功能說明:直接向串口中發(fā)送一個字節(jié),并等待完成。
        ③void USART1 SendData(INT8U*data,INT16S len);
        功能說明:直接向串口寫數據并等待完成,數據長度不限。它被fax_send_cmd函數和fax_send_frame函數多次調用。
        4.4.2 中層數據緩沖區(qū)模塊
        本模塊采用隊列來管理數據,如圖7所示。底層串口模塊收到數據后,將數據存入隊尾緩存,上層傳真模塊從隊頭取出數據進行處理,這種方式使得程序不必關心串口接收數據的方式,一定程度上減小了程序的耦合性。

        g.jpg


        隊列的數據結構定義如下:
        h.jpg
        i.jpg
        本模塊提供了以下接口函數,供上層傳真機模塊調用。
        ①void mdm_init_buffer();
        功能說明:本函數用于初始化緩沖區(qū),一般在程序啟動時調用。
        ②char*mdm_get_line(int timeout);
        功能說明:在timeout規(guī)定的時間里面,等待并讀取一行數據(以/r/n結尾),如果超時則返回NULL。
        ③int mdm_get_byte(char*byte,int timeout);
        功能說明:在timeout規(guī)定的時間里,等待并讀取一個字節(jié)的數據,如果有數據則返回1,如果超時則返回0。
        ④int mdm_get_byte_count();
        功能說明:獲取當前緩沖區(qū)內的數據量,單位為字節(jié)。
        ⑤void mdm_clear_buffer();
        功能說明:清空緩沖區(qū)的數據。
        ⑥void mdm_append_data(char data);
        功能說明:向緩沖區(qū)隊尾添加一個數據,該函數在串口接收中斷中被調用。
        4.4.3 上層傳真模塊
        上層傳真模塊分為發(fā)送傳真接口和接收傳真接口兩大部分,其中發(fā)送部分為1個集成的函數,而接收部分為3個按時序相接的功能分支。
        (1)發(fā)送傳真接口
        原型說明:im fax_send(char*num,char*page[]);
        功能說明:發(fā)送傳真,對端的傳真號為num,傳真文件通過page變量傳入,結尾以NULL指針或空字符串結尾。
        (2)接收傳真接口
        ①int faX_ringing();
        功能說明:循環(huán)檢測并接收響鈴,只有接通了,才會跳出循環(huán)。該函數可以在一個task里面調用,進行傳真監(jiān)聽,當收到“RING”時,退出函數,等待應答。
        ②int fax_answer_and_connect();
        功能說明:傳真應答與連接。該函數一般在收到“RING”時調用。當連接成功后,即可接收傳真。
        ③int fax_receive(int*pagenum,char*dir);
        功能說明:接收傳真,收到的傳真頁數為pagenum,保存地址為dir。只有當連接成功后才能調用該函數。
        4.5 傳真接口調用示例
        j.jpg

        結語
        本文對無紙傳真進行了研究,在該研究的上開發(fā)出一套實用的,其擴展性強,具有很好的移植性。一般的傳真機僅限于紙質文件的傳輸,而本則輔助了紙質文件與電子版文件的轉化傳輸。本存在的意義在于,用戶可以將此傳真模塊作為一個獨立功能單元集成到其他產品中,以較低的成本來增加產品的功能。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 通州市| 衡东县| 修水县| 克什克腾旗| 元朗区| 台安县| 右玉县| 金山区| 吉林省| 滕州市| 和龙市| 翁牛特旗| 温泉县| 图片| 惠州市| 稻城县| 治县。| 饶河县| 忻城县| 绥滨县| 蓬溪县| 寿宁县| 竹山县| 静宁县| 天台县| 揭阳市| 梁河县| 古浪县| 鲜城| 隆尧县| 乌拉特后旗| 共和县| 米泉市| 东光县| 固阳县| 博湖县| 钦州市| 诸城市| 徐水县| 潮州市| 石台县|