全国服务热线 : 4000-020-230

当前位置:首页 > 技术支持 > 技术文章

技术文章 产品知识 下载中心

技术文章

如何自动测试欧视迈(OZEAM)全数字可视对讲系统软件的稳定性?
发布日期:2012-03-15 15:25:00     作者:    已有  阅读过本文

     摘要:本文阐述了一种模拟触摸屏自动点屏和模拟按键事件的方法,利用定时器实现自动测试欧视迈全数字可视对讲系统软件的稳定性,减少测试人员的工作量。

        关键词:自动测试 软件稳定性 全数字可视对讲系统 欧视迈 OZEAM模拟触摸屏点屏 模拟按键事件

 

     我们在研发欧视迈(OZEAM)全数字可视对讲系统应用软件时,必须对软件的稳定性进行测试。稳定性测试是在保证功能完整正确的前提下,必不可少的一项测试内容,通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。

 

    下面针对WINCE下有界面和按键功能的程序,介绍一种模拟触摸屏自动点屏和模拟按键事件的方法,从而测试程序稳定性。

 

    一.利用函数mouse_event模拟触摸屏触摸事件

    函数功能:该函数综合鼠标击键和鼠标动作。

  函数原型:

  VOID mouse_event(

  DWORD dwFlags, // motion and click options

  DWORD dx, // horizontal position or change

  DWORD dy, // vertical position or change

  DWORD dwData, // wheel movement

  ULONG_PTR dwExtraInfo // application-defined information

  );

  参数:

  dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合:

  MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分。

  MOUSEEVENTF_MOVE:表明发生移动。

  MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。

  MOUSEEVENTF_LEFTUP:表明松开鼠标左键。

  MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。

  MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。

  MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。

  MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。

  MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。

  dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。

  dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。

  dwData:如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。

  如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。

  dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessgeExtraInfo来获得此附加信息。

  返回值:无。

  备注:如果鼠标被移动,用设置MOUSEEVENTF_MOVE来表明,dX和dy保留移动的信息。给出的信息是绝对或相对整数值。

  如果指定了MOUSEEVENTF_ABSOLUTE值,则dX和dy含有标准化的绝对坐标,其值在0到65535之间。事件程序将此坐标映射到显示表面。坐标(0,0)映射到显示表面的左上角,(65535,65535)映射到右下角。

  如果没指定MOUSEEVENTF_ABSOLUTE,dX和dy表示相对于上次鼠标事件产生的位置(即上次报告的位置)的移动。正值表示鼠标向右(或下)移动;负值表示鼠标向左(或上)移动。

  鼠标的相对移动服从鼠标速度和加速度等级的设置,一个最终用户用鼠标控制面板应用程序来设置这些值,应用程序用函数SystemParameterslnfo来取得和设置这些值。

  在应用加速时系统对指定相对鼠标移动提供了两个测试。如果指定的沿X轴y轴的距离比第一个鼠标阈值大,并且鼠标的加速等级非零,则操作系统将距离加倍。如果指定的沿X轴或y轴的距离比第二个鼠标阈值大,并且鼠标的加速等级为2,则操作系统将从第一个阈测试得来的距离加倍。这样就允许操作系统将指定鼠标沿X轴或y轴的相对位移加到4倍。

  一旦应用了加速,系统用期望的鼠标速度换算合成的值。鼠标速度的范围是从1(最慢)到20(最快),并代表基于鼠标移动的距离指示符移动的数量。缺省值是10,表示对鼠标的移动设有附加的修改。

  函数mouse_event需要用的应用程序用来合成鼠标事件。也被应用程序用来取得鼠标位置和鼠标按键状态之外的鼠标信息。例如,想将基于画笔的信息传给自己的应用程序,可以写一个直接与输入板硬件通信的动态键接库(DLL),获得附加的信息,并保存到一个队列中。DLL然后调用 mouse_event,用标准按键和x/y位置数据,并在参数dwExtralnfo设置排列的附加信息的指针或索引。当应用程序需要附加信息时,调用 DLL(连同存贮在dwEXtralnfo中的指针或索引),则DLL返回附加信息。

Windows CE:Windows CE不支持参数 dwFlags取MOUSE EVENTF WHEEL常数。

 

    下面是模拟随意点击触摸的例子:

POINT p = {0,0};//定义一个坐标

// w_screen 为触摸屏分辨率宽,h_screen为触摸屏分辨率高,也可自定义范围

p.x = rand()%w_screen;//x横坐标

p.y = rand()%h_screen;//y纵坐标

::SetCursorPos(p.x,p.y);//将光标移动到p坐标位置

mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//模拟触摸屏消息

 

 

二.利用keybd_event如何模拟按键事件

 

    函数原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo)

 

参数:  

    bVk:定义一个虚据拟键码。键码值必须在1~254之间。  

    bScan:定义该键的硬件扫描码。  

    dwFlags:定义函数操作的名个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位:  

    KEYEVENTF_EXETENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。

    KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下

    KEYEVENTF_SILENT:使用该标志模拟击键,而不产生敲击的声音。

    dwExtralnfo:定义与击键相关的附加的32位值。  

   

返回值:

    该函数无返回值。  

备注:

    尽管keybd_event传递一个与OEM相关的硬件扫描码给系统,但应用程序不能用此扫描码。系统在内部将扫描码转换成虚拟键码,并且在传送给应用程序前清除键码的UP/down位。应用程序可以摸拟PRINTSCREEN键的按下来获得一个屏幕快照,并把它存放到剪切板中。若要做到这一点,则要将keybd_event的bVk参数置为VK_SNAPSHOT,bScan参数置为0(用以获得全屏快照)或hScan置为1(仅获得活动窗口的快照)。WINCE:WindowsCE支持dwFlags参数附加的标志位。即使用KEYEVENTF_SILENT标志模拟击键,而不产生敲击的声音。WINCE不支持KEYEVENTF_EXTENDEDKEY标志。

 

//模拟按键VK_NUMPAD7消息

keybd_event( VK_NUMPAD7,1,0,0); 

keybd_event( VK_NUMPAD7,1,KEYEVENTF_KEYUP,0);

 

 

//模拟重启

keybd_event (VK_OFF, 0, KEYEVENTF_SILENT, 0);   

keybd_event (VK_OFF, 0, KEYEVENTF_SILENT|KEYEVENTF_KEYUP, 0);

 

三.利用定时器实现自动测试

    如何实现自动呢,方法很多,其中可以通过SetTimer来设置一个定时器,设置需要模拟事件发生频率,定时的模拟事件。

设置定时器,可在OnTimer实现模拟触摸屏和软键盘(或机械按键)时间,从而达到自动测试的效果。

 

   我们在测试欧视迈(OZEAM)全数字可视对讲系统软件时利用了以上方法,大大地减轻了测试人员的工作量,同时也保证了软件的健壮性。


返回
上一篇  如何辨别真假全数字可视对讲系统?
下一篇  EPON在欧视迈(OZEAM)全数字可视对讲系统中的应用
【推荐阅读】

24小时全国服务热线:4000-020-230

关注我们:
©2016 广州市欧智智能科技有限公司 版权所有.All Rights Reserved.      粤ICP备10043508号-1
网络支持:艾迪品牌策划设计
尊敬的客户,您是第【{visits:all}】访客
业务服务
客服电话

4000-020-230