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

正文內(nèi)容

一個(gè)linux下基于電話線路的數(shù)據(jù)通信程序的設(shè)計(jì)與實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文(已改無(wú)錯(cuò)字)

2022-09-03 06:55:56 本頁(yè)面
  

【正文】 間的轉(zhuǎn)換如圖5所示:圖5 MODEM工作狀態(tài)轉(zhuǎn)換 設(shè)計(jì)的目的就是要讓MODEM由開(kāi)機(jī)時(shí)的命令狀態(tài)轉(zhuǎn)入在線狀態(tài),此時(shí)通過(guò)串口發(fā)給MODEM的數(shù)據(jù)不經(jīng)MODEM處理的被傳出去,從遠(yuǎn)處接收到的數(shù)據(jù)也不經(jīng)MODEM處理的被傳到串口。一旦MODEM進(jìn)入在線狀態(tài),便可以忽略MODEM的存在,就好象兩臺(tái)計(jì)算機(jī)之間通過(guò)串口連接進(jìn)行數(shù)據(jù)通迅一樣。 DTE與DCE的握手DTE(Data Terminal Equipment)與DCE(Data Communications Equipment)通過(guò)九針RS232C連接,其針腳含義如表3所示。表3 RS232 SignalsRS232 SignalsPin描述Pin描述1DCD Data Carrier Detect6DSR Data Set Ready2RXD Received Data7RTS Request To Send3TXD Transmitted Data8CTS Clear To Send4DTR Data Terminal Ready9RI Ring Detect5GND – Logic Ground DSR、DTR:數(shù)據(jù)機(jī)(DCE)準(zhǔn)備好、數(shù)據(jù)終端(DTE)準(zhǔn)備好,只表示設(shè)備本身可用。首先,通過(guò)電話機(jī)撥號(hào)呼叫對(duì)方,電話交換臺(tái)向?qū)Ψ桨l(fā)出撥號(hào)呼叫信號(hào),當(dāng)對(duì)方DCE收到該信號(hào)后,使RI(振鈴信號(hào))有效,通知DTE,已被呼叫。當(dāng)對(duì)方“摘機(jī)”后,兩方建立了通信鏈路若計(jì)算機(jī)要發(fā)送數(shù)據(jù)至對(duì)方,首先通過(guò)接口電路(DTE)發(fā)出RTS(請(qǐng)求發(fā)送)信號(hào)。此時(shí),若DCE( MODEM)允許發(fā)送,則向DTE回答DTE回答CTS(允許發(fā)送)信號(hào)。一般可直接將RTS/CTS接高電平,即只要通信鏈路已經(jīng)建立,就可傳送信號(hào)。(RTS/CTS可只用于半雙工系統(tǒng)中做發(fā)送方式和接收方式的切換。)大多數(shù)情況下都不需要用RTS/CTS對(duì)通信進(jìn)行控制,所以認(rèn)為RTS/CTS總是有效的。當(dāng)DTE獲得CTS信號(hào)后,通過(guò)TxD線向DCE發(fā)出串行信號(hào),DCE(MODEM)將這些數(shù)字信號(hào)調(diào)制成模擬信號(hào)(載波信號(hào)),傳向?qū)Ψ健S?jì)算機(jī)向DTE“數(shù)據(jù)輸出寄存器”傳送新的數(shù)據(jù)前,應(yīng)檢查MODEM的狀態(tài)和數(shù)據(jù)輸出寄存器為空。當(dāng)對(duì)方的DCE收到載波信號(hào)后,向?qū)Ψ降腄TE發(fā)出DCD信號(hào)(數(shù)據(jù)載波檢出),通知其DTE準(zhǔn)備接收,同時(shí),將載波信號(hào)解調(diào)為數(shù)據(jù)信號(hào),從RxD線上送給DTE,DTE通過(guò)串行接收移位寄存器對(duì)接收到的位流進(jìn)行移位,當(dāng)收到1個(gè)字符的全部位流后,把該字符的數(shù)據(jù)位送到數(shù)據(jù)輸入寄存器,CPU可以從數(shù)據(jù)輸入寄存器讀取字符。在串口設(shè)置部分,已經(jīng)設(shè)置DCD信號(hào)不影響串口工作,即使沒(méi)有DCD信號(hào)串口依然不會(huì)睡眠,可以始終保持準(zhǔn)備接收狀態(tài)。所以雖然上面述說(shuō)了很多關(guān)于DTE與DCD數(shù)據(jù)通信時(shí)握手的方法,但在前面的串口設(shè)置中已經(jīng)將其統(tǒng)統(tǒng)設(shè)置為總是有效,所以在與MODEM通信時(shí)可以忽略它們。 MODEM撥號(hào)連接前面對(duì)串口的設(shè)置大大簡(jiǎn)化了MODEM部分所需要做的工作,不過(guò)在讓MODEM撥號(hào)之前先要對(duì)MODEM進(jìn)行初始化。這里只使用了“ATE0V0”對(duì)MODEM初始化。MODEM的功能已經(jīng)很完善,除了二進(jìn)制數(shù)據(jù)傳輸以外,現(xiàn)在大部分MODEM都可以收發(fā)傳真,語(yǔ)音傳輸,加之MODEM對(duì)特殊環(huán)境的處理(如專線撥號(hào)),使MODEM的設(shè)置也變得非常繁雜。但這里使用的是MODEM最常用,最簡(jiǎn)單的功能,而且是用在公用電話網(wǎng)上,所以省去了很多麻煩,直接使用出廠設(shè)置都可以。這里對(duì)MODEM的初始化只是調(diào)整一下MODEM命令回顯數(shù)據(jù)的格式。AT命令的種類有很多種,有用戶接口命令、撥號(hào)呼叫命令、應(yīng)答命令等等13種之多,而有很多撥號(hào)連接軟件對(duì)MODEM的初始化也只限于用戶接口方面,因?yàn)楦鞣NMODEM都自帶有廠家設(shè)置的出廠設(shè)置,這對(duì)撥號(hào)上網(wǎng)等普通應(yīng)用已經(jīng)足夠了?!鬍n缺省值:1功能描述:命令回顯。該命令控制MODEM在命令狀態(tài)打開(kāi)或關(guān)閉AT命令回顯,很顯然命令回顯不利用對(duì)MODEM返回?cái)?shù)據(jù)的判斷,所以關(guān)閉它。(這個(gè)功能只控制命令本身的回顯,而MODEM狀態(tài)的返回不會(huì)因此受到影響)。n = 0代表關(guān)閉回顯?!鬡n缺省值:1功能描述:結(jié)果碼格式。該命令選擇MODEM返回給DTE的結(jié)果碼是數(shù)字形還是字符形式。例如ATM0命令被正確執(zhí)行后,將返回0(數(shù)字型)或OK(字符型)。n = 0代表以數(shù)字形顯示結(jié)果碼。(顯然數(shù)字型更利于判斷MODEM返回的結(jié)果)設(shè)計(jì)中將MODEM初始化為無(wú)命令回顯,以數(shù)字型返回。這時(shí)候就可以讓MODEM撥號(hào)了,write(fd, “ATDT12345678\r”, 13)。跟普通的往串口寫數(shù)據(jù)是一樣的。D是撥號(hào)命令,T修飾D命令,表示撥打的是音頻電話,(P表示脈沖電話,就是已經(jīng)被淘汰的帶撥號(hào)盤的電話)后面加要撥打的號(hào)碼即可。對(duì)方聽(tīng)到鈴響,只要往串口寫入應(yīng)答命令(ATA)即可使雙方建立起連接。(設(shè)置S0寄存器為n0,就可以在n聲鈴響后自動(dòng)應(yīng)答;如果S0寄存器為0,則需要手動(dòng)應(yīng)答。)等MODEM連接成功,MODEM會(huì)返回CONNECT(數(shù)字型號(hào)“1”)+波特率,表示兩臺(tái)MODEM以指定的波特率連接,波特率是值是以低速M(fèi)ODEM的波特率為準(zhǔn)的?,F(xiàn)在就可以開(kāi)始傳送數(shù)據(jù)給對(duì)方了。 文件傳輸協(xié)議的設(shè)計(jì) 上面的設(shè)計(jì)已經(jīng)實(shí)現(xiàn)一方寫入數(shù)據(jù),而另一方能接收到數(shù)據(jù)的功能了,而且除外界干擾外,數(shù)據(jù)不會(huì)出錯(cuò)。要實(shí)現(xiàn)傳送文件的功能,還需要打開(kāi)文件,將文件中的字符一個(gè)一個(gè)的讀取出來(lái)等等文件操作的功能,這可以由gcc中提供的文件操作庫(kù)函數(shù)來(lái)完成,而且這些存函數(shù)的功能非常強(qiáng)大。現(xiàn)在要做一個(gè)簡(jiǎn)單的文件傳輸協(xié)議來(lái)完成數(shù)據(jù)傳輸,不僅僅有對(duì)文件的操作,其中最重要的是對(duì)數(shù)據(jù)的校驗(yàn)方式的設(shè)計(jì)。總體思路是:發(fā)送方發(fā)送一個(gè)字符,接收方收到以后判斷此字符是新的字符還是對(duì)前一個(gè)接收到的字符的修改,如果是對(duì)前一個(gè)字符的修改,說(shuō)明前一個(gè)字符在傳輸?shù)倪^(guò)程中出錯(cuò),則用這個(gè)修改字符覆蓋掉前一個(gè)字符;如果是新字符,則把它賦值給一個(gè)變量,等待往接收文件中寫入,并把前一個(gè)字符存入接收文件。接收處理完成之后,還需把接收到的字符返還給發(fā)送方。發(fā)送方將從接收方送來(lái)的字符與原發(fā)送字符做比較,如果相等,則說(shuō)明傳輸過(guò)程中沒(méi)有出錯(cuò),那么就接著發(fā)送下一個(gè)字符,直到文件結(jié)束;如果不相等,則說(shuō)明傳輸過(guò)程中出現(xiàn)了錯(cuò)誤,那么重新把這個(gè)字符發(fā)一遍,直到發(fā)送方發(fā)送的字符和接收到的字符相等為止。為了在數(shù)據(jù)中加入控制信息,將發(fā)送文件中的單字符分成高四位與低四低分別發(fā)送,文件本身的4位放在新的八位數(shù)據(jù)的低4位,新的數(shù)據(jù)的高4位放控制信息。在新數(shù)據(jù)高4位中:bit4|bit5 = 00,表示是新的數(shù)據(jù);bit4|bit5 = 01,表示是重新發(fā)送的數(shù)據(jù);bit4|bit5 = 10,表示文件名結(jié)束;bit4|bit5 = 11,表示文件結(jié)束。發(fā)送方的發(fā)送函數(shù)流程如圖6如示:圖6 send函數(shù)流程接收方的接收函數(shù)流程如圖7如示:圖7 receive函數(shù)流程5 編碼實(shí)現(xiàn) 串口初始化實(shí)現(xiàn)對(duì)串口進(jìn)行正確的設(shè)置,串口才能正常工作,得到期望的結(jié)果,對(duì)串口設(shè)置是通過(guò)修改POSIX Termios成員項(xiàng)進(jìn)行的:void init_port(void){ struct termios options。 ftl(fd, F_SETFL, 0)。 //讀不到數(shù)據(jù)即阻塞串口 tcgetattr(fd, amp。options)。 //獲得串口的設(shè)置 cfsetispeed(amp。options, B115200)。 //波特率 115200 cfsetospeed(amp。options, B115200)。 |= (CLOCAL | CREAD)。 amp。= ~CSIZE。 //屏蔽數(shù)據(jù)位大小 |= CS8。 //選擇8位數(shù)據(jù)傳輸 amp。= ~PARENB。 //無(wú)奇偶校驗(yàn) amp。= ~CSTOPB。 //1位停止位 /*非標(biāo)準(zhǔn)輸入*/ amp。= ~(INPCK | IGNPAR |IXON |IXOFF |IXANY)。 amp。= ~(ICANON | ECHO | ECHOE | ISIG)。 amp。= ~OPOST。 //非標(biāo)準(zhǔn)輸出 [VMIN] = 0。 [VTIME] = 200。 //20s內(nèi)讀不到數(shù)據(jù)就退出 tcflush(fd, TCIFLUSH)。 //刷新數(shù)據(jù)線 tcsetattr(fd, TCSANOW, amp。options)。 //將新的設(shè)置寫入串口} 串口讀寫的實(shí)現(xiàn)對(duì)串口的讀寫是通過(guò)read()和write()來(lái)實(shí)現(xiàn)的,跟對(duì)文件的操作一樣(串口是個(gè)特殊的文件),寫串口函數(shù)流程圖如圖8如示:圖8 write函數(shù)流程讀串口函數(shù)流程如圖9如示:圖9 read函數(shù)流程 MODEM初始化的實(shí)現(xiàn)int init_MODEM(void){/*如果第一次初始化失敗則進(jìn)行第二次,如果第二次也失敗則程序退出*/ write_to_MODEM(ATE0V0\r, 7)。 if( read_from_MODEM(OK) != 1 ){ /*第二次初始化*/ write_to_MODEM(ATE0V0\r, 7)。 if( read_from_MODEM(OK) != 1 ) { /*二次初始化失敗,可能是MODEM本身出了問(wèn)題*/ printf(Init MODEM failed, check your MODEM)。 return 0。 } } return 1。}在前面,已經(jīng)對(duì)串口進(jìn)行了設(shè)置,但當(dāng)時(shí)的設(shè)置,[VMIN] = 0
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1