<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2011-08-19 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/155877.htm

f.jpg


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

g.jpg


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

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


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>