陳騫 黃辰
摘 要:文中設(shè)計(jì)了一款軟硬件結(jié)合的無線答題系統(tǒng),軟件部分為基于SpringMVC實(shí)現(xiàn)的Web系統(tǒng),硬件包含接收器,電子答題器等。硬件通過串口與PC上的Web系統(tǒng)通信,實(shí)現(xiàn)所需要的系統(tǒng)功能。
關(guān)鍵詞:SpringMVC;答題系統(tǒng);串口通信;Web
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2017)09-0-03
0 引 言
隨著網(wǎng)絡(luò)和多媒體技術(shù)發(fā)展逐漸完善,多媒體授課,網(wǎng)絡(luò)授課在學(xué)生的課堂中扮演著越來越重要的角色。分析了目前學(xué)校課堂的信息化程度后發(fā)現(xiàn),如果有一種無線答題系統(tǒng)能夠方便老師課堂上通過題庫(kù)選擇題目,學(xué)生當(dāng)場(chǎng)通過設(shè)備作答,可以大大提高教師和學(xué)生之間的溝通互動(dòng),使得該系統(tǒng)擁有廣闊的市場(chǎng)前景[1]。
本文根據(jù)此背景,設(shè)計(jì)了一種可進(jìn)行課堂教學(xué)評(píng)價(jià)和師生無線答題的系統(tǒng),該系統(tǒng)將學(xué)生的答題器連接到接收機(jī)和計(jì)算機(jī)軟件,由老師控制軟件實(shí)現(xiàn)互動(dòng)。
1 系統(tǒng)功能設(shè)計(jì)
本系統(tǒng)具有題目、人員信息導(dǎo)入,硬件配置,選擇題作答,答題結(jié)果統(tǒng)計(jì)等功能。題目類型分為單選、多選,支持同一題目多次作答,系統(tǒng)會(huì)記錄每次作答的結(jié)果,同時(shí)還可實(shí)現(xiàn)統(tǒng)計(jì)所有題目的作答情況。
教師通過系統(tǒng)出多道選擇題(包括單選和多選),軟件后臺(tái)通過接收器下發(fā)作答指令,學(xué)生作答后提交答案,接收器將學(xué)生的作答答案及提交時(shí)間上傳到后臺(tái),由后臺(tái)軟件進(jìn)行數(shù)據(jù)處理,可統(tǒng)計(jì)出提交答案人數(shù)、正確人數(shù)、錯(cuò)誤人數(shù)和正確率等。
2 系統(tǒng)總體架構(gòu)
本系統(tǒng)涉及的硬件包含接收器,答題器,服務(wù)器。服務(wù)器充當(dāng)答題器上位機(jī)和軟件系統(tǒng)的角色,軟件部分為基于Java Web技術(shù)實(shí)現(xiàn)的Web系統(tǒng),電子答題器通過2.4 G網(wǎng)絡(luò)與接收器通信,數(shù)據(jù)通過接收器透?jìng)鹘o服務(wù)器,其擁有17個(gè)物理按鍵和1個(gè)人機(jī)交互顯示屏,采用2.4 G免費(fèi)頻段通信,支持遠(yuǎn)距離考勤最大距離為50 m,支持多終端同時(shí)并發(fā)120個(gè)數(shù)。接收器通過USB與多媒體計(jì)算機(jī)連接,主要收集答題器的數(shù)據(jù),匯總后發(fā)送給中間件,同時(shí)將上層的配置指令等發(fā)送給下層答題器。系統(tǒng)邏輯圖如圖1所示。
圖1 系統(tǒng)邏輯圖
本系統(tǒng)軟件部分在SpringMVC框架的基礎(chǔ)上進(jìn)行開發(fā),SpringMVC是目前Java Web體系中非常流行的MVC框架,軟件系統(tǒng)包含View層、Pipe層、Logic層、Data層,其中View層包含了Web端,是“前端”的一部分,實(shí)現(xiàn)了用戶可觀看的軟件或網(wǎng)站界面;其他三層均為“服務(wù)端”部分,具有向前端傳遞數(shù)據(jù),提供HTTP接口,處理業(yè)務(wù)邏輯等功能[2]。本系統(tǒng)軟件體系結(jié)構(gòu)如圖2所示。
圖2 軟件體系結(jié)構(gòu)圖
(1)View層負(fù)責(zé)實(shí)現(xiàn)網(wǎng)站或軟件頁面展示與前端簡(jiǎn)單邏輯展示。
(2)Pipe層負(fù)責(zé)處理數(shù)據(jù)請(qǐng)求的發(fā)送,規(guī)定了所有端口基于何種協(xié)議與服務(wù)器進(jìn)行交互,以及數(shù)據(jù)類型的規(guī)范,對(duì)請(qǐng)求進(jìn)行安全驗(yàn)證。
(3)Logic層進(jìn)行整個(gè)程序業(yè)務(wù)邏輯請(qǐng)求的處理,將處理結(jié)果通過HTTP接口的形式使用戶可通過URL地址調(diào)用。Logic層在SpringMVC框架中在具體實(shí)現(xiàn)時(shí)包括Controller層和Service層。
(4)Data層包括訪問數(shù)據(jù)庫(kù)或其他數(shù)據(jù)源等,具體有對(duì)數(shù)據(jù)庫(kù)中表的查詢、修改、刪除等功能,供Service層調(diào)用。Data層在MyBatis框架中的實(shí)現(xiàn)包括Mapper層和POJO層[3]。
本系統(tǒng)選擇JSON數(shù)據(jù)格式+HTTP協(xié)議作為系統(tǒng)前端后臺(tái)的接口方案。在具體實(shí)現(xiàn)過程中,利用Jackson框架將后臺(tái)Java對(duì)象轉(zhuǎn)換成JSON對(duì)象。在Controller層接口返回Response,經(jīng)springMVC的@ResponseBody注解封裝,通過Jackson轉(zhuǎn)換成JSON字符串,服務(wù)器再利用HTTP協(xié)議返回給前端AJAX接口調(diào)用者。
3 題目作答模塊設(shè)計(jì)
題目作答模塊實(shí)現(xiàn)了學(xué)生通過答題器向系統(tǒng)發(fā)送數(shù)據(jù),頁面實(shí)時(shí)展示,后臺(tái)存儲(chǔ)相關(guān)數(shù)據(jù)等功能。
為實(shí)現(xiàn)上述功能,該模塊的Controller層需向View層提供的HTTP接口如圖3所示。View層需要向Controller層發(fā)送所有請(qǐng)求序列,完成該題目的一次答題活動(dòng)。
3.1 視圖層實(shí)現(xiàn)
作答需點(diǎn)擊“開始”,通過調(diào)用開始答題、開始發(fā)送題目、開始接受數(shù)據(jù)HTTP接口與電子答題器進(jìn)行交互,循環(huán)調(diào)用刷新HTTP接口以展示當(dāng)前投票情況,結(jié)束時(shí),調(diào)用停止接收數(shù)據(jù)、結(jié)束答題HTTP接口結(jié)束與答題器的交互。
3.2 邏輯層實(shí)現(xiàn)
HTTP接口實(shí)現(xiàn)方法可封裝在ChoiceQuestionController類中,開始答題接口首先獲得最新的答題次數(shù),并添加新的答題記錄,開啟答題的硬件指令,接收答題器數(shù)據(jù)。
實(shí)時(shí)答題數(shù)據(jù)接口方法負(fù)責(zé)開始答題后,動(dòng)態(tài)刷新答題率、答題人數(shù)等數(shù)據(jù)。此接口由前端自動(dòng)循環(huán)調(diào)用100 ms刷新間隔,因此邏輯必須精煉,且運(yùn)行時(shí)長(zhǎng)越短越好,數(shù)據(jù)庫(kù)操作應(yīng)去除查詢?nèi)哂嘧侄危@取總?cè)藬?shù)及當(dāng)前已作答人數(shù),并計(jì)算百分比,以圖形形式返回展示。
答題結(jié)束的接口方法計(jì)算結(jié)束作答后的統(tǒng)計(jì)數(shù)據(jù)并作持久化處理。作答結(jié)束后,更新本次作答記錄,將結(jié)束時(shí)間添加進(jìn)去,作為一條完整作答記錄存儲(chǔ)。所有答案在串口線程運(yùn)行時(shí)已寫入Answer表,通過Service層方法得到相關(guān)數(shù)據(jù),進(jìn)行統(tǒng)計(jì)計(jì)算并進(jìn)行持久化處理。
4 串口通信模塊設(shè)計(jì)
為了實(shí)現(xiàn)Java與串口硬件通信,本文采用RXTX項(xiàng)目提供的Java串口通信包API。在此系統(tǒng)中,通信內(nèi)容包括服務(wù)端下發(fā)給接收機(jī)的指令和答題器通過接收機(jī)透?jìng)鹘o服務(wù)端的數(shù)據(jù),可以設(shè)計(jì)一個(gè)SerialPortDataController類來處理相關(guān)通信內(nèi)容。endprint
下發(fā)指令部分,設(shè)計(jì)一個(gè)SendCommand方法來處理諸如答題器匹配,白名單開啟,清屏,發(fā)送開始答題指令等。將指令數(shù)據(jù)通過COM參數(shù)設(shè)置的端口號(hào),以指定的波特率發(fā)送。具體程序流程如圖4所示。
接收答題器數(shù)據(jù)的部分,由于該過程是持續(xù)性的工作,不同于一次性的指令,所以需設(shè)計(jì)一個(gè)線程類SerialThread,采用多線程運(yùn)行。
(1)開啟串口,打開輸入流,循環(huán)檢查輸入流中的數(shù)據(jù),并進(jìn)行讀取、緩存。
(2)根據(jù)線程調(diào)用相關(guān)信息,確定報(bào)文類型(選擇,判斷),利用checksum函數(shù)對(duì)數(shù)據(jù)進(jìn)行異或差錯(cuò)校驗(yàn),再分別選擇協(xié)議解析,將解析出來的數(shù)據(jù)轉(zhuǎn)換成對(duì)象,然后進(jìn)行數(shù)據(jù)持久化處理。
作答數(shù)據(jù)解析流程如圖5所示。
5 系統(tǒng)測(cè)試
圖6展示了當(dāng)前正在作答的人數(shù)以及所占總?cè)藬?shù)的百分比,且隨時(shí)可結(jié)束作答。
點(diǎn)擊“停止”后,顯示答題結(jié)果,預(yù)期只有一個(gè)人正確,兩人錯(cuò)誤,一人未作答,統(tǒng)計(jì)結(jié)果如圖7所示,與預(yù)期相符。
6 結(jié) 語
本文主要介紹了SpringMVC框架技術(shù)在無線答題系統(tǒng)中的應(yīng)用,圍繞核心題目作答功能模塊闡述了HTTP接口設(shè)計(jì)、視圖層、邏輯層設(shè)計(jì)與關(guān)鍵通信技術(shù)。設(shè)計(jì)的系統(tǒng)滿足了預(yù)期的功能需求,系統(tǒng)能促進(jìn)教學(xué)過程中教師學(xué)生的互動(dòng),使得老師對(duì)學(xué)生的成績(jī)管理數(shù)據(jù)歸檔有據(jù)可依,充分體現(xiàn)了當(dāng)代課程改革的理念。
參考文獻(xiàn)
[1]李強(qiáng).基于nRF24le1及uC/OS-II操作系統(tǒng)的智能無線答題系統(tǒng)的設(shè)計(jì)[D].長(zhǎng)春:吉林大學(xué),2016.
[2]韓森,鄧停東,張占強(qiáng).SpringMVC+Hibernate框架的應(yīng)用研究[J].軟件導(dǎo)刊,2009(6):44-45.
[3]吳婉楠.基于SpringMVC和MyBatis框架的炒股比賽系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京大學(xué),2016.
[4]溫小清,潘永才,劉海龍,等.基于SSH2的電子監(jiān)管平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2015,5(1):64-66.
[5]Linux下ARM和CC2530的串口通信[J].物聯(lián)網(wǎng)技術(shù),2016,6(1):34-36.
[6]翟高粵,魏娜.一種基于MVC框架的校園管理系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2010(8):40-42.
[7]于慧勇,樊丹丹.WebService技術(shù)在數(shù)據(jù)共享中的應(yīng)用研究[J].電腦編程技巧與維護(hù),2016(24):53-54.
[8]張籍.使用答題器組織有效課堂教學(xué)[J].學(xué)園:學(xué)者的精神家園,2014(18):99-100.endprint