吉 鳳
珠海城市職業(yè)技術(shù)學(xué)院 廣東珠海 519090
ActiveX控件在網(wǎng)絡(luò)口語測試系統(tǒng)中的應(yīng)用
吉 鳳
珠海城市職業(yè)技術(shù)學(xué)院 廣東珠海 519090
本文介紹了適用于外語口語考核的網(wǎng)絡(luò)口語測試系統(tǒng),基于Web實(shí)現(xiàn)了口語測試試題的多種形式。如文字試題、語音試題、視頻試題等,并運(yùn)用ActiveX技術(shù)實(shí)現(xiàn)錄音和文件上傳功能。
網(wǎng)絡(luò)口語測試;ActiveX控件;VC++6.0
英語考核的重點(diǎn)是學(xué)生的語言表達(dá)和運(yùn)用能力。目前,大多數(shù)英語考核都通過“筆試+面試”的方式進(jìn)行,此種方式不僅成本高、效率低,也很難進(jìn)行大規(guī)模的考核,特別是異地、遠(yuǎn)程考核。有些機(jī)構(gòu)采用了網(wǎng)絡(luò)考試系統(tǒng)進(jìn)行英語考核,但這些系統(tǒng)一般不具備音頻、視頻考試的能力,僅能滿足筆試環(huán)節(jié)需求,對語音考核無法滿足。為此,根據(jù)教學(xué)的需要,設(shè)計(jì)開發(fā)了本系統(tǒng)。
相比傳統(tǒng)的口語教學(xué)與考核方式,本系統(tǒng)不僅具備一般網(wǎng)絡(luò)考試的優(yōu)點(diǎn),如高效、公平等,而且具有自身的特點(diǎn):
1.試題類型有多種形式,可進(jìn)行聽力、音頻、視頻、多媒體類英語考試,多角度考查學(xué)生的口語水平。
2.適用范圍廣,可用于高校、語言培訓(xùn)機(jī)構(gòu)組織英語等各種語言的網(wǎng)絡(luò)考試,也可用于外語口語教學(xué)中課后作業(yè)的提交。
應(yīng)用本系統(tǒng)進(jìn)行外語口語測試或考試,學(xué)生通過訪問Internet,登陸測試系統(tǒng),使用本系統(tǒng)提供的ActiveX錄音控件錄下口語測試內(nèi)容,并形成錄音文件上傳服務(wù)器,統(tǒng)一管理。教師登陸系統(tǒng),聽取學(xué)生的口語錄音文件,評定學(xué)生的口語掌握情況。本系統(tǒng)的技術(shù)難點(diǎn)是ActiveX控件的設(shè)計(jì)以及多種試題類型的設(shè)計(jì)與實(shí)現(xiàn),筆者將具體介紹這些難點(diǎn)的實(shí)現(xiàn)形式。
ActiveX控件的優(yōu)點(diǎn)在于建立在組件對象模型(COM)的基礎(chǔ)上,實(shí)現(xiàn)了軟件模塊的二進(jìn)制連接,封裝性強(qiáng),可廣泛用于各種支持ActiveX的開發(fā)平臺,如Visual C++,VB,Delphi等,用戶所要做的只是掌握控件的屬性、方法和事件。
本系統(tǒng)中的ActiveX控件是用Visual C++6.0編制的具有錄音和文件上傳功能的控件Oral_Test_Control??丶慕缑姘?個(gè)按鈕;“考試開始”“結(jié)束”,顯示聲音強(qiáng)弱的柱狀圖區(qū)域,以及顯示錄音進(jìn)行時(shí)間的文本框(如圖1所示)。使用者通過鼠標(biāo)點(diǎn)擊按鈕來操作,控件錄下通過麥克風(fēng)輸入的聲音,并在錄音結(jié)束后將聲音文件上傳到服務(wù)器。Oral_Test_Control提供了一些屬性、事件和方法,方便使用者在其他程序或網(wǎng)頁中使用。
例如,控件中的方法ExamTime可設(shè)置答題時(shí)間,方法SetFTP可設(shè)置FTP上傳的相關(guān)參數(shù),等等。
圖1 控件Oral_Test_Control示意圖
1.錄音部分
Windows系統(tǒng)對于多媒體聲音的處理有多種方式,如MIDI(樂器數(shù)字接口),MIXER(混聲器),Low Level Wave Input/Output(低級聲波輸入/輸出)等。其中的低級聲波輸入/輸出可以直接在較低層次上控制聲音的輸入與輸出,具有較高的性能和實(shí)時(shí)性。ActiveX控件中錄音的實(shí)現(xiàn)采用Windows提供的一組低級音頻函數(shù)來完成,簡單流程如下:
打開錄音設(shè)備waveInOpen()—>準(zhǔn)備wave數(shù)據(jù)頭waveInPrepareHeader()—>準(zhǔn)備數(shù)據(jù)塊waveInAddBuffer()—>開始錄音waveInStart()—>停止錄音waveInReset ()—>關(guān)閉錄音設(shè)備waveInClose()
為克服錄音過程中數(shù)據(jù)丟失的問題,錄音時(shí)使用了2個(gè)緩沖區(qū)。如果使用單緩沖區(qū),則當(dāng)緩沖區(qū)被填滿,應(yīng)用程序收到MM_WIM_DATA消息而需要從緩沖區(qū)讀數(shù)據(jù)時(shí),因緩沖區(qū)處理臨界狀態(tài),驅(qū)動程序?qū)⒉荒馨颜阡浿频臄?shù)據(jù)寫入緩沖區(qū)中,就會丟失數(shù)據(jù),造成錄音中斷。使用雙緩沖區(qū)可以克服該缺陷。
2.上傳部分
FTP規(guī)定了數(shù)據(jù)包的格式、數(shù)據(jù)包頭部結(jié)構(gòu)、命令結(jié)構(gòu)等,使用“傳輸控制協(xié)議”,即TCP,作為移動數(shù)據(jù)的傳輸機(jī)制,因此語音文件的上傳采用FTP文件傳輸方式。有2種方法可以編寫FTP客戶程序:Winsock和WinInet。相對于WinInet編程接口,使用Winsock進(jìn)行編程時(shí),需要對控制連接和數(shù)據(jù)連接進(jìn)行管理,而且還需如同Telnet協(xié)議的實(shí)現(xiàn)一樣對服務(wù)器的命令進(jìn)行響應(yīng)并組織發(fā)送的命令,因此盡管由其實(shí)現(xiàn)的FTP客戶功能強(qiáng)大且編程靈活,但這使得編寫FTP客戶成為一個(gè)非常龐大的工程,因此對于一般應(yīng)用,使用WinInet既提高了效率也易于實(shí)現(xiàn)。
在ActiveX控件中應(yīng)用WinInet類編寫FTP客戶端上傳程序,基本步驟如下:
(1)建立CInternetSession對象;
(2)使用CInternetSession::GetFtpConnection連接到FTP服務(wù)器;
(3)使用上一步返回的CFtpConnection對象的CftpConnection::SetCurrentDire_tory設(shè)置當(dāng)前目錄;
(4)使用CFtpConnection::OpenFile打開文件,在打開文件的同時(shí)也就設(shè)定了傳輸模式是二進(jìn)制還是文本方式;
(5)用上一步得到的CInternetFile的CinternetFile::Write向服務(wù)器寫數(shù)據(jù),通常要在寫數(shù)據(jù)前將本地文件讀入緩沖區(qū);
(6)使用CinternetException來處理可能遇到的錯(cuò)誤;
(7)當(dāng)上傳完成后,釋放CInternetSession對象。
1.在測試系統(tǒng)中調(diào)用ActiveX控件
在客戶端IE瀏覽器中正確顯示包含ActiveX控件的HTML頁面,必須事先在機(jī)器上已經(jīng)注冊了該ActiveX控件,否則頁面上的ActiveX控件不能顯示,這種做法顯然不適合在Internet上使用,系統(tǒng)設(shè)計(jì)時(shí)不希望瀏覽器用戶找到該ActiveX控件并注冊到客戶機(jī)上。為了解決這個(gè)問題,可使用Object標(biāo)記的codebase屬性指定控件的代碼位置,在程序中使用如下代碼:
通過以上代碼指定了控件程序地址為“http://192.168.106.24/050810/Oral_Test_Control.ocx”,當(dāng)瀏覽器遇到該語句時(shí),會把codebase指定的程序下載到本地,然后調(diào)用組件程序的自動注冊入口函數(shù)到當(dāng)前系統(tǒng)中。
2.多種試題類型的實(shí)現(xiàn)
本系統(tǒng)設(shè)計(jì)的試題有4種類型:文字試題、語音試題、視頻試題和圖片試題。這些試題都是基于WEB來實(shí)現(xiàn)的。通過設(shè)置試題的種類,在程序中進(jìn)行判斷具體要采用的試題形式。
文字試題采用.txt格式,即使客戶機(jī)沒有安裝office,也可以運(yùn)行。語音試題采用.mp3格式,也可以采用.wav格式,但是.mp3格式的文件較小,更適合網(wǎng)絡(luò)傳輸。目前市面上的外語聽力材料多是.mp3格式,本系統(tǒng)采用這種格式的語音試題便于題庫的更新和修改。視頻試題采用.avi格式,視頻的界面大小設(shè)置為640*480。圖片試題采用.jpg或者.gif格式,不建議使用.bmp格式。
根據(jù)實(shí)際的需要,試題閱讀時(shí)間是事先指定的,因此,試題頁面paper.asp根據(jù)閱讀時(shí)間的要求定時(shí)跳轉(zhuǎn)到下一頁,即考試頁面exam.asp,只要在paper.asp文件之間加入以下代碼:
其中:"<%=t_read_time%>"為停留的秒數(shù),從數(shù)據(jù)庫中讀出的數(shù)值,exam.as是將要跳轉(zhuǎn)到的頁面。
教師如要增加、修改或刪除試題,只需登陸“修改試題”板塊,就可以進(jìn)行相應(yīng)操作。
在考試之前,教師需要做一些準(zhǔn)備工作,登陸“參數(shù)設(shè)置”板塊設(shè)置測試必需的參數(shù),如試題閱讀時(shí)間、答題時(shí)間、臨時(shí)文件夾路徑等,并建立試題。學(xué)生進(jìn)入口語測試系統(tǒng)的流程如下:
1.學(xué)生登陸界面
學(xué)生登陸口語測試系統(tǒng),輸入姓名和學(xué)號,符合輸入規(guī)則時(shí),登陸成功。
2.試題界面
根據(jù)事先設(shè)定試題閱讀時(shí)間和試題類型,試題界面出現(xiàn),一定時(shí)間后網(wǎng)頁將自動跳轉(zhuǎn)到答題界面。圖2,圖3顯示的分別是圖片試題和文字試題:
圖2 圖片試題
圖3 文字試題
3.答題界面
按下ActiveX控件的“考試開始”按鈕后,學(xué)生就可以對著麥克風(fēng)完成口語的錄音。按下“結(jié)束”按鈕后,學(xué)生錄音文件上傳到服務(wù)器。如在規(guī)定的答題時(shí)間結(jié)束時(shí),學(xué)生沒有按下“結(jié)束”按鈕,控件會強(qiáng)制結(jié)束錄音,錄音文件自動上傳到服務(wù)器。
本文介紹了網(wǎng)絡(luò)口語測試系統(tǒng)的特點(diǎn)和測試系統(tǒng)中試題的多種實(shí)現(xiàn)形式(文字試題、語音試題、視頻試題等)。該系統(tǒng)可以全面考查學(xué)生的口語水平,文中詳細(xì)說明了運(yùn)用ActiveX技術(shù)實(shí)現(xiàn)錄音和文件上傳功能,由于ActiveX控件具有跨平臺性和復(fù)用性,本系統(tǒng)開發(fā)的ActiveX控件也可以應(yīng)用在其他應(yīng)用程序中,完成更為復(fù)雜的應(yīng)用功能的開發(fā),具有廣闊的應(yīng)用前景。
[1]胡峪,劉靜.Visual C++編程技巧與示例[M].陜西:西安電子科技大學(xué)出版社,2000
[2]余英,梁剛.Visual C++實(shí)踐與提高—COM和COM+篇[M].北京:中國鐵道出版社,2001
[3]云舟工作室.精通ASP3.0網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2001
ActiveX control applied in network oral test system
Ji Feng
Zhuhai city polytechnic, Zhuhai, 519090, China
This article introduces the network oral test system used for foreign language oral test. Many kinds of oral test questions: words, voice, video, etc. are implemented based on Web. Further, ActiveX technique is used to finish recording and file transporting.
network oral test; ActiveX control; VC++6.0
2009-07-27
吉鳳,碩士。