新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Linux 以太網(wǎng)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)

        基于Linux 以太網(wǎng)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)

        作者: 時(shí)間:2012-08-15 來源:網(wǎng)絡(luò) 收藏

        這句話調(diào)用了usb register 這個(gè)函數(shù),將struct sample_driver{}注冊(cè)到USB 核心。

        USB 核心如何識(shí)別一個(gè)驅(qū)動(dòng)適合該設(shè)備呢,就要靠usb_device id 結(jié)構(gòu)體完成。struct usbse_device id 結(jié)構(gòu)體提供了一列不同類型的該驅(qū)動(dòng)程序支持的USB 設(shè)備。USB 核心使用該列表來判斷對(duì)于一個(gè)設(shè)備該使用哪一個(gè)驅(qū)動(dòng)程序,熱插拔腳本使用它來確定當(dāng)一個(gè)特定的 設(shè)備插入到時(shí)該自動(dòng)裝載哪一個(gè)驅(qū)動(dòng)程序。本例中實(shí)現(xiàn)了這樣一個(gè)結(jié)構(gòu):

        static struct usb_device_id sample_id_table[]={

        {USB_DEVICE(USB_Sample_VENDOR_ID,

        USB_Sample_PRODUCT_ID) },{} };

        MODULE_DEVICE_TABLE (usb, sample_id_table);

        USB_DEVICE ( vendor,product)這個(gè)宏僅和指定的制造商和產(chǎn)品ID 值相匹配,該宏常用于需要一個(gè)特定驅(qū)動(dòng)程序的uss 設(shè)備。

        int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,

        void *data, int len, int *actual_length,int timeout);

        該函數(shù)傳遞bulk 數(shù)據(jù)到驅(qū)動(dòng)中的緩沖區(qū)*data,如果傳遞完成之后再復(fù)制到用戶區(qū)供用戶使用。

        int usbes_control_msg(struct usb device *dev, unsigned int pipe,_u8 request,_u8 requesttype,

        _u16 value,_u16 index,void *data,_u16 size, int timeout);

        該函數(shù)允許驅(qū)動(dòng)程序發(fā)送和接收USB 控制消息。例如本例中實(shí)現(xiàn)的采樣頻率的變換就是通過該命令在用戶和卡硬件之間傳遞的。

        下面以讀設(shè)備數(shù)據(jù) sample read 為例介紹驅(qū)動(dòng)對(duì)硬件的操作過程,流程如圖6 所示。



        圖 6 sample read 函數(shù)流程

        內(nèi)核空間和用戶空間有所不同,驅(qū)動(dòng)程序?qū)儆趦?nèi)核空間,普通的應(yīng)用程序?qū)儆谟脩艨臻g, 兩個(gè)空間的數(shù)據(jù)不能直接互訪,必須要借助copy_fromes users()、copy_to_user()兩個(gè)函數(shù)在 兩個(gè)空間中傳遞數(shù)據(jù)。

        3.2 PC 機(jī)客戶端的設(shè)計(jì)

        PC 機(jī)客戶端使用Delphi 開發(fā)。主要完成以下功能:作為Client 和服務(wù)器連接、請(qǐng)求并接 收Serve:發(fā)來的采集到的數(shù)據(jù)并在本地客戶端上以波形形式顯示出來。本設(shè)計(jì)中使用了兩個(gè) 定時(shí)器完成這些功能,定時(shí)器1 負(fù)責(zé)向Serve:發(fā)送“請(qǐng)求數(shù)據(jù)”的請(qǐng)求,并將返回的數(shù)據(jù)放 入緩存。定時(shí)器2 負(fù)責(zé)將定時(shí)器1 接收來的數(shù)據(jù)以波形的形式顯示出來,其中,用到了ActiveX 控件VtChart,客戶端收到采集正弦波形如圖7 所示。



        圖7 網(wǎng)絡(luò)采上來的正弦波

        4.結(jié)論

        本文創(chuàng)新點(diǎn):本文研究、設(shè)計(jì)了技術(shù)、USB 技術(shù)、嵌入式技術(shù)的 ,將先進(jìn)的技術(shù)融合到工廠自動(dòng)化的最前端,提高了采樣的精度、速度和可靠性。該數(shù) 據(jù)采集卡完成的不僅僅是一個(gè)的功能,而在于為以后的設(shè)計(jì)提供詳細(xì)的設(shè)計(jì)基礎(chǔ)和 平臺(tái),這些功能都可以方便的移植到以后的儀表設(shè)計(jì)中,可以作為二次開發(fā)的平臺(tái)。

        linux操作文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        pid控制相關(guān)文章:pid控制原理


        linux相關(guān)文章:linux教程



        上一頁 1 2 下一頁

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 双流县| 呼玛县| 中牟县| 阜阳市| 建阳市| 若尔盖县| 顺义区| 姚安县| 广宗县| 岳西县| 宁都县| 萍乡市| 桂阳县| 宜丰县| 晋江市| 鄂托克前旗| 鹤山市| 松阳县| 凌源市| 碌曲县| 甘洛县| 蒙城县| 阿拉善盟| 渭南市| 高淳县| 北川| 望江县| 宁陕县| 宜兰市| 德化县| 衡阳市| 新乐市| 营口市| 南乐县| 英德市| 乌苏市| 阜平县| 金湖县| 阜城县| 尚志市| 新闻|