《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種視頻設備流量監測軟件的設計
一種視頻設備流量監測軟件的設計
來源:微型機與應用2012年第12期
王 彥
(武漢鐵路職業技術學院 電子電氣系, 湖北 武漢430205)
摘要: 針對在研的視頻數字化設備開發了一種視頻流量監測系統。該系統采用微軟MFC的API技術設計,通過通信接口接收流量信息,并經信號處理后實時顯示視頻設備的流量信息。應用結果表明,該監測系統運行穩定可靠,監測精度高,具有一定的實用性和推廣價值。
Abstract:
Key words :

摘  要:針對在研的視頻數字化設備開發了一種視頻流量監測系統。該系統采用微軟MFC的API技術設計,通過通信接口接收流量信息,并經信號處理后實時顯示視頻設備的流量信息。應用結果表明,該監測系統運行穩定可靠,監測精度高,具有一定的實用性和推廣價值。
關鍵詞: 視頻設備; 視頻流量; MFC; 監測

     Visual C++是美國微軟公司推出的目前使用極為廣泛的可視化編程環境,它具有以下特點:(1)Developer Studio 由一套集成工具構成,用于開發Win32環境下運行的應用程序;(2)提供了具有功能強大的向導工具(如MFC AppWizard、ClassWizard、MFC ActiveX Control Wizard, ISAPI Extension Wizard、 ATL COM AppWizard和Custom AppWizard) 簡化Win32應用程序開發;(3)MFC類庫支持多線程應用程序開發; (4)具有Windows Socket和MAPI支持,可與網絡和E-mail鏈接;(5)MFC類庫封裝Win32 Internet、ActiveX、ISAPI等功能使編程更容易。
    隨著Visual C++的廣泛應用,人們歸納出使用Visual C++編寫Windows應用程序的三種方法:(1)直接調用Win32 API應用程序編程接口函數,大量程序代碼須由用戶自己編寫;(2)使用MFC類庫和ATL(活動模板庫)直接編寫應用程序,相對方便容易;(3)既使用MFC 類庫和ATL,也使用向導(Wizards)編寫。第三種方法是最方便簡單的。它首先用MFC AppWizard、MFC ActiveX ControlWizard、ISAPI Extension Wizard和ATL COM AppWizard生成基本框架結構,用ClassWizard建立應用程序類、消息處理和數據處理或定義控件屬性、事件、方法,將要求的功能源碼添加到相應類中。本文將研究利用Visual C++的MFC類等API庫實現視頻數字化設備流量監測軟件的設計[1]。
1 視頻流量監測軟件設計
    為了驗證設計的視頻數字化設備性能,需對視頻流量進行監測,筆者采用Visual C++集成開發環境對其監測軟件進行開發。該視頻數字化設備監測軟件要求能夠同時測試和顯示8路視頻流量信息和狀態。為實現8路視頻流量的接收,則需要在網絡通信組件中添加組播方式。通過設置定時功能對某一段時間輸出的流量進行累加統計并定時顯示從而驗證視頻數字化設備能否達到性能指標要求。
1.1 面向對象技術和方法的應用
  首先定義一個項目的工程名,然后在定義的工程中根據Visual C++的功能向導工具生成工程視類、工程文檔類、工程主框類及其成員函數。在這些對象的具體實現中,大部分都直接使用了底層的Windows API函數,與其他使用第三方控件和接口實現的方式相比,使用更靈活、功能更強大、運行效率更高[2]。在這些類中分別構造定義網絡通信函數、組播方式處理程序、數據處理函數、缺省文件讀取函數、查詢判別函數、視類定時顯示函數等關鍵函數。通過這些函數實現網絡通信和數據處理以及定時流量和狀態顯示等功能。圖1是視頻監測系統的幾個封裝類示意圖。

