使用tcl實現(xiàn)自動化測試原理介紹_第1頁
使用tcl實現(xiàn)自動化測試原理介紹_第2頁
使用tcl實現(xiàn)自動化測試原理介紹_第3頁
使用tcl實現(xiàn)自動化測試原理介紹_第4頁
使用tcl實現(xiàn)自動化測試原理介紹_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

使用tcl實現(xiàn)自動化測試原理介紹第一頁,共24頁。培訓目的為什么需要開展這項培訓?針對tcl的使用,部門已經(jīng)組織過多次學習,包括培訓、考試等方式,但整體效果不是很理想,只有一小部分人掌握比較好。究其原因,主要可能有:一、暫時用不到,只是被動地進行了一些了解,未主動弄清楚編好一條腳本的來龍去脈;二、簡要的語法看起來很簡單,也能模仿別人的腳本進行簡單編寫,但由于整體原理不清楚,無法深入編寫腳本。

這次又進行tcl的培訓,主要是因為我們各個項目(中轉(zhuǎn)臺、同播、DS-6801、TD500)的自動化測試是二、三季度重點要加強的工作,tcl腳本編寫能力的提高迫在眉睫。

與以往的tcl培訓不同的是,本次培訓主要從我們使用到的tcl自動化測試的控制原理上進行介紹。第二頁,共24頁。使用tcl通過GPIB控制儀器1使用tcl通過串口控制對講機2使用tcl通過USB控制對講機3目錄第三頁,共24頁。關(guān)于GPIBGPIB(General-PurposeInterfaceBus)通用接口總線,它精確定義了控制器和儀器的通訊方式,可編程儀器的標準命令,采納了IEEE488.2定義的命令結(jié)構(gòu),創(chuàng)建了一整套編程命令。使用一臺計算機,通過GPIB控制卡可以實現(xiàn)和一臺或多臺儀器的聽、講、控功能,并組成儀器系統(tǒng),使我們的測試和測量工作變得快捷、簡便、精確和高效。GPIB對應的是一種工程控制用的協(xié)議,一般可被任何編程語言如VB、VC、C++實現(xiàn)電腦對儀器的控制,也有儀器制造商開發(fā)自己的語言支持GPIB,如NI的Labview。GPIBGPIB簡介第四頁,共24頁。8921AGPIBProgrammingmanual常用的操作我們使用的綜測儀提供了GPIB編程手冊,里面提供的“GPIBCommands”可供我們訪問大部分綜測儀上的參數(shù),我們可在里面的語法圖(表)上查到。GPIB命令是由語法圖(表)中的各個字段組成的字符串,如:":DISPTX"":AFG1:OUTP:STATON"已有人封裝好了GPIB常用操作的tcl庫(GPIB-Tcl),我們使用相關(guān)函數(shù)即可。(可在Script.NET的tcl文檔中查到GPIB-Tcl庫)gpibopen-address$GpibAdrsgpibwrite-device$dev_adrs-message":MEAS:AFR:FREQ?"gpibread-device$dev_adrs-modeascii……綜測儀的GPIB手冊命令格式第五頁,共24頁。gpibwrite-device$dev_adrs-message"*RST"after1000gpibwrite-device$dev_adrs-message":DISPRX"setFreq1410.125setstrFreq[format":RFG:FREQ%sMHz"$Freq1]gpibwrite-device$dev_adrs-message$strFreq……gpibwrite-device$dev_adrs-message":DISPTX"after2000gpibwrite-device$dev_adrs-message":MEAS:RFR:FREQ:ABS?"setTXFreq[gpibread-device$dev_adrs-modeascii]……操作流程tcl控制GPIB的示例setGpibAdrs1packagerequiregpibsetdev_adrs[gpibopen-address$GpibAdrs]gpibclear-device$dev_adrsgpibclose–device$dev_adrs關(guān)閉設備進入相關(guān)界面進行設置或讀取數(shù)據(jù)打開設備第六頁,共24頁。Drv_8921A.tclsetGpibAdrs1#使用GPIB控制綜測儀procctrl_8921A{}{globalGpibAdrsglobaldev_adrspackagerequiregpib;#GPIB控制

setdev_adrs[gpibopen-address$GpibAdrs]gpibclear-device$dev_adrs}……Api_8921A.tclsourceDrv_8921A.tcl#------------------------------------------##如下為測試某項功能對應的綜測儀界面設置##這里的TX、RX主要指的是綜測儀的發(fā)射和接收#

