亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        GDIPlus雙緩存技術在USB采集卡控制軟件中的應用

        2011-05-21 00:41:16楊增寶
        電子設計工程 2011年12期
        關鍵詞:采集卡畫布繪圖

        楊增寶 , 楊 浩

        (1.重慶大學 重慶 400044;2.長江師范學院 重慶 408100)

        心電、腦電、胃電等生物電信號通常都集中在頻率低段,對采樣電路和波形顯示設備的要求都不太高。但為了能對象肌電一類相對較高頻率的生物電信號進行更高質(zhì)量的采樣和精確分析,就要求有更高速率的數(shù)據(jù)采集設備。常規(guī)數(shù)據(jù)采集卡都采用PCI接口,安裝和攜帶都非常麻煩,給人們的研究工作帶來了極大的不便。因此,設計一款基于USB接口的高速率數(shù)據(jù)采集卡,對分析更復雜的生物電信號有著十分重要的作用,也會給研究工作帶來更大的方便。

        圖1 硬件結構圖Fig.1 Block diagram of hardware

        1 硬件環(huán)境介紹

        控制軟件針對的是該款自行設計的,以Cypress公司生產(chǎn)的CY7C68013A為核心的USB數(shù)據(jù)采集卡,該卡充分利用了USB2.0的高帶寬數(shù)據(jù)傳輸優(yōu)勢,在采樣精度為12 Bit的條件下,還能達到單通道最高6 Ms/s的數(shù)據(jù)采樣速率。采集卡的硬件設計如圖1所示。

        圖中,隔離電路采用軌至軌、低噪聲運放LT1677連接成跟隨器實現(xiàn),有較高的通頻帶;A/D轉換器采用了ADI公司的AD9220,其轉換精度為12 Bit,最高采樣速率可達10 Ms/s;USB接口電路由Cypress公司的CY7C68013A構成,它率先支持USB2.0傳輸標準,內(nèi)建一個可工作在48 MHz時鐘的增強型8051內(nèi)核[1],利用它可以方便地通過上位機對其工作狀態(tài)進行設定,而且它內(nèi)部還自帶4 kB FIFO,每個端點都可獨立使用其中的1 k。

        該設計方案的最大特點是做到了硬件結構的最簡化,因而成本最低、工作穩(wěn)定度也最高。設計中最主要的創(chuàng)新點是去掉了通常由FPGA或CPLD來執(zhí)行的外部控制邏輯,讓A/D轉換器的時鐘信號CLK直接由CY7C68013的GPIF輸出信號CTL來提供,在簡化了外圍控制邏輯的同時,又保證了較高的采樣速率(因為GPIF的驅動時鐘為12 MHz),同時還很好地解決了時鐘同步問題。

        2 GDIPlus雙緩存技術在控制軟件中的實現(xiàn)

        GDIPlus(Graphics Device Interface Plus)是 Windows系列操作系統(tǒng)用來執(zhí)行繪畫及其他相關圖形操作的一套子系統(tǒng)[2],它是一組通過C++類實現(xiàn)的應用程序編程接口,它不僅在GDI的基礎上添加了許多新特性,而且對原有的GDI功能進行了各種優(yōu)化。在它的基礎上,采用GDIPlus雙緩存技術[3]繪圖,不僅可以非常容易地編寫出與設備無關的應用程序,而且可以實現(xiàn)更好的繪圖效果。

        由于硬件平臺數(shù)據(jù)采樣率比較高,這就要求上位機的波形顯示程序要有盡可能高的效率才能達到理想的動態(tài)波形顯示效果,因此我們將GDIPlus雙緩存技術引入到此硬件平臺的控制軟件開發(fā)當中。

        由于GDIPlus提供了更豐富的繪圖方法,因而生成平滑度效果十分良好的圖形線條,同時還能跟早期GDI編程一樣對所繪圖形的屬性進行控制,該方法具有更高的實用價值。

        控制軟件在繪制波形前,首先要從USB端口獲取AD采集的原始數(shù)據(jù),這一過程需要通過訪問驅動程序來實現(xiàn)。

        2.1 應用程序與驅動程序的接口

        控制軟件首先通過bOpenDriver()方法與驅動程序建立連接,并打開USB設備,函數(shù)原型如下:

        BOOL bOpenDriver (HANDLE *phDeviceHandle,PCHAR devname)

        {

        char completeDeviceName[64]="";

        char pcMsg[64]="";

        strcat(completeDeviceName,"\\.\");

        strcat(completeDeviceName,devname);

        *phDeviceHandle=CreateFile(completeDeviceName,

        GENERIC_WRITE,

        FILE_SHARE_WRITE,

        NULL,

        OPEN_EXISTING,

        0,

        NULL);

        if(*phDeviceHandle==INVALID_HANDLE_VALUE)

        {

        return (FALSE);

        }

        else

        {

        return (TRUE);

        }

        }

        然后應用程序通過DeviceIoControl()方法[4]從CY7C68013A的EP6端點獲取AD轉換器采集到的數(shù)據(jù)結果,得到的數(shù)據(jù)在指針inBuffer中,其函數(shù)原型如下:

        inBulkControl.pipeNum=1;//選擇EP6為輸入端口DeviceIoControl(usbInHandle, //指定 USB 設備句柄

        IOCTL_EZUSB_BULK_READ,//指定傳輸類型為Bulk IN

        (PVOID)&inBulkControl, //傳輸控制緩沖區(qū)指針

        sizeof (BULK_TRANSFER_CONTROL), //傳輸控制緩沖區(qū)大小

        inBuffer,//數(shù)據(jù)輸入緩沖區(qū)指針

        TransferSize,//數(shù)據(jù)傳輸量大小

        &nBytes,//實際返回的字節(jié)數(shù)

        NULL);

        如果采集到的數(shù)據(jù)還需進行數(shù)字濾波[5]或其它算法的加工,可直接對inBuffer中的數(shù)據(jù)進行相應處理。處理完后的結果便可用于波形顯示。

        由于AD采集的每一個數(shù)據(jù)都對應波形上的一個點,所以波形顯示的主要目的就是把這些離散的點連成線條。因此,控制軟件會非常頻繁地調(diào)用DrawLine()函數(shù)。如果DrawLine()函數(shù)直接把圖形繪制到繪圖窗口,其繪圖效率會嚴重下降。最為嚴重的問題還在于每一幀圖形繪制完畢后的擦除操作會導致整個繪圖窗口的閃爍。為有效解決這兩個問題,設計引入了雙緩存的繪圖方法。

        2.2 GDIPlus雙緩存技術的實現(xiàn)過程

        實現(xiàn)雙緩存技術的基本思想是:創(chuàng)建一個跟顯示窗口等大的內(nèi)存空間作為虛擬畫布,用來保存臨時繪制的圖像,當一幀完整的圖形全部繪制完畢之后,再一次性將此虛擬畫布的內(nèi)容復制到顯示窗口中,完成最終顯示任務。由于內(nèi)存的訪問速度遠高于實際窗口繪圖,所以繪圖效率成倍地提高。再加上整個繪圖過程和擦除動作都是在虛擬畫布中以后臺的方式完成的,所以前一幀與后一幀之間的擦圖操作被隱藏,閃爍問題得到了有效解決。

        虛擬畫布的創(chuàng)建在GDIPlus中需要用Bitmap bmp()方法來實現(xiàn),其調(diào)用參數(shù) rect.Width()和 rect.Height()保障了它與實際窗口面積等大。應用程序原則上可以調(diào)用任何GDIPlus提供的繪圖函數(shù)來在虛擬畫布所對應的緩存區(qū)中繪制圖形映像,但本控制軟件的主要任務是繪制波形圖,所以只調(diào)用了DrawLine()函數(shù)。需要特別指出的是,在GDIPlus庫中,畫點和畫線都只能用DrawLine()函數(shù)來完成[6],兩者實現(xiàn)了統(tǒng)一。

        程序最后調(diào)用Graphics.DrawImage()方法,將虛擬畫布中的圖形映像直接拷貝到顯示窗口內(nèi)存,快速完成將虛擬畫布中圖像顯示到實際窗口的任務。整個過程的關鍵代碼如下:

        void CGdiDrawDlg::OnWave()

        {

        CWnd*pWnd=GetDlgItem(IDC_WAVE);

        CClientDC dc(pWnd);

        Graphics g(dc.m_hDC);

        CRect clientrect;

        GetClientRect(&clientrect);

        CRectrect (clientrect.left,clientrect.top,clientrect.Width(),clientrect.Height());

        Bitmap bmp(rect.Width(),rect.Height());//——創(chuàng)建虛擬畫布

        Graphics gTmp(&bmp);//——獲取虛擬畫布的

        Graphics引用

        SolidBrush br(Color(255,0,0,0)); //定義背景畫刷

        gTmp.FillRectangle (&br,0,0,rect.Width (),rect.Height()); //定義填充背景

        Pen pen(Color(255,255,50,50),1);//定義畫筆及其屬性pen.SetWidth(1); //設置畫筆線寬

        gTmp.SetSmoothingMode (SmoothingModeHighQuality);//反鋸齒平滑顯示

        for(i=0;i< sizeof(inBuffer);i++)

        {

        gTmp.DrawLine(&pen,i,inBuffer[i],i+1,inBuffer[i+1]);

        //根據(jù)inBuffer里面的數(shù)據(jù)在虛擬畫布上繪圖

        }

        g.DrawImage (&bmp,0,0); //將虛擬畫布中的圖形映像繪制到實際窗口

        }

        3 結束語

        圖2是該卡在6 Ms/s采樣率下對22 kHz正弦波的采樣結果,對于如此高速率的數(shù)據(jù)流,任何軟件都無法完成對所有采樣點的同步實時顯示,所以本軟件目前也只能完成對該信號數(shù)據(jù)的分段抽樣顯示,抽樣率為20幀/秒,所以對于軟件的繪圖效率部分還有待進一步研究和提高。綜上所述,GDIPlus雙緩存技術是Windows平臺支持的高效圖形顯示方案,通過該技術在本設計中的應用表明,它實現(xiàn)了高效、平滑的波形顯示效果,使得動態(tài)波形快速顯示的閃爍問題得以有效解決,能滿足工程設計要求。

        圖2 控制軟件運行圖Fig.2 Running diagram of control software

        [1]錢峰.EZ-USB FX2單片機原理編程及應用[M].北京:北京航空航天大學出版社,2006.

        [2]Chand M.GDI+圖形程序設計[M].韓江,等譯.北京:電子工業(yè)出版社,2005.

        [3]Kruglinski D J, Wingo S.Visual C++6.0技術內(nèi)幕[M].北京:北京希望電子出版社,1999.

        [4]CypressSemiconductor.CypressCyAPIprogrammer’s reference[EB/OL].(2003)[2010-03-20].http://www.mikrocontroller.net/attachment/34631/CyAPI.pdf.

        [5]陳輝,李遠.基于USB2.0的數(shù)據(jù)采集卡[J].自動化技術與應用,2008,27(6):91-93 CHEN Hui,LI Yuan.A data acquisition card based on USB2.0[J].Techniques of Automation and Applications,2008,27(6):91-93

        [6]張國輝,胡聞達,李慧智.基于GDI+的緩沖區(qū)建立及邊界描述方法[J].測繪科學技術學報,2010,27(3):229-232 ZHANG Guo-hui, HU Wen-da, LI Hui-zhi.A way to establish buffer area and describe boundary based on GDI+[J].Journal of Geomatics Science and Technology,2010,27(3):229-232.

        猜你喜歡
        采集卡畫布繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        學與玩(2022年10期)2022-11-23 08:31:08
        高精度AD采集卡性能測試及評價方法研究
        中國測試(2022年2期)2022-03-19 09:57:30
        商業(yè)模式畫布
        商界評論(2022年12期)2022-03-06 16:43:01
        為什么要在畫布上割一刀?
        藝術品鑒(2019年9期)2019-10-16 08:57:44
        讓鮮花在畫布上盛開
        基于HTML5 Canvas繪圖技術應用
        電子測試(2018年4期)2018-05-09 07:28:32
        面向數(shù)控機床的多通道傳感數(shù)據(jù)采集卡設計
        并行高速采樣在地震物理模擬采集中的應用
        PCI-e高速數(shù)據(jù)采集卡的驅動與上位機軟件設計
        電子器件(2015年5期)2015-12-29 08:43:12
        91精品国产综合久久青草| 国产精品青草视频免费播放| 久久99精品久久久久久久清纯| 欧美三级一区| 亚洲成a人片77777kkkkk| 国产亚洲综合另类色专区 | 丰满少妇高潮在线观看| 中文字幕你懂的一区二区| 网红尤物泛滥白浆正在播放| 亚洲天堂一区二区偷拍| 在线观看免费日韩精品| 日本a片大尺度高潮无码| 伊人久久大香线蕉av不卡| 男女啪啪永久免费观看网站| 欧美情侣性视频| 国产精品九九热| 欧洲乱码伦视频免费| 黄色三级一区二区三区| 99久久婷婷国产精品网| 欧美xxxxx高潮喷水| 男人扒开添女人下部免费视频| 性大毛片视频| 日韩久久久黄色一级av| 日韩人妻系列在线视频| 亚洲24小时免费视频| 久久久久亚洲av无码a片| 免费国产黄网站在线观看| 在线综合网| 国产欧美日本亚洲精品一4区| 国产成人综合亚洲国产| 国产一区二区自拍刺激在线观看| 亚洲精品成人网站在线播放| 国产日韩精品中文字无码| 五月天综合网站| 丰满人妻一区二区乱码中文电影网| 在线观看免费视频发布白白色| 日韩精品一区二区三区乱码| 欧美午夜刺激影院| 97久久精品人人做人人爽| 久久久久久中文字幕有精品| 精品蜜桃av免费观看|