1.2 視頻監測軟件架構方法
      本系統運用MFC類庫豐富的Windows API性能,首先從CAsyncSocket類中派生構造CNewSocket網絡通信子類,在CNewSocket子類的一個成員函數OnReceive(int nErrorCode)里調用MFC類庫中的ReceiveFrom( )函數對視頻設備流量進行接收。利用CObject類派生的CGrouptestObject表達和封裝測試對象的數據內容,用派生的CGrouptestMain類表達標題內容,利用由CDocument派生的CGrouptestDoc表達和封裝數據處理內容,用CView派生的GrouptestView表達和封裝測試對象的多種外觀和視覺側面,從而實現數據的管理與表達分開,使程序結構更清晰,開發效率更高。
       在Visual C++ 的Main/Document/View結構中有:SDI(單文檔界面)和MDI(多文檔界面)方式,VC++的Application Framework會根據用戶選擇自動產生代碼框架,使用非常方便[3]。其中SDI只支持一種文檔結構,一個SDI程序一次只能處理一個文檔對象;MDI接口可支持多種文檔,并可同時處理多個文檔對象。本文采用了MDI結構,以便對監測對象進行擴展。具體對象間的通信和連接關系如圖2所示。

1.3 網絡通信的建立
     在CNewSocket類中網絡通信函數NewSocket.cpp定義了網絡通信接收的方式。在CNewSocket類中的接收函數OnReceive( )內容為:
    void CNewSocket::OnReceive(int nErrorCode)
     {  char szRecv[MAXSIZE];while(TRUE) {
         NumRead=ReceiveFrom(szRecv,MAXSIZE,
             SenderAddr,SenderPort);   
        if(NumRead==SOCKET_ERROR)  break; }
           ((CGrouptestDoc*)pParent)->ReadDataProc();
     CAsyncSocket::OnReceive(nErrorCode) ; }
    其中ReceiveFrom( )接收的網絡流量(字節),再轉移給數據處理函數ReadDataProc()處理。SenderAddr是發送地址,SenderPort是發送端口,NumRead是接收的字節數大小,ReadDataProc()則是位于文檔類中的數據處理函數,它用于處理和顯示接收的數據。
     為接收多個視頻設備流量,需加入組播方式。在組播方式加入后需要獲取主機地址。其中GetHostIPAddress()是取主機地址函數。
     LPSTR GetHostIPAddress(void)
     {if(gethostname(MyName,80)==SOCKET_ERROR) 
         return NULL;                              //獲得主機名
     if(!(thisHost=gethostbyname(MyName)))
      return NULL;memset((void*)&in,sizeof(in),0) ;
    in.s_addr=*((unsigned long*)thisHost->h_addr_list[0]);
  if(!(ptr=inet_ntoa(in)))  
    return NULL;
    IP =new char[strlen(ptr)-1] ;
    strcpy(IP,ptr);
    return IP;}                            //得到主機IP地址
       gethostname()函數是取本地主機的名字,gethostbyname()函數則是獲取本地主機名字對應的結構指針。
    在CGrouptestDoc文檔類的成員函數OnNewDocument()中加入組播地址:
     BOOL CGrouptestDoc::OnNewDocument(){
  mipadd=GetHostIPAddress();                //取主機地址
    if(!mipadd) { AfxMessageBox("取主機地址失敗");
        return  FALSE; }
    if(!m_pNamePort->Create(LOCALPORT,SOCK_DGRAM,
        FD_READ,mipadd)) {
       AfxMessageBox("建立套接口失敗");return -1;}
       for(int i=0;i<8;i++) {
          mreq.imr_multiaddr.s_addr=
  inet_addr(mon[i].ipdest) ;
    mreq.imr_interface.s_addr=INADDR_ANY;
    if(m_pNamePort->SetSockOpt(
    IP_ADD_MEMBERSHIP,(char*)&mreq, sizeof(mreq),
        IPPROTO_IP)<0)    
     { return -1;}}                              //加入組播地址
    return TRUE;}
    該成員函數中由函數GetHostIPAddress( )獲得主機IP地址,再由函數Create( )建立套接口,設定多目的地址和端口地址后通過函數SetSockOpt( )加入組播地址。從而獲得8組視頻流量顯示。
