日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
PC與單片機USB(D12)數(shù)據(jù)通訊過程描述 (轉(zhuǎn))
PC與單片機USB(D12)數(shù)據(jù)通訊過程描述 (轉(zhuǎn))
 更新時間:2008-8-17 16:47:27  點擊數(shù):9
【字體: 字體顏色
/ handle to device,設備句柄
  DWORD dwIoControlCode,       // operation,IOCTL操作碼
  LPVOID lpInBuffer,           // input data buffer,輸入數(shù)據(jù)緩沖//區(qū)
  DWORD nInBufferSize,         // size of input data buffer,輸入//數(shù)據(jù)緩沖區(qū)大小
  LPVOID lpOutBuffer,          // output data buffer,輸出數(shù)據(jù)緩沖//區(qū)
DWORD nOutBufferSize,        // size of output data buffer,輸出
//數(shù)據(jù)緩沖區(qū)大小
  LPDWORD lpBytesReturned,     // byte count,通訊字節(jié)計數(shù)
  LPOVERLAPPED lpOverlapped    // overlapped information,異步通訊//信息
);

參數(shù)中的dwIoControlCode對應著驅(qū)動中定義的IOCTL操作碼。該操作碼唯一定義了驅(qū)動的各項操作,比如讀寫端點1,讀寫端點2等。其他參數(shù)請參考msdn。

利用上述函數(shù),分別編寫VC中讀寫各端點的函數(shù)。在本人提供的應用程序?qū)嵗锒x了以下幾個函數(shù):

DWORD CTestDevice::Endpoint1ReadPipes(UINT Length, void *pBuffer)

DWORD CTestDevice::Endpoint1WritePipes(UINT Length, void *pBuffer)

DWORD CTestDevice::ReadBulkPipes(UINT Length,void* pBuffer,DWORD* dwBytesTransferred)

DWORD CTestDevice::WriteBulkPipes(UINT Length,void* pBuffer,DWORD* dwBytesTransferred)

在程序中,定義一個CTestDevice類,然后調(diào)用上面的函數(shù)即實現(xiàn)了對4D12端點的同步讀寫操作。由于異步讀寫需要更深層次的驅(qū)動的知識,所以不做探討。

PC應用軟件希望發(fā)送數(shù)據(jù)給單片機時,只需調(diào)用Endpoint1WritePipes或者WriteBulkPipes(針對不同端點,下同)函數(shù),剩下的USB底層數(shù)據(jù)傳送則交給了驅(qū)動與D12。當數(shù)據(jù)傳送過來后,D12便觸發(fā)中斷,單片機在查詢了中斷寄存器后便知道PC通過哪個端點發(fā)送數(shù)據(jù)過來,隨后讀出該端點緩沖區(qū)的數(shù)據(jù),進行操作。

當單片機需要發(fā)送數(shù)據(jù)給PC應用軟件時,只要調(diào)用D12_WriteEndpoint函數(shù)即可將數(shù)據(jù)通過D12傳送到PC端。那么PC應用軟件怎么知道數(shù)據(jù)已經(jīng)過來了呢?在同步數(shù)據(jù)讀寫方式下,PC應用軟件一般采用查詢的方式。大家可以看到DeviceIoControl函數(shù)中定義了輸出緩沖區(qū)和輸入緩沖區(qū)。PC應用軟件在得到單片機發(fā)送過來的數(shù)據(jù)前,一直查詢輸入緩沖區(qū)的數(shù)據(jù)有沒變化。一旦數(shù)據(jù)有變化,表明單片機已經(jīng)發(fā)送數(shù)據(jù)過來,然后讀出緩沖區(qū)的數(shù)據(jù)進行操作。當然這有個很大的缺點,就是PC應用軟件進行查詢時,就不能再做別的事情了,線程被阻塞。這個可以通過多線程的方式解決。

當采用異步讀寫的時候,就可以避免上面的問題,它類似與一種中斷機制,即當數(shù)據(jù)傳送過來時,驅(qū)動會發(fā)送一個IRP包通知應用程序。在這之前,應用程序完全可以處理別的事情,而不需要等待。當然這種方式是以增加驅(qū)動程序難度為代價的,對于初學者來說還是過于復雜了。

  • 上一篇: 從一個笑話看軟件開發(fā)管理
  • 下一篇: [轉(zhuǎn)載]單片機硬件系統(tǒng)設計原則
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1