#------------------------------------------##初始化綜測儀,所做的工作包括使能GPIB控制綜測儀,對綜測儀進行復位procinit_8921A{}{ctrl_8921Areset_8921A}……對于綜測儀的常用操作,我們已使用tcl封裝了一些常用的函數(shù),供我們在編寫腳本時方便調(diào)用。其中Drv_8921A.tcl里面的函數(shù)為直接對綜測儀的基本操作,Api_8912A.tcl調(diào)用了Drv_8921A.tcl里面的函數(shù),提供一些常用功能的函數(shù)。常用綜測儀的tcl操作庫第七頁,共24頁。使用tcl通過GPIB控制儀器1使用tcl通過串口控制對講機2使用tcl通過USB控制對講機3目錄第八頁,共24頁。串口操作在使用串口前先進行參數(shù)配置并指定端口號;然后需要按哪個按鍵,就發(fā)對應的按鍵命令;使用完后,進行關(guān)閉串口。通信協(xié)議tcl串口以前的模擬對講機提供了虛擬按鍵命令,上位機通過串口向?qū)χv機發(fā)相關(guān)命令,對講機就會響應對應的按鍵操作。關(guān)鍵函數(shù)所有操作涉及的函數(shù)較少,最主要的函數(shù)為向串口發(fā)送數(shù)據(jù),該函數(shù)已經(jīng)封裝好,只需要將發(fā)送數(shù)據(jù)填進去。tcl通過串口控制對講機第九頁,共24頁。虛擬按鍵命令介紹命令格式波特率設定:38400無校驗,數(shù)據(jù)位8停止位2,多字節(jié)的低位在前,高位在后。上位機->下位機:

數(shù)據(jù)頭(0x02)

+操作碼+虛擬按鍵標識+按鍵類型+具體按鍵+按下類別+數(shù)據(jù)尾(0x03)

下位機->上位機:數(shù)據(jù)頭(0x02)

+返回碼+是否成功+操作碼+具體按鍵+數(shù)據(jù)尾(0x03)SK1Short上位機:Operate+Key('k')+FuncKey(1)+SK1+Short0x020x4F0x6B0x010x000B0x0203下位機:cknowledge+Yes+Operate+Key('k')0x020x410x610x4F0x6B03第十頁,共24頁。操作流程使用串口編寫腳本setcomRate38400;#comRate波特率setcomParityBitn;#comParityBit校驗位setcomDataBit8;#comDataBit數(shù)據(jù)位setcomStopBit2;#comStopBit停止位setcomPortCOM1:;#comPort串口號setfh[open$comPortRDWR]fconfigure$fh-blocking0-bufferingnone\-mode$comRate,$comParityBit,$comDataBit,$comStopBit\-translationbinary-eofchar{}send_exp_end$fhclose$fh關(guān)閉串口向串口發(fā)送命令配置通訊通道setSK1_On"\x02\x4F\x6B\x01\x0B\x00\x02\x03“setSK1_Resp"\x02\x41\x61\x4F\x6B\x03“setwaitSecs1send_expect$fh$SK1_On$SK1_Resp$waitSecs第十一頁,共24頁。Global.tclsend_expect函數(shù)在Global.tcl中,我們將全局變量、各個虛擬按鍵命令的數(shù)據(jù)都已定義好,并提供串口操作的函數(shù)和一些常用的判斷函數(shù),在寫具體測試腳本的時候,包含Global.tcl文件,即可方便調(diào)用,一定程度上減輕了測試腳本編寫的繁瑣程度。最關(guān)鍵的函數(shù)send_expect,包含了4個參數(shù),分別為:fh:已打開的串口outstr:要向?qū)χv機發(fā)送的虛擬按鍵指令(對應的字符串)respond:對講機返回的數(shù)據(jù)seconds:等待的時間(1對應500ms)已有的封裝(或公共處理)第十二頁,共24頁。一個腳本范例如下示例不斷按PTT,看是否會出現(xiàn)長發(fā)射#包含文件Global.tcl、Api_8921A.tcl,使腳本能夠調(diào)用該文件中的接口sourceGlobal.tclsourceApi_8921A.tcl#初始化8921Ainit_8921Aafter500#綜測儀進入接收界面set_8921A_forRXafter500#打開串口setfh[open$comPortRDWR]fconfigure$fh-blocking0-bufferingnone\-mode$comRate,$comParityBit,$comDataBit,$comStopBit-translationbinary-eofchar{}after3000setpassNum0setfailNum0setcount0第十三頁,共24頁。一個腳本范例while{$count<10000}{#按PTT發(fā)射

