freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一個linux下基于電話線路的數(shù)據(jù)通信程序的設(shè)計與實現(xiàn)—免費計算機畢業(yè)設(shè)計論文(參考版)

2024-12-03 11:23本頁面
  

【正文】 ” “哦 ?”方新。 方新收起電腦,喃喃道:“入藏后,就不能無線上網(wǎng)了,只是電腦里的很多資料很有用處。我一直 想到上海來探望你,看看是不是真的?!彪娔X上在氣象局發(fā)來的橘紅色區(qū)域中又用更深的大紅色畫出一塊,從珠峰以北畫到錫金和尼泊爾境內(nèi)?!? 瑪瑞 滿腹狐疑,悻悻地去了,心里喃喃念叨著:“瘋了,教授一定是瘋了。 或許聽錯了。 “ 幾千年來,全世界所公認(rèn)的,體形最龐大,性格最兇猛的,叫獒。他沒有讓他的父母失望,如今已是擁有千萬資產(chǎn)的公司老總,也是著名大學(xué)的教授,可謂名利俱盛,讓他起家的資本,不是別的,是犬。 卓姆強巴,藏族,四十二歲,天獅名犬馴養(yǎng)基地公司總裁,也是復(fù)旦大學(xué)生物系客座教授,主講世界名犬。 除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。 ( 4)學(xué)??稍试S學(xué)位論文被查閱或借閱。 ( 2)學(xué)校 可以采用影印、縮印或其他復(fù)制方式保存學(xué)位論文。 本文是在劉云本老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到了極大的作用。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機構(gòu)的學(xué)位或證書而使用過的材料。 [7] David HOWTO[EB/OL].,2020/2020。 [5] Greg Serial HOWTO[EB/OL].,1997/2020。 [3] 求是科技 ,李現(xiàn)勇 .Visual C++串口通信技術(shù)與工程實踐 [M].北京:人民郵電出版社 ,2020。 參考文獻 [1] 史迪文斯 .UNIX環(huán)境高 級編程 [M].北京:機械工業(yè)出版社 ,2020。我花了一個星期的時間找原因,最后才發(fā)現(xiàn)是自己沒有添加串口進虛擬機,而添加串口的過程只需要半分鐘。說明有目的的、正確的搜索是非常重要的。我覺得最大的益處是我學(xué)會了搜索資料的方法,體會到了網(wǎng)絡(luò)上資料的豐富。 通過完成本設(shè)計,增加了硬件編程的經(jīng)驗,對計算機接口有了更深的認(rèn)識。本設(shè)計也可作為工廠或公司的數(shù)據(jù)通信手段,但只適合數(shù)據(jù)通信量低的情況。這樣,不論兩臺電腦距離多遠,只要可以接到電話網(wǎng),并配有 56k MODEM,就可以互傳文件。上面的測試 ,已經(jīng)證明在雙方連接成功的情況下 ,可以進行字符串的傳輸 ,所以基于單個字符傳輸?shù)奈募魉蛥f(xié)議也可以正常工作。 Linux 端發(fā)起撥號連接 , Windows 端應(yīng)答,仍然成功建立了連接。略等幾秒,屏幕上顯示 CONNECT 115200,表示連接成功,這時候MODEM 會安靜下來。 我先在 WINDOWS 端發(fā)起撥號連接,半分鐘后 Linux 端振鈴響起 (我用了 IC卡,所以撥號過程有點漫長 )。將兩臺電腦上的 MODEM 分別與兩根電話線接連,硬件環(huán)境就搭建完畢。發(fā)送端先啟用的話,數(shù)據(jù)馬上被送到接收端串 第 22 頁 共 24頁 口,但接收端串口還沒被啟動,接收端 open()串口之后,之前被發(fā)來的數(shù)據(jù)就會丟失了。比較接收端與發(fā)送端的用于測試的文件之后發(fā)現(xiàn),兩個文件是相同的,證明串口 通信部分程序工作正常。這時環(huán)境搭建完畢,我先運行接收程序,再運行發(fā)送程序,這時候顯示數(shù)據(jù)通信開始。一臺電腦設(shè)為接收端 (main 函數(shù)中調(diào)用 receive_file() ),另一臺電腦設(shè)為發(fā)送端 (main 函數(shù)中調(diào)用 send_file() ),編譯連接。外置 MODEM 是即插即用 ,直接接在 Linux 機上就可以用 ,內(nèi)置軟貓只能用在 WINDOWS 機上。 Linux操作系統(tǒng)對內(nèi)置 MODEM的支持非常差 ,尤其內(nèi)置軟貓 ,大部分內(nèi)置軟貓在 Linux 上都無法識別。options)。 tcflush(fd, TCIFLUSH)。 [VMIN] = 0。 tcgetattr(fd, amp。 } 當(dāng)撥號結(jié)束進入數(shù)據(jù)通迅階段之后 ,還需要把串口設(shè)置恢復(fù) : void recover_port(void) { struct termios options。 tcsetattr(fd, TCSANOW, amp。 [VTIME] = 0。options)。 ftl(fd, F_SETFL, 0)。 } } return 1。 if( read_from_MODEM(OK) != 1 ) { /*二次初始化失敗 ,可能是 MODEM 本身出了問題 */ printf(Init MODEM failed, check your MODEM)。 //將新的設(shè)置寫入串口 } 串口讀寫的實現(xiàn) 對串口的讀寫是通過 read()和 write()來實現(xiàn)的,跟對文件的操作一樣(串口是個特殊的文件), 寫串口函數(shù)流程圖如圖 8如示: 圖 8 write函數(shù)流程 讀串口函數(shù)流程如圖 9 如示: 第 19 頁 共 24頁 圖 9 read函數(shù)流程 MODEM 初始化的實現(xiàn) int init_MODEM(void) { /*如果第一次初始化失敗則進行第二次 ,如果第二次也失敗則程序退出 */ write_to_MODEM(ATE0V0\r, 7)。 //刷新數(shù)據(jù)線 tcsetattr(fd, TCSANOW, amp。 [VTIME] = 200。= ~OPOST。= ~(ICANON | ECHO | ECHOE | ISIG)。= ~(INPCK | IGNPAR |IXON |IXOFF |IXANY)。= ~CSTOPB。= ~PARENB。 //屏蔽數(shù)據(jù)位大小 |= CS8。 第 18 頁 共 24頁 amp。options, B115200)。options, B115200)。options)。 ftl(fd, F_SETFL, 0)。在新數(shù)據(jù)高 4位中: bit4|bit5 = 00,表示是新的數(shù)據(jù); bit4|bit5 = 01,表示是重新發(fā)送的數(shù)據(jù); bit4|bit5 = 10,表示文件名結(jié)束; bit4|bit5 = 11,表示文件結(jié)束。發(fā)送方將從接收方送來的字符與原發(fā)送字符做比較,如果相等,則說明傳輸過程中沒有出錯,那么就接著發(fā)送下一個字符,直到文件結(jié)束;如果不相等,則說明傳輸過程中出現(xiàn)了錯誤,那么重新把這個字符發(fā)一遍,直到發(fā)送方發(fā)送的字符和接收到的字符相等為止。總體思路是:發(fā)送方發(fā)送一個字符,接收方收到以后判斷此字符是新的字符還是對前一個接收到的字符的修改,如果是對前一個字符的修改,說明前一個字符在傳輸?shù)倪^程中出錯,則用這個修改字符覆蓋掉前一個字符;如果是新字符,則把 它賦值給一個變量,等待往接收文件中寫入,并把前一個字符存入接收文件。要實現(xiàn)傳送文件的功能,還需要打開文件,將文件中的字符一個一個的讀取出來等等文件操作的功能,這可以由 gcc中提供的文件操作庫函數(shù)來完成,而且這些存函數(shù)的功能非常強大。現(xiàn)在就可以開始傳送數(shù)據(jù)給對方了。 (設(shè)置 S0寄存器為 n0,就可以在 n 聲鈴響后自動應(yīng)答;如果 S0 寄存器為0,則需要手動應(yīng)答。 D 是撥號命令, T 修飾 D 命令,表示撥打的是音頻電話,( P 表 示脈沖電話,就是已經(jīng)被淘汰的帶撥號盤的電話)后面加要撥打的號碼即可。 這時候就可以讓 MODEM 撥號了, write(fd, “ ATDT12345678\r” , 13)。 n = 0 代表以數(shù)字形顯示結(jié)果碼。該命令選擇 MODEM 返回給 DTE的結(jié)果碼是數(shù)字形還是字符形式。 n = 0 代表關(guān)閉回顯。該命令控制 MODEM 在命令狀態(tài)打開或關(guān)閉 AT 命令回顯,很顯然命令回顯不利用對 MODEM 返回數(shù)據(jù)的判斷,所以關(guān)閉它。 AT 命令的種類有很多種,有用戶接口命令、撥號呼叫命令、應(yīng)答命令等等13 種之多,而有很多撥號連接軟件對 MODEM 的初始化也只限于用戶接口方面,因為各種 MODEM 都自帶有廠家設(shè)置的出廠設(shè)置,這對撥號上網(wǎng)等普通應(yīng)用已經(jīng)足夠了。但這里使用的是 MODEM 最常用,最簡單的功能,而且是用在公用電話網(wǎng)上,所以省去了很多麻煩,直接使用出廠設(shè)置都可以。這里只使用了“ ATE0V0”對 MODEM 初始化。所以雖然上面述說了很多關(guān)于DTE 與 DCD 數(shù)據(jù)通信時握手的方法,但在前面的串口設(shè)置中已經(jīng)將其統(tǒng)統(tǒng)設(shè)置為總是有效,所以 在與 MODEM 通信時可以忽略它們。當(dāng)對方的 DCE 收到載波 信號后,向?qū)Ψ降?DTE 發(fā)出 DCD信號 (數(shù)據(jù)載波檢出 ),通知其 DTE 準(zhǔn)備接收,同時,將載波信號解調(diào)為數(shù)據(jù)信號,從 RxD 線上送給 DTE, DTE 通過串行接收移位寄存器對接收到的位流進行移位,當(dāng)收到 1 個字符的全部位流后,把該字符的數(shù)據(jù)位送到數(shù)據(jù)輸入寄存器, CPU可以從數(shù)據(jù)輸入寄存器讀取字符。 當(dāng) DTE 獲得 CTS 信號后,通過 TxD 線向 DCE 發(fā)出串行信號, DCE(MODEM)將這些數(shù)字信號調(diào)制成模擬信號 (載波信號 ),傳向?qū)Ψ健?(RTS/CTS 可只用于半雙工系統(tǒng)中做發(fā)送方式和接收方式的切換。此時,若 DCE( MODEM)允許發(fā)送,則向 DTE回 答 DTE回答 CTS(允許發(fā)送 )信號。 首先,通過電話機撥號呼叫對方,電話交換臺向?qū)Ψ桨l(fā)出撥號呼叫信號,當(dāng)對方 DCE 收到該信號后,使 RI(振鈴信號 )有效,通知 DTE,已被呼叫。 DTE 與 DCE 的握手 DTE(Data Terminal Equipment)與 DCE(Data Communications Equipment)通過九針 RS232C連接,其針腳含義如表 3所示。 MODEM 狀態(tài)之間的轉(zhuǎn)換如圖 5所示: 圖 5 MODEM工作狀態(tài)轉(zhuǎn)換 設(shè)計的目的就是要讓 MODEM 由開機時的命令狀態(tài)轉(zhuǎn)入在線狀態(tài),此時通過串口發(fā)給 MODEM 的數(shù)據(jù)不經(jīng) MODEM 處理的被傳出去,從遠處接收到的數(shù)據(jù)也不經(jīng)MODEM 處理的被傳到串口。 MODEM 接收并解釋 AT 命令, DET 只有在命令狀態(tài)才能對 MODEM 進行控制。這兩種狀態(tài)之間可以相互轉(zhuǎn)換。在在線狀態(tài)下, MODEM 與遠端系統(tǒng)通信。當(dāng) MODEM 啟動后,首先處于命令狀態(tài),連接后進入在線狀態(tài)。 第 13 頁 共 24頁 MODEM 的控制 MODEM 的兩種工作狀態(tài) MODEM 的狀態(tài)可以分為命令狀態(tài)和在線狀態(tài)。所以 MIN 和 TIME 的設(shè)置很重要。不能一次性讀寫超過串口緩存本身大小的字符數(shù),不過 4K已經(jīng)足夠使用了。 從串口讀取數(shù)據(jù): n=read(fd, rdata, 1); rdata 是預(yù)先先定義好的字符數(shù)組,要讓 rdata 足夠大,才不會發(fā)生數(shù)據(jù)溢出錯誤。 讀寫串口 寫數(shù)據(jù)到串口是很簡單的,只需要使用 write()系統(tǒng)呼叫去傳送數(shù)據(jù): n = write(fd, “ ATZ/R” , 4)。 最后,將設(shè)置的內(nèi)容存入串口 tcsetattr (fd,TCSANOW,amp。 ftl函數(shù)是在 open函數(shù)后面加入的。這時對 MIN, TIME 的設(shè)置才可以起作用。 TIME 的值的大小可以根據(jù)不同情況而定,但是不能太長,超過 30s 程序就會報錯,這里選擇的是 200(20s)。實際讀取到的字符數(shù), 或者要讀到的字符數(shù),會作為返回值返回。所以讀取函數(shù)最少要讀取一個字節(jié)才能正常返回。 MIN 0, TIME 0: 讀取函數(shù)會在收到了 MIN 字節(jié)的數(shù)據(jù)后,或者超 TIME時間沒有收到數(shù)據(jù)后返回。 MIN 0, TIME = 0: 函數(shù)在讀到了 MIN值的字符數(shù)后返回。 在非標(biāo)準(zhǔn)輸入模式中,輸入的數(shù)據(jù)并不組合成行,也不會進行 erase、 kill、delete 等輸入處理。其中常用到的只有其中的 VMIN 和 VTIME 兩個元素。 [VTIME] = 200。其余的項大多出于歷史原因要追溯到打印機和終端還不能和串行數(shù)據(jù)流保持一致的時候,現(xiàn)在已經(jīng)沒有使用價值了。非標(biāo)準(zhǔn)輸出模式更加靈活,適合做為本次設(shè)計的輸出模式,而對這種模式的選擇是非常簡單的,只要屏蔽 c_cflag 的 OPOST 項即可,屏蔽 OPOST項, c_oflag 其余的項就都被忽略。 ISIG 是讓某些信號起作用,這里不需要這些信號,所以不也不考慮選擇 ISIG。 非標(biāo)準(zhǔn)輸入輸出更適合此次項目, ICANON 代表標(biāo)準(zhǔn)模式,所以屏蔽它。 ◆ 等待來自多信號源的輸入。此模式下,可以每次讀取固定數(shù) 量的字符,并允許使用字符接收時間定時器。這是終端設(shè)備的標(biāo)準(zhǔn)處理模式,這種方式下, read 會傳回一整行完整的輸入,一行的結(jié)束默認(rèn)是以 NL、文件結(jié)束符,或是一個行結(jié)束字符。 c_lflag 控制輸入字符如何被串行驅(qū)動使用,它和 c_oflag 的設(shè)置應(yīng)該說是整個串口設(shè)置當(dāng)中最重要的,它直接影響到串口的工作方式。 輸入模式成員 c_iflag 控制任何在端口接收字符的輸入處理, INPCK 和IGNPAR 分別代表校驗有效和忽略校驗錯誤,但是并沒有使用校驗位,所以屏蔽
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1