1.4 數據處理
     數據處理函數是對接收的8個視頻網絡設備端口視頻流量進行分組統計。在CGrouptestDoc文檔類中建立數據處理成員函數:
     void CGrouptestDoc::ReadDataProc()
  {   if(NumRead>0) {
       i= iLookup(SenderPort,SenderAddr);
          if (i !=0xff) {                 //匹配則執行處理
         switch(SenderPort) {
         case LOCALPORT2:                        //源端口1
            if(SenderAddr==ipaddrbuf[0])
        {totle1=totle1+NumRead;             //流量計數累加
         totle=totle1; } ……;break;
     case LOCALPORT1:……; break;}       
      mon[i].totle=totle;mon[i].ipstr=SenderAddr;
     mon[i].flag=1;} } }                 //置統計數據標志
     該項目文檔的成員函數ReadDataProc()先通過iLookup()函數確定視頻流量在界面上源地址和目標地址所應該對應的位置。然后累加統計每路流量并在規定的時間動態地顯示所接入的各路視頻設備的流量。最多可以顯示8路視頻流量。
    視頻流量監測開始時首先要賦給源網絡地址和目標網絡地址。通過初始化時讀取配置文件函數ReadIniFile()設定網絡源地址和網絡目標地址。此函數先讀取配置文件,再通過Ini_IP_TcConvert()函數變換為判別的4組 ipaddrbuf字符對應的目的網絡地址。iLookup()是查詢判別分組函數,它通過設定不同源端口確定幾個分組次序,在此不予分析。
1.5 視頻流量顯示
     視頻流量顯示是在項目視類函數中實現的。在視類初始化更新函數OnInitialUpdate()中啟動定時器[4]。SetTimer()是定時器控制函數,能使視頻流量在其界面上每秒定時顯示。
void CGrouptestView::OnInitialUpdate(){
  SetTimer(ID_CONT_TOL,1000,NULL) ;}
  通過位于CGrouptestView視類中的定時器函數顯示每秒更新的視頻流量值:
    Void CGrouptestView::OnTimer(UINT nIDEvent) {
         t=CTime::GetCurrentTime();           //獲得當前時間
         timestr=t.Format("%c");                      //窗口顯示
         m_source.SetWindowText(timestr) ;
        TRACE(timestr+"\n");SetEvent(hzero); pDoc=Get-
            Document();
        if(nIDEvent==1) {  pDoc->ReadDataProc();
         for (i=0;i<8;i++){ if (mon[i].flag) {
                           //判標志位,如果零則顯示置空
           mon[i].flag=0;  totletmp[i]=(float)
          (8*mon[i].totle/(1.0*1000*1000)) ;
           tolstr[i].Format("%2.3f Mbps",totletmp[i]) ;
        switch(i) { case 0:
                                 //網絡地址和流量顯示
        m_tol0.SetWindowText(tolstr[i]);
             m_dest0.SetWindowText(mon[i].ipdest);
        m_ip0.SetWindowText(mon[i].ipstr);
    if(totletmp[i]>0.1)                        //流量極下限
    m_status0.SetIcon(h_green) ;                              //正常
    else {m_status0.SetIcon(h_red);
                               //故障m_tol0.SetWindowText
                             ("0.000 Mbps");}
    break;……} }else { mon[i].totle=0;
    switch(i){ case 0:    
                           //顯示清空流量值m_tol0.SetWindow-
                            Text("0.000 Mbps");
    m_status0.SetIcon(h_red) ;
    break;……;break;} } } }
  UpdateData(FALSE);                       //顯示更新
  for(int k=0;k<8;k++) {                   //數據清零
  mon[k].totle=0;totle1=0;                   //計數清零    
  ┉┉ } CFormView::OnTimer(nIDEvent);}
    在界面框架頂端添加標題和版本顯示[5]:
       BOOL CGrouptestApp::InitInstance()
       { m_pMainWnd->ShowWindow(SW_SHOW) ;
    m_pMainWnd->SetWindowText(
    "XX視頻流量監測系統");
     m_pMainWnd->UpdateWindow();return TRUE;}
    視頻流量監測系統軟件實際運行圖如圖3所示。

 

 

    通過實際Visual C++的開發使用,發現它的MFC類庫包含豐富的功能,在滿足面向對象的開發應用中由于包含了大量已封裝好的各個類和成員函數,因此對于串口通信、網絡通信、定時發生器和界面顯示等都有對應的類和函數,這樣極大地減少了源程序代碼的長度,使程序的開發工作量大幅減少,從而提高了程序的質量。用于監測視頻數字化設備流量的軟件采用Visual C++開發時廣泛采用了上述的MFC類和成員函數,在實際運行過程中穩定可靠,各個功能得到驗證。