send_expect$fh$PTTOn$PTTOn_Resp$waitSecsafter2000setbRst1[exist_RX_power]after200#松開PTTsend_expect$fh$PTTOff$PTTOff_Resp$waitSecsafter1500setbRst2[exist_RX_power]if{$bRst1==1&&$bRst2==0}{setpassNum[expr$passNum+1]}else{setfailNum[expr$failNum+1]}incrcountafter1000}#關(guān)閉串口send_exp_end$fhclose$fh第十四頁,共24頁。使用tcl通過GPIB控制儀器1使用tcl通過串口控制對講機2使用tcl通過USB控制對講機3目錄第十五頁,共24頁。關(guān)于HRCPHRCP(HYTRadioControlProtocol)為HYT配件、PC機或第三方設備與HYT對講機通信的協(xié)議(目前只在DMR機型使用)。HRCP是一個向應用層提供網(wǎng)絡通信保障以及控制指令集的應用層協(xié)議。針對自動化測試,它提供了虛擬按鍵、信道/組切換、音量調(diào)節(jié)、外圍現(xiàn)象(LED、LCD對應數(shù)據(jù))的返回等協(xié)議。HRCP支持的物理鏈路可以是USB、UART、SOCKET,目前我們自動化測試使用的是USB,當然,這并不關(guān)鍵,因為應用軟件組提供了HRCP的函數(shù)庫,我們可以很方便調(diào)用。HRCPHRCP簡介第十六頁,共24頁。HRCPWin32庫關(guān)鍵函數(shù)該庫為Win32環(huán)境下的應用層提供HRCP指令收發(fā)數(shù)據(jù),通過調(diào)用其提供的函數(shù),應用軟件或我們的測試腳本可以方便地與DMR對講機通信,根據(jù)收發(fā)數(shù)據(jù)對對講機進行控制和判斷它的一些狀態(tài)、外圍現(xiàn)象。HRCPWin32庫提供了兩種方式與對講機通信非阻塞:voidWriteData(WORDOpcode,WORDDataLen,BYTE*Payload,BOOLbReturn=TRUE);voidSetRecvCallback(void(*CallbackFun)(WORD,WORD,WORD,BYTE*));阻塞:RECV_DATA*WriteDataWithWaitSignal(WORDOpcode,WORDDataLen,BYTE*Payload,BOOLbReturn=TRUE);HRCPWin32組件第十七頁,共24頁。tcl調(diào)用DLL在VC下,對普通的DLL重新進行封裝,按照規(guī)定的格式將tcl指令與原DLL的函數(shù)綁定,在測試腳本中,只需要load新封裝的DLL,就可以自由調(diào)用里面的tcl指令。VC下擴展tcl命令Ffidl是國外高手已編寫好的,方便在tcl平臺下調(diào)用C函數(shù)的庫,只要load該庫和要使用的DLL庫,在tcl腳本中,用Ffidl提供的方式將tcl指令與要使用的DLL中的函數(shù)綁定,就可以自由調(diào)用該tcl指令。使用tcl的Ffidltcl調(diào)用DllHRCPWin32庫是一個在VC環(huán)境下編寫的DLL庫,我們要在tcl中調(diào)用相關(guān)的函數(shù),需要命名tcl指令與那些函數(shù)綁定起來,才能夠在自動測試腳本中調(diào)用。第十八頁,共24頁。Drv_Radio_HS.tclsetExTCL.dllsetpath[format"%s%s"$scriptpath$]load$pathsetFfidl06.dllsetpath[format"%s%s"$scriptpath$]load$pathsetCharToUnicode.dllsetpath[format"%s%s"$scriptpath$]load$path……Api_Radio_HS.tclsetDrv_Radio_HS.tclsetpath[format"%s%s"$scriptpath$]source$pathsetstrFailCause""procconnect_all_radio{}{setrst[SocketInit] return$rst}……針對HRCP提供給自動化測試的協(xié)議,我們已在Drv_Radio_HS.tcl文件中調(diào)用HRCPWin32DLL的相關(guān)函數(shù),進行了最基本的PC端與對講機端的數(shù)據(jù)交互處理。Api_Radio_HS.tcl進一步對Drv_Radio_HS.tcl的函數(shù)進行封裝,為測試腳本提供按鍵、音量調(diào)節(jié)、LED、LCD、Tone等的操作和判斷的函數(shù)。DMR中常用的tcl函數(shù)庫第十九頁,共24頁。操作流程DMR自動測試腳本的編寫#連接對講機setTotalRadioNum[connect_all_radio]#進入測試模式,以便打開廣播setRadioTestMode"015A"EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModesetRadioTestMode"0000" EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModedisconnect_all_radio退出測試模式和關(guān)閉連接向串口發(fā)送命令初始化對講機ZoneChnl_set$RadioA15ptt_on$RadioAafter1000setExpectLed[Led_Data_Get$TxCarrierLed$Open]setExpectMic[Mic_Data_Get$Open]…………對講機操作、檢查狀態(tài)等第二十頁,共24頁。一個腳本范例#包含文件Api_Radio_HS.tcl、All_data_define.tcl,使腳本能夠調(diào)用文件中的函數(shù)、變量等setApi_Radio_HS.tclsetpath[format"%s%s"$scriptpath$]source$pathsetAll_data_define.tclsetpath[format"%s%s"$scriptpath$]source$path#連接所有對講機,并進行簡單判斷setTotalRadioNum[connect_all_radio]if{0==$TotalRadioNum}{ disconnect_all_radio setActionTypeFlag"TestEnd" setresul

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論