新聞中心

        EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW德USB實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)實(shí)現(xiàn)

        基于LabVIEW德USB實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)實(shí)現(xiàn)

        作者: 時(shí)間:2017-01-12 來源:網(wǎng)絡(luò) 收藏



          3.2 USB采集卡的軟件構(gòu)成

        本文引用地址:http://www.104case.com/article/201701/337652.htm

          在USB 的Firmware中,采取同步傳輸(Isochronous Transactions)和塊傳輸(Bulk Transactions)兩種傳輸方式。同步方式用來實(shí)時(shí)傳送采集的數(shù)據(jù),塊傳輸主要用來傳輸主機(jī)命令信號(hào)和USB的狀態(tài)信息。塊傳輸中利用端點(diǎn)(Endpoint)2。兩種傳輸方式的核心中斷程序如下:

          void ISR_Sutok(void)interrupt 0 //塊傳輸方式

          {

          //initialize the couters in the 8051

          TMOD=0x05;

          TCON=0x10;

          TH0=0;

          TL0=0;

          Thb=0,

          TH0=0;

          TL0=0;

          thb=0;

          EZUSB_IRQ_CLEAR();

          USBIRQ=bmSUTOK; //Clear SUTOK IRQ

          }

          void ISR_Sof(void)interrupt 0 //同步傳輸方式

          {

          if(TCON&0x21){ //Deal with the counter overflow

          TH0=0;

          Tl0=0;

          THB++;

          TCON&=0xdf;}

          IN8DATA=TH0; //3 Bytes counter result

          IN8DATA=TL0;

          IN8DATA=THB;

          EZUSB_IRQ_CLEAR();

          USBIRQ=bmSOF; //Clear SOF IRQ

          }

          在LabVIEW 應(yīng)用程序中設(shè)計(jì)了一Usb.dll文件作為LabVIEW與USB的驅(qū)動(dòng)程序。由于EZ-USB開發(fā)系統(tǒng)中已經(jīng)提供了底層驅(qū)動(dòng)程序(GPD)接口函數(shù),用戶只需調(diào)用這些函數(shù)即可與USB設(shè)備連接。因此在DLL的編制中只需調(diào)用它提供的函數(shù),大大節(jié)約了開發(fā)時(shí)間,提高了開發(fā)速度。創(chuàng)建的Usb.dll文件中包含了如下五個(gè)輸出函數(shù),功能說明如表1所示。

          表1 Usb.dll包含函數(shù)的功能說明

        Control 主機(jī)對(duì)USB設(shè)備的控制
        ReadResult 獲取USB發(fā)送到主機(jī)的數(shù)據(jù)
        StartIsoStream 啟動(dòng)設(shè)備的同步傳輸流
        StartThread 得到標(biāo)準(zhǔn)設(shè)備的設(shè)備描述符
        StopThread 關(guān)閉設(shè)備的同步傳輸流

          其定義如下:

          LPSTR_declspec(dllexport)_stdcall Control(int input);

          int_declspec(dllexport)_stdcall ReadResult(void);

          int_declspec(dllexport)_stdcall StartIsoStream(void);

          int_declspec(dllexport)_stdcall StartThread(void);

          int_declspec(dllexport)_stdcall StopThread(void);

          開啟設(shè)備和獲取采集數(shù)據(jù)的過程如圖2所示。它的主要功能有:開啟或關(guān)閉USB設(shè)備、檢測USB設(shè)備、設(shè)置USB數(shù)據(jù)傳輸管道(pipe)和端點(diǎn)(endpoint)、實(shí)時(shí)從USB接口采集數(shù)據(jù)、顯示并分析數(shù)據(jù)。



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 如东县| 尚义县| 含山县| 德阳市| 吉水县| 波密县| 新泰市| 梧州市| 礼泉县| 秦皇岛市| 津市市| 桂阳县| 夏河县| 尼玛县| 舟曲县| 惠水县| 宣威市| 江孜县| 温宿县| 自贡市| 安乡县| 牡丹江市| 常熟市| 罗城| 铜梁县| 岑溪市| 三河市| 宣汉县| 烟台市| 山丹县| 赣州市| 合阳县| 石狮市| 呼和浩特市| 保德县| 清水河县| 海兴县| 桦甸市| 扶沟县| 南雄市| 电白县|