參考文獻
[1] GORLEN K E. An object-oriented class library for C++programs[C]. Software Pratice and Experience,1987,17(12): 899-922.
[2] HALBERT D C, BRIEN P D. Using types and inheritance in object-oriented languages[C]. European Conference on Object-oriented Programming, 1987:20-31.
[3] SHOPIRO J E. An example of multiple inheritance in C++: a model of the iostream library[J]. SIGPLAN Notices,1989, 24(12):32-36.
[4] CHUNG C M, LEE M C. Object-oriented programming software metrics[J]. International Journal of Mini and Microcomputers, 1994,16(1):7-15.
[5] HEWITT  J A. Techical service in 1983[J]. Library Resource Services,1984,28(3):205-218.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧美日韩在线综合| 一区二区福利| 一区二区三区黄色| 国内成+人亚洲+欧美+综合在线| 久久久国产一区二区三区| 中文精品99久久国产香蕉| 免费亚洲电影在线| 一区二区亚洲精品国产| 欧美尤物一区| 一区二区三区 在线观看视频| 欧美日韩另类丝袜其他| 欧美成人影音| 国产日韩欧美视频在线| 国产精品视频久久久| 欧美精品v日韩精品v韩国精品v| aaa亚洲精品一二三区| 久久久国产精品一区| 久久久久在线| 红杏aⅴ成人免费视频| 亚洲一区二区三区在线视频| 免费亚洲一区二区| 欧美一区二区三区日韩| 国产精品视频最多的网站| 欧美伊久线香蕉线新在线| 国产欧美一区二区精品忘忧草| 亚洲国内精品在线| 久久久久久噜噜噜久久久精品| 欧美xxx成人| 日韩西西人体444www| 欧美aa在线视频| 国产精品99久久久久久白浆小说| 99视频精品| 91久久嫩草影院一区二区| 国产精品黄视频| 一区二区三区免费网站| 欧美日韩亚洲一区在线观看| 欧美激情视频一区二区三区免费| 国产精品综合视频| 国产亚洲欧美一区二区三区| 亚洲国产日本| 美日韩免费视频| 亚洲国产日韩欧美一区二区三区| 性欧美1819sex性高清| 国产精品免费一区二区三区在线观看| 欧美国产日韩一区二区在线观看| 亚洲精品一区二区在线| 国产精品一区在线观看你懂的| 欧美成人午夜影院| 欧美在线啊v一区| 国产精品大片免费观看| 国产精品swag| 欧美va天堂| 在线不卡免费欧美| 在线观看日韩国产| 欧美精品成人在线| 欧美福利视频网站| 久久免费的精品国产v∧| 亚洲激情小视频| 麻豆九一精品爱看视频在线观看免费| 欧美在线观看视频在线| 影音先锋日韩有码| 欧美三级视频在线观看| 国产日本欧美一区二区三区在线| 亚洲欧美日韩在线综合| 欧美电影免费观看| 欧美日韩一区二区三| 中文精品99久久国产香蕉| 亚洲欧美韩国| 亚洲免费视频成人| 久久精品水蜜桃av综合天堂| 久久亚洲综合| 亚洲日韩欧美一区二区在线| 欧美日韩在线免费视频| 亚洲欧美综合| 亚洲欧美日韩国产精品| 久久久久免费| 亚洲欧美日韩久久精品| 亚洲一区二区高清视频| 国产精品电影网站| 亚洲伊人网站| 国产日韩欧美黄色| 欧美日韩dvd在线观看| 国产自产高清不卡| 伊人天天综合| 国产区日韩欧美| 亚洲永久精品大片| 国产精品男gay被猛男狂揉视频| 国产精品一区在线观看你懂的| 久久成人精品电影| 日韩五码在线| 欧美在线免费播放| 久久亚洲国产精品一区二区| 精品成人一区二区三区| 欧美日韩国产成人在线免费| 亚洲日本精品国产第一区| 国产日产欧美精品| 欧美日韩高清免费| 亚洲人体偷拍| 在线观看亚洲a| 在线观看一区视频| 久久久久久久波多野高潮日日| 欧美日韩综合在线| 亚洲狼人精品一区二区三区| 久久国产乱子精品免费女| 最新国产乱人伦偷精品免费网站| 亚洲欧洲三级| 欧美麻豆久久久久久中文| 久久久久免费观看| 久久久亚洲精品一区二区三区| 国产精品二区二区三区| 在线观看日韩国产| 性8sex亚洲区入口| 亚洲国产一区二区视频| 黄色一区二区三区四区| 免费成人在线视频网站| 久久裸体视频| 欧美国产精品一区| 欧美国产国产综合| 国产精品日韩欧美大师| 国产精品99久久99久久久二8| 亚洲片在线资源| 亚洲一卡久久| 在线亚洲精品福利网址导航| 国产在线国偷精品产拍免费yy| 欧美黄色成人网| 亚洲国产欧美一区二区三区久久| 久久综合色一综合色88| 国内不卡一区二区三区| 久久www成人_看片免费不卡| 欧美成人免费网站| 欧美日韩综合| 国产精品免费看久久久香蕉| 夜夜嗨av一区二区三区四季av| 亚洲美女视频在线观看| 欧美日产一区二区三区在线观看| 国产主播一区二区三区四区| 欧美性猛交xxxx乱大交蜜桃| 久久riav二区三区| 国产精品一级二级三级| 日韩午夜高潮| 国产精品xnxxcom| 美女黄毛**国产精品啪啪| 欧美在线视频一区| 亚洲性线免费观看视频成熟| 日韩一级黄色av| 亚洲专区国产精品| 久久嫩草精品久久久精品一| 国产一区二区三区在线观看精品| 日韩视频永久免费| 夜夜爽夜夜爽精品视频| 欧美涩涩视频| 久久国产一区二区| 久久精品国产一区二区三| 亚洲人体影院| 日韩亚洲综合在线| 亚洲乱码国产乱码精品精98午夜| 在线综合+亚洲+欧美中文字幕| 久久亚洲午夜电影| 国产原创一区二区| 国产综合网站| 欧美日韩在线不卡一区| 欧美电影在线免费观看网站| 亚洲免费精品| 日韩天天综合| 久久久精品国产99久久精品芒果| 欧美视频在线观看免费网址| 国产精品久久久久91| 国产精品亚洲一区二区三区在线| 国产精品国产福利国产秒拍| 欧美日韩一区二区欧美激情| 亚洲午夜成aⅴ人片| 国模精品娜娜一二三区| 国产精品户外野外| 国产精品高潮粉嫩av| 欧美日韩在线播放一区二区| 久久综合狠狠综合久久激情| 欧美精品成人在线| 亚洲天堂成人在线视频| 亚洲麻豆一区| 一区二区冒白浆视频| 中日韩美女免费视频网站在线观看| 欧美日韩成人在线| 久久在线视频| 亚洲精品一区二区三区99| 欧美69视频| 久久本道综合色狠狠五月| 国产精品99久久不卡二区| 美女主播视频一区| 亚洲人精品午夜在线观看| 国产精品一区二区久久| 美女脱光内衣内裤视频久久影院| 欧美三日本三级少妇三99| 久久国产精品久久精品国产| 欧美精品亚洲精品| 欧美大片第1页| 亚洲片国产一区一级在线观看| 亚洲一区精品在线| 亚洲午夜女主播在线直播| 国产综合在线看| 亚洲欧美制服另类日韩| 欧美精品一区二区三区高清aⅴ| 在线观看欧美成人| 欧美大片18| 国产伦精品一区二区三区在线观看| 美女脱光内衣内裤视频久久影院| 国产一区二区三区四区hd| 欧美日韩成人激情| 亚洲国产高清aⅴ视频| 樱桃成人精品视频在线播放| 亚洲欧洲一区二区天堂久久| 黄色av成人| 欧美精品在线免费播放| 国模套图日韩精品一区二区| 亚洲永久字幕| 久久久爽爽爽美女图片| 久久久噜噜噜| 亚洲一区二区在线看| 欧美一区二区三区免费观看| 国产精品影音先锋| 国产精品成人免费视频| 久久精品电影| 国产精品久久久久久av下载红粉| 夜夜嗨av一区二区三区四区| 亚洲久久一区二区| 欧美电影在线观看| 久久国产加勒比精品无码| 亚洲欧美日韩国产中文| 亚洲国产日韩欧美在线99| 国产三区二区一区久久| 久久视频一区二区| 久久久久**毛片大全| 国产日本欧美一区二区| 亚洲欧洲另类国产综合| 亚洲国产老妈| 亚洲福利视频一区| 国产日韩欧美a| 亚洲免费在线观看视频| 新67194成人永久网站| 国产日韩在线一区| 亚洲一级片在线观看| 国产精品美女久久久浪潮软件| 亚洲精品国产欧美| 欧美日韩一区二区免费在线观看| 一区精品久久| 日韩天天综合| 欧美视频日韩| 欧美精品一区在线| 久久噜噜亚洲综合| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲三级电影在线观看| 一区二区三区视频免费在线观看| 欧美伦理a级免费电影| 亚洲日本中文字幕免费在线不卡| 宅男精品导航| 亚洲精品女人| 国产女优一区| 亚洲欧洲精品一区二区三区| 久久久精品一品道一区| 亚洲午夜激情网站| 国产一二三精品| 国外成人网址| 国产在线日韩| 国产精品影音先锋| 亚洲欧美日韩成人高清在线一区| 毛片av中文字幕一区二区| 亚洲第一精品电影| 狠狠色狠狠色综合人人| 国产精品乱码久久久久久| 亚洲欧美日韩国产一区二区三区| 亚洲永久精品大片| 国产亚洲精品高潮| 欧美大片在线观看一区二区| 欧美日韩亚洲另类| 激情久久综合| 亚洲伊人第一页| 欧美日韩国产精品专区| 日韩亚洲一区在线播放| 久久青草久久| 国产尤物精品| 欧美精品网站| 国产日韩在线视频| 一区二区三区毛片| 久久―日本道色综合久久| 欧美色图天堂网| 一区二区三区在线观看视频| 免费成人在线视频网站| 国产欧美在线观看| 欧美视频国产精品| 欧美在线三区| 久久久久88色偷偷免费| 欧美永久精品| 国产无一区二区| 国产精品视频网| 欧美在线视频一区二区| 六月婷婷一区| 久久免费精品视频| 亚洲免费综合| 国产欧美日韩精品丝袜高跟鞋| 国产日韩亚洲欧美精品| 欧美日韩精品是欧美日韩精品| 99这里只有久久精品视频| 久久精品导航| 国产精品成人va在线观看| 亚洲人永久免费| 久久午夜影视| 欧美三级日韩三级国产三级| 国产精品午夜久久| 最新日韩在线| 欧美一区二区三区婷婷月色| 欧美视频在线免费| 在线亚洲高清视频| 免费成人av在线看| 久久久久久有精品国产| 国产日韩亚洲欧美精品| 欧美一二三区精品| 国产亚洲一区二区在线观看| 一区二区三区视频免费在线观看| 欧美一级网站| 久久精品亚洲一区| 久久久久欧美精品| 欧美日韩国产不卡在线看| 国产亚洲精品久久久久婷婷瑜伽| 亚洲综合激情| 韩国av一区| 亚洲精品国产精品国自产观看浪潮| 欧美高清自拍一区| 欧美人妖另类| 亚洲激情一区二区|