




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
使用tcl實(shí)現(xiàn)自動(dòng)化測(cè)試原理介紹第一頁,共24頁。培訓(xùn)目的為什么需要開展這項(xiàng)培訓(xùn)?針對(duì)tcl的使用,部門已經(jīng)組織過多次學(xué)習(xí),包括培訓(xùn)、考試等方式,但整體效果不是很理想,只有一小部分人掌握比較好。究其原因,主要可能有:一、暫時(shí)用不到,只是被動(dòng)地進(jìn)行了一些了解,未主動(dòng)弄清楚編好一條腳本的來龍去脈;二、簡(jiǎn)要的語法看起來很簡(jiǎn)單,也能模仿別人的腳本進(jìn)行簡(jiǎn)單編寫,但由于整體原理不清楚,無法深入編寫腳本。
這次又進(jìn)行tcl的培訓(xùn),主要是因?yàn)槲覀兏鱾€(gè)項(xiàng)目(中轉(zhuǎn)臺(tái)、同播、DS-6801、TD500)的自動(dòng)化測(cè)試是二、三季度重點(diǎn)要加強(qiáng)的工作,tcl腳本編寫能力的提高迫在眉睫。
與以往的tcl培訓(xùn)不同的是,本次培訓(xùn)主要從我們使用到的tcl自動(dòng)化測(cè)試的控制原理上進(jìn)行介紹。第二頁,共24頁。使用tcl通過GPIB控制儀器1使用tcl通過串口控制對(duì)講機(jī)2使用tcl通過USB控制對(duì)講機(jī)3目錄第三頁,共24頁。關(guān)于GPIBGPIB(General-PurposeInterfaceBus)通用接口總線,它精確定義了控制器和儀器的通訊方式,可編程儀器的標(biāo)準(zhǔn)命令,采納了IEEE488.2定義的命令結(jié)構(gòu),創(chuàng)建了一整套編程命令。使用一臺(tái)計(jì)算機(jī),通過GPIB控制卡可以實(shí)現(xiàn)和一臺(tái)或多臺(tái)儀器的聽、講、控功能,并組成儀器系統(tǒng),使我們的測(cè)試和測(cè)量工作變得快捷、簡(jiǎn)便、精確和高效。GPIB對(duì)應(yīng)的是一種工程控制用的協(xié)議,一般可被任何編程語言如VB、VC、C++實(shí)現(xiàn)電腦對(duì)儀器的控制,也有儀器制造商開發(fā)自己的語言支持GPIB,如NI的Labview。GPIBGPIB簡(jiǎn)介第四頁,共24頁。8921AGPIBProgrammingmanual常用的操作我們使用的綜測(cè)儀提供了GPIB編程手冊(cè),里面提供的“GPIBCommands”可供我們?cè)L問大部分綜測(cè)儀上的參數(shù),我們可在里面的語法圖(表)上查到。GPIB命令是由語法圖(表)中的各個(gè)字段組成的字符串,如:":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……綜測(cè)儀的GPIB手冊(cè)命令格式第五頁,共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)閉設(shè)備進(jìn)入相關(guān)界面進(jìn)行設(shè)置或讀取數(shù)據(jù)打開設(shè)備第六頁,共24頁。Drv_8921A.tclsetGpibAdrs1#使用GPIB控制綜測(cè)儀procctrl_8921A{}{globalGpibAdrsglobaldev_adrspackagerequiregpib;#GPIB控制
setdev_adrs[gpibopen-address$GpibAdrs]gpibclear-device$dev_adrs}……Api_8921A.tclsourceDrv_8921A.tcl#------------------------------------------##如下為測(cè)試某項(xiàng)功能對(duì)應(yīng)的綜測(cè)儀界面設(shè)置##這里的TX、RX主要指的是綜測(cè)儀的發(fā)射和接收#
#------------------------------------------##初始化綜測(cè)儀,所做的工作包括使能GPIB控制綜測(cè)儀,對(duì)綜測(cè)儀進(jìn)行復(fù)位procinit_8921A{}{ctrl_8921Areset_8921A}……對(duì)于綜測(cè)儀的常用操作,我們已使用tcl封裝了一些常用的函數(shù),供我們?cè)诰帉懩_本時(shí)方便調(diào)用。其中Drv_8921A.tcl里面的函數(shù)為直接對(duì)綜測(cè)儀的基本操作,Api_8912A.tcl調(diào)用了Drv_8921A.tcl里面的函數(shù),提供一些常用功能的函數(shù)。常用綜測(cè)儀的tcl操作庫第七頁,共24頁。使用tcl通過GPIB控制儀器1使用tcl通過串口控制對(duì)講機(jī)2使用tcl通過USB控制對(duì)講機(jī)3目錄第八頁,共24頁。串口操作在使用串口前先進(jìn)行參數(shù)配置并指定端口號(hào);然后需要按哪個(gè)按鍵,就發(fā)對(duì)應(yīng)的按鍵命令;使用完后,進(jìn)行關(guān)閉串口。通信協(xié)議tcl串口以前的模擬對(duì)講機(jī)提供了虛擬按鍵命令,上位機(jī)通過串口向?qū)χv機(jī)發(fā)相關(guān)命令,對(duì)講機(jī)就會(huì)響應(yīng)對(duì)應(yīng)的按鍵操作。關(guān)鍵函數(shù)所有操作涉及的函數(shù)較少,最主要的函數(shù)為向串口發(fā)送數(shù)據(jù),該函數(shù)已經(jīng)封裝好,只需要將發(fā)送數(shù)據(jù)填進(jìn)去。tcl通過串口控制對(duì)講機(jī)第九頁,共24頁。虛擬按鍵命令介紹命令格式波特率設(shè)定:38400無校驗(yàn),數(shù)據(jù)位8停止位2,多字節(jié)的低位在前,高位在后。上位機(jī)->下位機(jī):
數(shù)據(jù)頭(0x02)
+操作碼+虛擬按鍵標(biāo)識(shí)+按鍵類型+具體按鍵+按下類別+數(shù)據(jù)尾(0x03)
下位機(jī)->上位機(jī):數(shù)據(jù)頭(0x02)
+返回碼+是否成功+操作碼+具體按鍵+數(shù)據(jù)尾(0x03)SK1Short上位機(jī):Operate+Key('k')+FuncKey(1)+SK1+Short0x020x4F0x6B0x010x000B0x0203下位機(jī):cknowledge+Yes+Operate+Key('k')0x020x410x610x4F0x6B03第十頁,共24頁。操作流程使用串口編寫腳本setcomRate38400;#comRate波特率setcomParityBitn;#comParityBit校驗(yàn)位setcomDataBit8;#comDataBit數(shù)據(jù)位setcomStopBit2;#comStopBit停止位setcomPortCOM1:;#comPort串口號(hào)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中,我們將全局變量、各個(gè)虛擬按鍵命令的數(shù)據(jù)都已定義好,并提供串口操作的函數(shù)和一些常用的判斷函數(shù),在寫具體測(cè)試腳本的時(shí)候,包含Global.tcl文件,即可方便調(diào)用,一定程度上減輕了測(cè)試腳本編寫的繁瑣程度。最關(guān)鍵的函數(shù)send_expect,包含了4個(gè)參數(shù),分別為:fh:已打開的串口outstr:要向?qū)χv機(jī)發(fā)送的虛擬按鍵指令(對(duì)應(yīng)的字符串)respond:對(duì)講機(jī)返回的數(shù)據(jù)seconds:等待的時(shí)間(1對(duì)應(yīng)500ms)已有的封裝(或公共處理)第十二頁,共24頁。一個(gè)腳本范例如下示例不斷按PTT,看是否會(huì)出現(xiàn)長(zhǎng)發(fā)射#包含文件Global.tcl、Api_8921A.tcl,使腳本能夠調(diào)用該文件中的接口sourceGlobal.tclsourceApi_8921A.tcl#初始化8921Ainit_8921Aafter500#綜測(cè)儀進(jìn)入接收界面set_8921A_forRXafter500#打開串口setfh[open$comPortRDWR]fconfigure$fh-blocking0-bufferingnone\-mode$comRate,$comParityBit,$comDataBit,$comStopBit-translationbinary-eofchar{}after3000setpassNum0setfailNum0setcount0第十三頁,共24頁。一個(gè)腳本范例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通過串口控制對(duì)講機(jī)2使用tcl通過USB控制對(duì)講機(jī)3目錄第十五頁,共24頁。關(guān)于HRCPHRCP(HYTRadioControlProtocol)為HYT配件、PC機(jī)或第三方設(shè)備與HYT對(duì)講機(jī)通信的協(xié)議(目前只在DMR機(jī)型使用)。HRCP是一個(gè)向應(yīng)用層提供網(wǎng)絡(luò)通信保障以及控制指令集的應(yīng)用層協(xié)議。針對(duì)自動(dòng)化測(cè)試,它提供了虛擬按鍵、信道/組切換、音量調(diào)節(jié)、外圍現(xiàn)象(LED、LCD對(duì)應(yīng)數(shù)據(jù))的返回等協(xié)議。HRCP支持的物理鏈路可以是USB、UART、SOCKET,目前我們自動(dòng)化測(cè)試使用的是USB,當(dāng)然,這并不關(guān)鍵,因?yàn)閼?yīng)用軟件組提供了HRCP的函數(shù)庫,我們可以很方便調(diào)用。HRCPHRCP簡(jiǎn)介第十六頁,共24頁。HRCPWin32庫關(guān)鍵函數(shù)該庫為Win32環(huán)境下的應(yīng)用層提供HRCP指令收發(fā)數(shù)據(jù),通過調(diào)用其提供的函數(shù),應(yīng)用軟件或我們的測(cè)試腳本可以方便地與DMR對(duì)講機(jī)通信,根據(jù)收發(fā)數(shù)據(jù)對(duì)對(duì)講機(jī)進(jìn)行控制和判斷它的一些狀態(tài)、外圍現(xiàn)象。HRCPWin32庫提供了兩種方式與對(duì)講機(jī)通信非阻塞: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下,對(duì)普通的DLL重新進(jìn)行封裝,按照規(guī)定的格式將tcl指令與原DLL的函數(shù)綁定,在測(cè)試腳本中,只需要load新封裝的DLL,就可以自由調(diào)用里面的tcl指令。VC下擴(kuò)展tcl命令Ffidl是國外高手已編寫好的,方便在tcl平臺(tái)下調(diào)用C函數(shù)的庫,只要load該庫和要使用的DLL庫,在tcl腳本中,用Ffidl提供的方式將tcl指令與要使用的DLL中的函數(shù)綁定,就可以自由調(diào)用該tcl指令。使用tcl的Ffidltcl調(diào)用DllHRCPWin32庫是一個(gè)在VC環(huán)境下編寫的DLL庫,我們要在tcl中調(diào)用相關(guān)的函數(shù),需要命名tcl指令與那些函數(shù)綁定起來,才能夠在自動(dòng)測(cè)試腳本中調(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}……針對(duì)HRCP提供給自動(dòng)化測(cè)試的協(xié)議,我們已在Drv_Radio_HS.tcl文件中調(diào)用HRCPWin32DLL的相關(guān)函數(shù),進(jìn)行了最基本的PC端與對(duì)講機(jī)端的數(shù)據(jù)交互處理。Api_Radio_HS.tcl進(jìn)一步對(duì)Drv_Radio_HS.tcl的函數(shù)進(jìn)行封裝,為測(cè)試腳本提供按鍵、音量調(diào)節(jié)、LED、LCD、Tone等的操作和判斷的函數(shù)。DMR中常用的tcl函數(shù)庫第十九頁,共24頁。操作流程DMR自動(dòng)測(cè)試腳本的編寫#連接對(duì)講機(jī)setTotalRadioNum[connect_all_radio]#進(jìn)入測(cè)試模式,以便打開廣播setRadioTestMode"015A"EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModesetRadioTestMode"0000" EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModedisconnect_all_radio退出測(cè)試模式和關(guān)閉連接向串口發(fā)送命令初始化對(duì)講機(jī)ZoneChnl_set$RadioA15ptt_on$RadioAafter1000setExpectLed[Led_Data_Get$TxCarrierLed$Open]setExpectMic[Mic_Data_Get$Open]…………對(duì)講機(jī)操作、檢查狀態(tài)等第二十頁,共24頁。一個(gè)腳本范例#包含文件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#連接所有對(duì)講機(jī),并進(jìn)行簡(jiǎn)單判斷setTotalRadioNum[connect_all_radio]if{0==$TotalRadioNum}{ disconnect_all_radio setActionTypeFlag"TestEnd" setresul
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋梁架設(shè)知識(shí)培訓(xùn)課件
- 畜禽養(yǎng)殖合作合同范本
- 成都公司轉(zhuǎn)讓合同范本
- 監(jiān)制服務(wù)合同書
- 網(wǎng)絡(luò)直播老師合同范本
- 物業(yè)車棚維修合同范本
- 房產(chǎn)代理中介合同范本
- 工廠出租設(shè)備合同范本
- 撲火隊(duì)基本知識(shí)培訓(xùn)課件
- 包裝承攬合同范例范例
- 國開電大軟件工程形考作業(yè)3參考答案
- 通用電子嘉賓禮薄
- 部編版小學(xué)語文五年級(jí)下冊(cè)第4單元基礎(chǔ)知識(shí)檢測(cè)卷-(含答案)
- Unit 5 Understanding ideas Nature in architecture -高中英語外研版(2019)選擇性必修第三冊(cè)
- 王陽明心學(xué)課件
- GB/T 11982.2-2015聚氯乙烯卷材地板第2部分:同質(zhì)聚氯乙烯卷材地板
- 消化性潰瘍理論知識(shí)試題含答案
- 學(xué)校食堂廉政風(fēng)險(xiǎn)責(zé)任書
- 中國石油大學(xué)(華東)PPT模板
- 河流納污能力計(jì)算
- 液壓與氣壓傳動(dòng)完整版課件
評(píng)論
0/150
提交評(píng)論