基于AVR的無(wú)線LED屏控制系統(tǒng)設(shè)計(jì)
4.2 上位機(jī)軟件
本系統(tǒng)的上位機(jī)軟件主要采用VC 設(shè)計(jì)一個(gè)通信界面,實(shí)現(xiàn)與LED 遠(yuǎn)程控制器通信。用戶界面部分采用MFC 框架基于Dialog 實(shí)現(xiàn)。在利用Visual C++進(jìn)行通過(guò)TCP/IP 協(xié)議網(wǎng)絡(luò)傳輸數(shù)據(jù)開(kāi)發(fā)時(shí), 采用IOCP 框架來(lái)實(shí)現(xiàn)Windows Socket 的完成端口模型。
IOCP 即I/O 完成端口(I/O Completion Port),是一個(gè)異步I/O 的API,它可以高效地將I/O 事件通知給應(yīng)用程序。一個(gè)套接字在被創(chuàng)建后,與一個(gè)完成端口進(jìn)行關(guān)聯(lián)。當(dāng)一個(gè)事件發(fā)生的時(shí)候,此完成端口就將被操作系統(tǒng)加入一個(gè)隊(duì)列中, 然后應(yīng)用程序可以對(duì)核心層進(jìn)行查詢以得到此完成端口。當(dāng)某項(xiàng)I/O 操作一旦完成, 某個(gè)可以對(duì)該操作結(jié)果進(jìn)行處理的工作線程就會(huì)收到一則通知。在此應(yīng)用程序中創(chuàng)建一定數(shù)量的工作線程來(lái)處理重疊I/O 請(qǐng)求的通知。
IOCP 框架的啟動(dòng)流程如圖6 所示。
IOCP 框架的實(shí)現(xiàn)步驟如下:
(1)初始化Winsock 工作環(huán)境,并創(chuàng)建完成端口,創(chuàng)建完成端口線程,建立一個(gè)監(jiān)聽(tīng)套接字,使套接字與完成端口關(guān)聯(lián)起來(lái);
?。?)監(jiān)聽(tīng)套接字開(kāi)始工作,當(dāng)監(jiān)聽(tīng)套接字接收到客戶端TCP 的連接請(qǐng)求時(shí),IOCP 會(huì)獲取并處理該消息,創(chuàng)建對(duì)應(yīng)的Socket 對(duì)象進(jìn)行接收處理,完成連接工作;
?。?)當(dāng)客戶端完成TCP 連接后,可以開(kāi)始數(shù)據(jù)通信,由I/O 線程來(lái)負(fù)責(zé)分發(fā)I/O 請(qǐng)求,通過(guò)線程池來(lái)分配邏輯處理環(huán)境;
?。?)在接收數(shù)據(jù)后,將微軟提供的一個(gè)I/O 數(shù)據(jù)結(jié)構(gòu)(WSAOVERLAPPED)進(jìn)行擴(kuò)展,完成協(xié)議解析和數(shù)據(jù)處理。
此外,這里的線程池只是一個(gè)管理隊(duì)列,用于處理線程資源的管理, 用最少的線程完成最大業(yè)務(wù)邏輯的處理。真正執(zhí)行的線程函數(shù)也不完成詳細(xì)的業(yè)務(wù)處理,僅僅完成對(duì)I/O 請(qǐng)求的再調(diào)用,而由虛函數(shù)實(shí)現(xiàn)I/O 請(qǐng)求的再處理。
為了提高軟件的友好性, 框架采用Windows 的消息機(jī)制,與UI 進(jìn)行交互,通過(guò)窗口消息將框架的相關(guān)信息傳遞給UI 窗口。因此在框架中保留了一個(gè)指針成員, 并在需要的時(shí)候通過(guò)該指針調(diào)用消息響應(yīng)函數(shù)向窗口發(fā)送消息,UI 根據(jù)消息反映框架的運(yùn)行信息。
5 、結(jié)語(yǔ)
根據(jù)近年來(lái)GSM/GPRS 數(shù)據(jù)通信技術(shù)等發(fā)展的趨勢(shì),本文提出了基于GPRS 網(wǎng)絡(luò)的、使用低成本SIM300模塊的無(wú)線LED 屏控制器的設(shè)計(jì)方案, 該系統(tǒng)利用TCP/IP 協(xié)議實(shí)現(xiàn)了基于GPRS 網(wǎng)絡(luò)的無(wú)線數(shù)據(jù)的傳送。上位機(jī)將文字或圖片信息數(shù)據(jù)通過(guò)GPRS 網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)程LED 屏終端, 也可以接收客戶端發(fā)送的數(shù)據(jù),再根據(jù)數(shù)據(jù)的內(nèi)容相應(yīng)地完成各種命令,控制LED屏顯示相應(yīng)的信息。該系統(tǒng)設(shè)計(jì)經(jīng)測(cè)試取得了良好的效果。
陀螺儀相關(guān)文章:陀螺儀原理
評(píng)論