<i id="nfnjz"><pre id="nfnjz"><del id="nfnjz"></del></pre></i>
    <delect id="nfnjz"></delect>

      <i id="nfnjz"></i>

        <font id="nfnjz"><dl id="nfnjz"><progress id="nfnjz"></progress></dl></font>
        <p id="nfnjz"></p>
        <meter id="nfnjz"></meter><ol id="nfnjz"><ruby id="nfnjz"><meter id="nfnjz"></meter></ruby></ol>
        <i id="nfnjz"><output id="nfnjz"></output></i>

          <dfn id="nfnjz"></dfn>

          <big id="nfnjz"><video id="nfnjz"></video></big>
          <dl id="nfnjz"></dl>
          全國服務熱線 : 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

          久久精品日日躁夜夜躁

            <i id="nfnjz"><pre id="nfnjz"><del id="nfnjz"></del></pre></i>
            <delect id="nfnjz"></delect>

              <i id="nfnjz"></i>

                <font id="nfnjz"><dl id="nfnjz"><progress id="nfnjz"></progress></dl></font>
                <p id="nfnjz"></p>
                <meter id="nfnjz"></meter><ol id="nfnjz"><ruby id="nfnjz"><meter id="nfnjz"></meter></ruby></ol>
                <i id="nfnjz"><output id="nfnjz"></output></i>

                  <dfn id="nfnjz"></dfn>

                  <big id="nfnjz"><video id="nfnjz"></video></big>
                  <dl id="nfnjz"></dl>