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

正文內(nèi)容

基于短信收發(fā)系統(tǒng)畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2025-06-07 07:59本頁(yè)面
  

【正文】 學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 28 頁(yè) } return FALSE。 } 點(diǎn)擊 接收 按鈕會(huì)通過(guò) gsmReadMessage 函數(shù)的調(diào)用獲 得所有短消息,最后在列表控件中顯示所有短信: void CSMSControlDlg::OnRecvButton() { // TODO: Add your control notification handler code here SM_PARAM smParam[100]。//短信緩沖區(qū) int smsNum。//短信條數(shù) smsNum = gsmReadMessage(smParam)。//讀取短信 //顯示短信 for(int i=0。ismsNum。i++) { (CString(smsNum[i].TPA)+smsNum[i].TP_UD)。 } } 其中調(diào)用的 gsmReadMessage 函數(shù)完成最核心的短信接收功能,它按照第 1 節(jié)闡述的 GSM 模塊接收短消息的串口控制流程進(jìn)行短信的接收: // 參數(shù): pMsg 短消息緩沖區(qū),必須足夠大 // 返回:短消息條數(shù) int gsmReadMessage(SM_PARAM* pMsg) { int nLength。 // 串口收到的數(shù)據(jù)長(zhǎng)度 int nMsg。 // 短消息計(jì)數(shù)值 char* ptr。 // 內(nèi)部用的數(shù)據(jù)指針 char cmd[16]。 // 命令串 char ans[1024]。 // 應(yīng)答串 nMsg = 0。 ptr = ans。 sprintf(cmd, AT+CMGL\r)。 // 生成命令,用 +CMGL可一次性讀出全部短消息 WriteComm(cmd, strlen(cmd))。 // 輸出命令串 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 29 頁(yè) nLength = ReadComm(ans, 1024)。 // 讀應(yīng)答數(shù)據(jù) // 根據(jù)能否找到 +CMS ERROR決定成功與否 if(nLength 0 amp。amp。 strncmp(ans, +CMS ERROR, 10) != 0) { // 循環(huán)讀取每一條短消息 , 以 +CMGL:開頭 while((ptr = strstr(ptr, +CMGL:)) != NULL) { ptr += 6。 // 跳過(guò) +CMGL: sscanf(ptr, %d, amp。pMsgindex)。 // 讀取序號(hào) ptr = strstr(ptr, \r\n)。 // 找下一行 ptr += 2。 // 跳過(guò) \r\n gsmDecodePdu(ptr, pMsg)。 // PDU串解碼 pMsg++。 // 準(zhǔn)備讀下一條短消息 nMsg++。 // 短消息計(jì)數(shù)加 1 } } return nMsg。 } 我們可以在讀取完所有短信息后調(diào)用 gsmDeleteMessage 函數(shù)在 GSM 模塊上刪除那些已經(jīng)被接收到 PC 上的短信息,它按照第 1 節(jié)闡述的 GSM 模塊刪除短消息的串口控制流程進(jìn)行短信的刪除: // index: 短消息序號(hào),從 1開始 BOOL gsmDeleteMessage(const int index) { int nLength。 // 串口收到的數(shù)據(jù)長(zhǎng)度 char cmd[16]。 // 命令串 char ans[128]。 // 應(yīng)答串 sprintf(cmd, AT+CMGD=%d\r, index)。 // 生成命令 // 輸出命令串 WriteComm(cmd, strlen(cmd))。 // 讀應(yīng)答數(shù)據(jù) nLength = ReadComm(ans, 128)。 // 根據(jù)能否找到 +CMS ERROR決定成功與否 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 30 頁(yè) if (nLength 0 amp。amp。 strncmp(ans, +CMS ERROR, 10) != 0) { return TRUE。 } return FALSE。 } 在 PC 控制 軟件 的短信列表框中刪除所有短消息的 清空 按鈕函數(shù)為: void CSMSControlDlg::OnDeleteallButton() { // TODO: Add your control notification handler code here ()。 } 編 /解碼 GSM 短消息 這里只給出編解碼函數(shù)的原型,具體請(qǐng)參看 GSM 標(biāo)準(zhǔn)及 上一章 。 // UCS2 編碼 返回 : 目標(biāo)編碼串長(zhǎng)度 int gsmEncodeUcs2(const char *pSrc, // 源字符串指針 unsigned char *pDst, // pDst: 目標(biāo)編碼串指針 int nSrcLength // nSrcLength: 源字符串長(zhǎng)度 )。 // UCS2 解碼 返回 : 目標(biāo)字符串長(zhǎng)度 int gsmDecodeUcs2(const unsigned char *pSrc, //源編碼串指針 char *pDst, // pDst: 目標(biāo)字符串指針 int nSrcLength // nSrcLength: 源編碼串長(zhǎng)度 )。 //可打印字符串轉(zhuǎn)換為字節(jié)數(shù)據(jù) 返回 : 目標(biāo)數(shù)據(jù)長(zhǎng)度 //如: C8329BFD0E01 {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} int gsmString2Bytes(const char *pSrc, // pSrc: 源字符串指針 unsigned char *pDst, // pDst: 目標(biāo)數(shù)據(jù)指針 int nSrcLength // nSrcLength: 源字符串長(zhǎng)度 )。 // 字節(jié)數(shù)據(jù)轉(zhuǎn)換為可打印字符串 返回 : 目標(biāo)字符串長(zhǎng)度 // 如: {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} C8329BFD0E01 int gsmBytes2String(const unsigned char *pSrc, // pSrc: 源數(shù)據(jù)指針 char *pDst, // pDst: 目標(biāo)字符串指針 int nSrcLength // nSrcLength: 源數(shù)據(jù)長(zhǎng)度 )。 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 31 頁(yè) 第 4 章 串口 通信及 編程 方法 串口 通信 之基本概念 在 PC 機(jī)的主板上,有一種類型的接口可能為我們所忽視,那就是 RS232C 串行接口,在微軟的 Windows 系統(tǒng)中稱其為 COM。我們可以通過(guò)設(shè)備管理器來(lái)查看 COM 的硬件參數(shù)設(shè)置,如圖 41。 圖 41 在 Windows上查看 PC串口設(shè)置 迄今為止,幾乎每一臺(tái) PC 都包含 COM。本質(zhì)而言, COM 是 PC 為和外界通信所提供的一種串行數(shù)據(jù)傳輸?shù)慕涌?。作為一種物理通信的途徑和設(shè)備,它和目前風(fēng)靡的另一種串行接口 ――USB 所提供的功能是一致的。不過(guò) RS232C 顯然已經(jīng)開始被后起之秀 USB趕超,因?yàn)?USB 的傳輸速率已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了 RS232C。 盡管如此, RS232C 仍然具有非常廣泛的應(yīng)用,在相對(duì)長(zhǎng)的一段時(shí)間里,難以被 USB等接口取代。 RS232C 接口(又稱 EIA RS232C), 1970 年由美國(guó)電子工業(yè)協(xié)會(huì)( EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定,全名是 數(shù)據(jù)終端設(shè)備( DTE)和數(shù)據(jù)通訊設(shè)備( DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn) 。 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 32 頁(yè) 圖 42 DB9 圖 42 為 RS232 九針接口 示意 圖 ,其 中 各個(gè)針的定義如表 41: 針號(hào) 1 2 3 4 5 6 7 8 9 縮寫 數(shù)據(jù)載波檢測(cè) 接收數(shù)據(jù) 發(fā)送數(shù)據(jù) 數(shù)據(jù)終端準(zhǔn)備 信號(hào)地 數(shù)據(jù)設(shè)備準(zhǔn)備好 請(qǐng)求發(fā)送 清除發(fā)送 振鈴指示 功能說(shuō)明 DCD RXD TXD DTR GND DSR RTS CTS DELL 表 41 DB9引腳定義 RS232C 定義為數(shù)據(jù)通信設(shè)備( DCE)和數(shù)據(jù)終端設(shè)備( DTE)之間的互連,實(shí) 際 上 ,到現(xiàn)在為止,究竟一個(gè)設(shè)備屬于 DCE 還是屬于 DTE 已經(jīng)沒(méi)有明顯的界限, PC 即可作為DCE,又可作為 DTE。兩串口互連,連接方法主要有二: 一種方法是 : 數(shù)據(jù)的發(fā)送和接收由軟件控制,不進(jìn)行硬件握手,其連接方法如圖 43,真正需要互相連接的是 RXD、 TXD 和 GND; 圖 43 無(wú)硬件握手時(shí)兩串口連接 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 33 頁(yè) 軟件握手又稱 為 XON/XOFF,通常以 CTRLS( 0x13)和 CTRLQ( 0x11)兩個(gè)字符來(lái)實(shí)現(xiàn)流控制。前者用于請(qǐng)求對(duì)方暫停發(fā)送,后者用于清除暫停傳送的請(qǐng)求,繼續(xù)發(fā)送數(shù)據(jù)。 另一種方法是 : 數(shù)據(jù)的發(fā)送和接收由硬件控制,進(jìn)行硬件握手,其連接方法如圖 6(最常用 DB9連接示意),需要連接的信號(hào)除 RXD、 TXD 和 GND 外,還包括 DTR、 DSR、RTS和 CTS。 硬件握手依賴于 RTS 和 CTS信號(hào),當(dāng)發(fā)送設(shè)備欲發(fā)送數(shù)據(jù)時(shí),將 RTS 信號(hào)置為有效表示請(qǐng)求發(fā)送,接收設(shè)備準(zhǔn)備好后,置 CTS 信號(hào)有效,接著發(fā)送設(shè)備通過(guò)信號(hào)線 TXD 開始發(fā)送串行數(shù)據(jù)。 這里我們聯(lián)想開來(lái), RTS/CTS 模式在許多領(lǐng)域里都出現(xiàn)過(guò)?;貞浺幌?IEEE 無(wú)線局域網(wǎng)協(xié)議標(biāo)準(zhǔn),在其 MAC 協(xié)議中就使用了 RTS/CTS, RTS/CTS 抽象開來(lái)就是一種請(qǐng)求 /應(yīng)答。筆者曾經(jīng)在拙作中多次以實(shí)例論證計(jì)算機(jī)領(lǐng)域里許多知識(shí)的相通性,這又是一個(gè)明證。 圖 44 有硬件 握手時(shí)兩串口連接 實(shí)際上,目前我們經(jīng)常使用的是方法一,即只連接 RXD、 TXD 和 GND,簡(jiǎn)單靈活。 利用 Active X 控件實(shí)現(xiàn)串口通信 引言 當(dāng)我們?cè)?Windows 操作系統(tǒng)下開發(fā) 串行通信程序 時(shí)通常不得不面對(duì)許多復(fù)雜的 API函數(shù),因?yàn)樵?Windows 操作系統(tǒng)下不能直接對(duì)設(shè)備端口進(jìn)行操作,也不能在系統(tǒng)級(jí)( Ring 3級(jí)別)使用任何 DOS 或 BIOS 中斷,如 要對(duì)端口進(jìn)行編程則只能以文件的形式來(lái)對(duì)端口進(jìn)行操作,這就使開發(fā)人員不得不面對(duì)非常煩瑣的 API 函數(shù)編程。 本章 對(duì)此提出了另外西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 34 頁(yè) 一種封裝性很好的使用 Microsoft Visual C++ 自帶的 Microsoft Communications Control, version Active X 控件的編程方法 。 程序的設(shè)計(jì)實(shí)現(xiàn) 在開始進(jìn)行代碼編程前,首先以在工程中插入組件或控件的方式將 Active X 控件Microsoft Communications Control, version 加入到工程中來(lái),此時(shí)將會(huì)在工程中添加一個(gè)關(guān)于此控件的新類。使用該控件的一些方法和屬性時(shí)不能象使用類一樣簡(jiǎn)單的聲明一個(gè)實(shí)例對(duì)象,而要通 ClassWizard為該控件和一個(gè)成員變量建立起綁定關(guān)系,在此我們將該控件同變量 m_Comm 相綁定后就可以通過(guò)該控件提供的方法來(lái)對(duì)串口的各種通訊參數(shù)進(jìn)行設(shè)置了。為了編程方便起見,也可以在資源 視圖 中直接對(duì)該控件的屬性進(jìn)行設(shè)置,如無(wú)特 別要求,對(duì)下表所列屬性進(jìn)行設(shè)置就基本可以滿足編程要求了?,F(xiàn)將常用的屬性列表如下: 屬性 設(shè)定值 屬性說(shuō)明 CommPort 1 串口號(hào),一般從 1 到 4 InBufferSize 30720 接收緩沖區(qū)大小,為保持程序 穩(wěn)定 建議設(shè)得值足夠大 InputMode 0Text 接收數(shù)據(jù) 類型, 0表示文本類型, 1表示二 進(jìn)制 類型 InputLen 0 從接收緩沖區(qū)讀取 的字節(jié)數(shù), 0表示全部讀取 OutBufferSize 512 發(fā)送緩沖區(qū)大小 Settings 4800,n,8,1 串口的參數(shù)設(shè)置 ,依次為波特率、 奇偶校驗(yàn) (n無(wú)校驗(yàn) ,e偶校驗(yàn) ,o奇校驗(yàn) )、數(shù)據(jù)位數(shù)、停止位數(shù) RThreshold 1 設(shè)定當(dāng)接收幾個(gè)字符時(shí)觸發(fā) OnComm 事件, 0表示不產(chǎn)生事件, 1表示每接收一個(gè)字符就產(chǎn)生一個(gè)事件 SThreshold 0 設(shè)定在觸發(fā) OnComm 事件前,發(fā)送緩沖區(qū)內(nèi)所允許的最少的字符數(shù), 0表示發(fā)送數(shù)據(jù)時(shí)不產(chǎn)生事件, 1表示當(dāng)發(fā)送緩沖區(qū)空時(shí)產(chǎn)生 OnComm 事件 表 42 Microsoft Communications Control, version 西安工程大學(xué)機(jī)電學(xué)院本科畢業(yè)論文 第 35 頁(yè) 我們要求
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1