| 在與網(wǎng)友交流D12開發(fā)心得時,發(fā)現(xiàn)有些網(wǎng)友對與PC應(yīng)用軟件與單片機之間數(shù)據(jù)交換的過程有些困惑,不明白PC應(yīng)用軟件是怎么將數(shù)據(jù)發(fā)給單片機以及單片機是怎樣通過D12將數(shù)據(jù)傳給PC應(yīng)用軟件的。在此,談?wù)剛人對這一過程的理解,希望對大家有些幫助。 用戶開發(fā)的USB設(shè)備一般不是windows開發(fā)的標準設(shè)備,而在VC軟件中要對一個設(shè)備進行操作,必須先用CreateFile函數(shù)打開設(shè)備才能對其進行讀寫操作。當我們采用driverstudio開發(fā)驅(qū)動時,框架會產(chǎn)生一個OpenByInterface函數(shù),它將CreateFile函數(shù)封裝在了里面,其原型如下: HANDLE OpenByInterface( GUID* pClassGuid, // points to the GUID that identifies the interface class DWORD instance, // specifies which instance of the enumerated devices to open PDWORD pError // address of variable to receive error status ) 當我需要打開一個USB設(shè)備時只需要知道該設(shè)備的Guid就行了。這個所謂的Guid就是windows里面唯一標記硬件設(shè)備的標志,可由driverstudio自動產(chǎn)生,不需要人工干預(yù)。 在打開設(shè)備以后,我們就可以調(diào)用讀寫函數(shù)對設(shè)備進行讀寫了。VC中與驅(qū)動交流的函數(shù)主要是DeviceIoControl函數(shù)。該函數(shù)定義如下: BOOL DeviceIoControl( HANDLE hDevice, |