使用tcl实现自动化测试原理介绍_第1页
使用tcl实现自动化测试原理介绍_第2页
使用tcl实现自动化测试原理介绍_第3页
使用tcl实现自动化测试原理介绍_第4页
使用tcl实现自动化测试原理介绍_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用tcl实现自动化测试原理介绍第一页,共24页。培训目的为什么需要开展这项培训?针对tcl的使用,部门已经组织过多次学习,包括培训、考试等方式,但整体效果不是很理想,只有一小部分人掌握比较好。究其原因,主要可能有:一、暂时用不到,只是被动地进行了一些了解,未主动弄清楚编好一条脚本的来龙去脉;二、简要的语法看起来很简单,也能模仿别人的脚本进行简单编写,但由于整体原理不清楚,无法深入编写脚本。

这次又进行tcl的培训,主要是因为我们各个项目(中转台、同播、DS-6801、TD500)的自动化测试是二、三季度重点要加强的工作,tcl脚本编写能力的提高迫在眉睫。

与以往的tcl培训不同的是,本次培训主要从我们使用到的tcl自动化测试的控制原理上进行介绍。第二页,共24页。使用tcl通过GPIB控制仪器1使用tcl通过串口控制对讲机2使用tcl通过USB控制对讲机3目录第三页,共24页。关于GPIBGPIB(General-PurposeInterfaceBus)通用接口总线,它精确定义了控制器和仪器的通讯方式,可编程仪器的标准命令,采纳了IEEE488.2定义的命令结构,创建了一整套编程命令。使用一台计算机,通过GPIB控制卡可以实现和一台或多台仪器的听、讲、控功能,并组成仪器系统,使我们的测试和测量工作变得快捷、简便、精确和高效。GPIB对应的是一种工程控制用的协议,一般可被任何编程语言如VB、VC、C++实现电脑对仪器的控制,也有仪器制造商开发自己的语言支持GPIB,如NI的Labview。GPIBGPIB简介第四页,共24页。8921AGPIBProgrammingmanual常用的操作我们使用的综测仪提供了GPIB编程手册,里面提供的“GPIBCommands”可供我们访问大部分综测仪上的参数,我们可在里面的语法图(表)上查到。GPIB命令是由语法图(表)中的各个字段组成的字符串,如:":DISPTX"":AFG1:OUTP:STATON"已有人封装好了GPIB常用操作的tcl库(GPIB-Tcl),我们使用相关函数即可。(可在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关闭设备进入相关界面进行设置或读取数据打开设备第六页,共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主要指的是综测仪的发射和接收#

#------------------------------------------##初始化综测仪,所做的工作包括使能GPIB控制综测仪,对综测仪进行复位procinit_8921A{}{ctrl_8921Areset_8921A}……对于综测仪的常用操作,我们已使用tcl封装了一些常用的函数,供我们在编写脚本时方便调用。其中Drv_8921A.tcl里面的函数为直接对综测仪的基本操作,Api_8912A.tcl调用了Drv_8921A.tcl里面的函数,提供一些常用功能的函数。常用综测仪的tcl操作库第七页,共24页。使用tcl通过GPIB控制仪器1使用tcl通过串口控制对讲机2使用tcl通过USB控制对讲机3目录第八页,共24页。串口操作在使用串口前先进行参数配置并指定端口号;然后需要按哪个按键,就发对应的按键命令;使用完后,进行关闭串口。通信协议tcl串口以前的模拟对讲机提供了虚拟按键命令,上位机通过串口向对讲机发相关命令,对讲机就会响应对应的按键操作。关键函数所有操作涉及的函数较少,最主要的函数为向串口发送数据,该函数已经封装好,只需要将发送数据填进去。tcl通过串口控制对讲机第九页,共24页。虚拟按键命令介绍命令格式波特率设定:38400无校验,数据位8停止位2,多字节的低位在前,高位在后。上位机->下位机:

数据头(0x02)

+操作码+虚拟按键标识+按键类型+具体按键+按下类别+数据尾(0x03)

下位机->上位机:数据头(0x02)

+返回码+是否成功+操作码+具体按键+数据尾(0x03)SK1Short上位机:Operate+Key('k')+FuncKey(1)+SK1+Short0x020x4F0x6B0x010x000B0x0203下位机:cknowledge+Yes+Operate+Key('k')0x020x410x610x4F0x6B03第十页,共24页。操作流程使用串口编写脚本setcomRate38400;#comRate波特率setcomParityBitn;#comParityBit校验位setcomDataBit8;#comDataBit数据位setcomStopBit2;#comStopBit停止位setcomPortCOM1:;#comPort串口号setfh[open$comPortRDWR]fconfigure$fh-blocking0-bufferingnone\-mode$comRate,$comParityBit,$comDataBit,$comStopBit\-translationbinary-eofchar{}send_exp_end$fhclose$fh关闭串口向串口发送命令配置通讯通道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函数在Global.tcl中,我们将全局变量、各个虚拟按键命令的数据都已定义好,并提供串口操作的函数和一些常用的判断函数,在写具体测试脚本的时候,包含Global.tcl文件,即可方便调用,一定程度上减轻了测试脚本编写的繁琐程度。最关键的函数send_expect,包含了4个参数,分别为:fh:已打开的串口outstr:要向对讲机发送的虚拟按键指令(对应的字符串)respond:对讲机返回的数据seconds:等待的时间(1对应500ms)已有的封装(或公共处理)第十二页,共24页。一个脚本范例如下示例不断按PTT,看是否会出现长发射#包含文件Global.tcl、Api_8921A.tcl,使脚本能够调用该文件中的接口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发射

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}#关闭串口send_exp_end$fhclose$fh第十四页,共24页。使用tcl通过GPIB控制仪器1使用tcl通过串口控制对讲机2使用tcl通过USB控制对讲机3目录第十五页,共24页。关于HRCPHRCP(HYTRadioControlProtocol)为HYT配件、PC机或第三方设备与HYT对讲机通信的协议(目前只在DMR机型使用)。HRCP是一个向应用层提供网络通信保障以及控制指令集的应用层协议。针对自动化测试,它提供了虚拟按键、信道/组切换、音量调节、外围现象(LED、LCD对应数据)的返回等协议。HRCP支持的物理链路可以是USB、UART、SOCKET,目前我们自动化测试使用的是USB,当然,这并不关键,因为应用软件组提供了HRCP的函数库,我们可以很方便调用。HRCPHRCP简介第十六页,共24页。HRCPWin32库关键函数该库为Win32环境下的应用层提供HRCP指令收发数据,通过调用其提供的函数,应用软件或我们的测试脚本可以方便地与DMR对讲机通信,根据收发数据对对讲机进行控制和判断它的一些状态、外围现象。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调用DLL在VC下,对普通的DLL重新进行封装,按照规定的格式将tcl指令与原DLL的函数绑定,在测试脚本中,只需要load新封装的DLL,就可以自由调用里面的tcl指令。VC下扩展tcl命令Ffidl是国外高手已编写好的,方便在tcl平台下调用C函数的库,只要load该库和要使用的DLL库,在tcl脚本中,用Ffidl提供的方式将tcl指令与要使用的DLL中的函数绑定,就可以自由调用该tcl指令。使用tcl的Ffidltcl调用DllHRCPWin32库是一个在VC环境下编写的DLL库,我们要在tcl中调用相关的函数,需要命名tcl指令与那些函数绑定起来,才能够在自动测试脚本中调用。第十八页,共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提供给自动化测试的协议,我们已在Drv_Radio_HS.tcl文件中调用HRCPWin32DLL的相关函数,进行了最基本的PC端与对讲机端的数据交互处理。Api_Radio_HS.tcl进一步对Drv_Radio_HS.tcl的函数进行封装,为测试脚本提供按键、音量调节、LED、LCD、Tone等的操作和判断的函数。DMR中常用的tcl函数库第十九页,共24页。操作流程DMR自动测试脚本的编写#连接对讲机setTotalRadioNum[connect_all_radio]#进入测试模式,以便打开广播setRadioTestMode"015A"EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModesetRadioTestMode"0000" EnableAllRadioEnterTestMode$TotalRadioNum$RadioTestModedisconnect_all_radio退出测试模式和关闭连接向串口发送命令初始化对讲机ZoneChnl_set$RadioA15ptt_on$RadioAafter1000setExpectLed[Led_Data_Get$TxCarrierLed$Open]setExpectMic[Mic_Data_Get$Open]…………对讲机操作、检查状态等第二十页,共24页。一个脚本范例#包含文件Api_Radio_HS.tcl、All_data_define.tcl,使脚本能够调用文件中的函数、变量等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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论