<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應用 > USB總線在遠程抄表系統(tǒng)中的應用

          USB總線在遠程抄表系統(tǒng)中的應用

          作者: 時間:2009-12-22 來源:網(wǎng)絡(luò) 收藏


            在主程序中完成對系統(tǒng)、PDID12的初始化,以及完成對d12的枚舉,將數(shù)據(jù)的發(fā)送接收都放在中斷程序中。PDID12有3組端點,使用默認端點0和端點2。將端點2作為數(shù)據(jù)傳輸?shù)耐ǖ?,當PDID12從USB收到一個數(shù)據(jù)包時,就對CPU產(chǎn)生一個外部中斷請求,CPU立即相應中斷,在中斷服務子程序中,將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū)中,隨后清零PDIUSBD12的內(nèi)部緩沖區(qū),對數(shù)據(jù)校驗,如果接收得數(shù)據(jù)正確,直接調(diào)用RS485數(shù)據(jù)發(fā)送子程序,將數(shù)據(jù)發(fā)送到RS485網(wǎng)絡(luò)。

            3.3 計算機軟件設(shè)計:

            計算機軟件主要包括,驅(qū)動的設(shè)計,動態(tài)連接庫的設(shè)計。驅(qū)動程序采用飛利浦提供的驅(qū)動,上位機程序使用api函數(shù)并封裝RS485的上層協(xié)議,提供給用戶使用的接口。本例采用VC編寫用戶程序和動態(tài)連接庫。從驅(qū)動中讀數(shù)據(jù)的程序如下,

            void readdata(unsigned char *rec)

            { unsigned char outbuf[105];

            HANDLE hFile, hDevice=0;

            BOOL bResult;

            ULONG nBytes = 25;

            hFile = open_file(PIPE02);

            if(hFile == INVALID_HANDLE_VALUE)

            {return;}

            hDevice = open_dev();

            bResult = ReadFile(hFile,outbuf,10,nBytes,NULL);

            if(bResult==FALSE)

            { DeviceIoControl(hFile,IOCTL_D12_RESET_PIPE,0,0,0,0,nBytes,NULL); }

            CloseHandle(hFile);

            CloseHandle(hDevice);

            }

            在使用這個函數(shù)的時候,只需要添加如下說明。

            extern C DllImport void readdata ( unsigned char * );

            4 結(jié) 論

            由于采用了USB,克服了原來使用RS232接口速度慢的瓶頸,提高了的數(shù)據(jù)傳輸速率,該方案已經(jīng)成功的得到應用,穩(wěn)定可靠,有廣闊的應用前景。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();