| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
用過(guò)cy68013的前輩請(qǐng)指教,謝謝! | 
  
| 作者:hai_sha 欄目:單片機(jī) | 
我想用68013實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)傳輸,但要求很高的可靠性,現(xiàn)在硬件已經(jīng)出來(lái)了,用開(kāi)發(fā)板的軟件試了下官方提供的例程(BULKloop)能正常運(yùn)行.上位機(jī)的軟件準(zhǔn)備用VB來(lái)做,調(diào)用其驅(qū)動(dòng)ezusb.sys需要調(diào)用API函數(shù)creatfile()和iocontrol()由于上位機(jī)編程是第一次,所以沒(méi)經(jīng)驗(yàn),現(xiàn)在主要問(wèn)題是: 1:如何獲得設(shè)備的句柄? 2:獲得句柄后如果想發(fā)送數(shù)據(jù)或讀取數(shù)據(jù)(BULK傳輸),發(fā)送的控制信號(hào)(調(diào)用iocontrol())的順序是怎樣的?下位機(jī)要作怎樣的反應(yīng)呢? 3:有沒(méi)有用VB變好的樣例程序可以參考? 謝謝各位!  | 
  
| 2樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/2/23 9:43:00 發(fā)布:
         沒(méi)人嗎?  | 
  |
| 3樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/2/24 13:31:00 發(fā)布:
         為什么這段程序打不開(kāi)呢?Createfile()返回的總是-1 Private Sub Form_Load() 'Handle HidDevice Dim HidDevice As LONG DevicePathName = "\\.\ezusb-0" HidDevice = CreateFile _ (DevicePathName, _ GENERIC_WRITE, _ FILE_SHARE_WRITE, _ 0, _ OPEN_EXISTING, _ 0, _ 0) 'INVALID_HANDLE_VALUE = -1 If (HidDevice = INVALID_HANDLE_VALUE) Then 'OpenDevice = False 'Form1.Shape6.Height = (MaxTemper - 0) * TemperScale MsgBox " 未發(fā)現(xiàn)與之通信的USB設(shè)備!" + _ Chr(13) & Chr(10) + _ Chr(13) & Chr(10) + _ " 請(qǐng)確定其硬件設(shè)備是否已連接," + _ Chr(13) & Chr(10) + _ "并確定其驅(qū)動(dòng)程序是否已加載。", _ 17, "可惡" Else MsgBox " 發(fā)現(xiàn)與之通信的USB設(shè)備!" + _ Chr(13) & Chr(10) + _ Chr(13) & Chr(10) + _ " 請(qǐng)確定," + _ Chr(13) & Chr(10) + _ "!", _ 1, "成功打開(kāi)設(shè)備" 'OpenDevice = True End If End Sub Public Declare Function CreateFile _ Lib "kernel32" _ Alias "CreateFileA" _ (ByVal lpFileName As String, _ ByVal dwDesiredAccess As LONG, _ ByVal dwShareMode As LONG, _ ByRef lpSecurityAttributes As LONG, _ ByVal dwCreationDisposition As LONG, _ ByVal dwFlagsAndAttributes As LONG, _ ByVal hTemplateFile As LONG) _ As LONG '***************************************************************** 'API constants. '***************************************************************** 'IOCTL Code 'Public Const FILE_DEVICE_UNKNOWN = &H22 Public Const Cyusb_IOCTL_INDEX = &H800 Public Const METHOD_BUFFERED = &H0 Public Const FILE_ANY_ACCESS = &H0 'CreateFile Public Const GENERIC_READ = &H80000000 Public Const GENERIC_WRITE = &H40000000 Public Const FILE_SHARE_READ = &H1 Public Const FILE_SHARE_WRITE = &H2 Public Const OPEN_EXISTING = 3 'Public Const INVALID_HANDLE_VALUE = -1 Public Const INVALID_HANDLE_VALUE = -1  | 
  |
| 4樓: | >>參與討論 | 
| 作者: ydff 于 2006/2/24 13:56:00 發(fā)布:
         我用VC寫(xiě)過(guò),首先應(yīng)該聲明一個(gè)文件類(lèi)的對(duì)象. 不知道VB里怎么回事?  | 
  |
| 5樓: | >>參與討論 | 
| 作者: lanwwbhu 于 2006/2/24 15:19:00 發(fā)布:
         可以購(gòu)買(mǎi)一個(gè)CY7C68013開(kāi)發(fā)板參考 FCUSB-CY7C68013-128開(kāi)發(fā)板 http://www.fcctec.com/ShowProduction.aspx?id=2 這是VC代碼 //打開(kāi)設(shè)備 BOOL bOpenDriver (HANDLE * phDeviceHandle, PCHAR devname) { CHAR completeDeviceName[64] = ""; CHAR pcMsg[64] = ""; strcat (completeDeviceName, "\\\\.\\" ); strcat (completeDeviceName, devname); *phDeviceHandle = CreateFile( completeDeviceName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (*phDeviceHandle == INVALID_HANDLE_VALUE) { return (FALSE); } else { return (TRUE); } }  | 
  |
| 6樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/2/24 15:28:00 發(fā)布:
         謝謝兩位,我覺(jué)得可能是哪個(gè)參數(shù)不對(duì) 尤其是第一個(gè)參數(shù). 開(kāi)發(fā)板我有啊,工具包也有,只是例程是VC寫(xiě)的,以前沒(méi)用過(guò)VC,看不明白. lanwwbhu可以留個(gè)電話(huà)嗎?電話(huà)交流比較快一點(diǎn),不知你那供不供芯片?56腳的,我們以后要量產(chǎn)的  | 
  |
| 7樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/2/27 22:12:00 發(fā)布:
         唉,郁悶,看VC算了  | 
  |
| 8樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/3/1 14:17:00 發(fā)布:
         VC好象是打開(kāi)了設(shè)備 VC中無(wú)須聲明便可調(diào)用API?(我沒(méi)聲明好象沒(méi)問(wèn)題). 照GPD的說(shuō)明: HANDLE DEVICEHandle; DEVICEHandle=CreateFile("\\\\.\\ezusb-0" GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); //測(cè)試代碼 if(DEVICEHandle=INVALID_HANDLE_VALUE) MessageBox("Fail to Open DEVICE!"); else MessageBox("Success!"); // 編譯通過(guò)后執(zhí)行,插上USB板時(shí),消息框?yàn)镾uccess!.斷開(kāi)USB板時(shí)顯示Fail to Open DEVICE! 這是否證明設(shè)備已經(jīng)正常打開(kāi)?  | 
  |
| 9樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/3/1 14:44:00 發(fā)布:
         發(fā)送控制代碼時(shí)出問(wèn)題 代碼: #include "ezusbsys.h" #include "bulkloop.h" //官方樣例程序bulkloop的頭文件之一 #include "devioctl.h" //ezusbsys.h中關(guān)于dwIoControlCode的定義需要 //這個(gè)文件,安裝DDK后得到的. .. .. .. PVOID PvBuffer=NULL; DWORD nBytes=0; PvBuffer=malloc(sizeof(Usb_device_Descriptor)); LONG bResult=0; bResult=DeviceIoControl(DeviceHandle, IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR, NULL, 0, PvBuffer, sizeof(Usb_Device_Descriptor), &nBytes, NULL); 編譯后執(zhí)行(我是用一個(gè)按扭來(lái)觸發(fā)的,68013中先燒好經(jīng)過(guò)測(cè)試的樣例程序,連接到PC),這下好了,電腦立刻重新啟動(dòng),試了幾次都這樣,真是奇怪. 不知是上面返回的句柄不對(duì)控制別的器件去了,還是第二個(gè)參數(shù)有問(wèn)題? 我還沒(méi)找到關(guān)于IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR的定義,資料太雜不記得是哪份文檔里有講到這些IO控制代碼的具體值.我將IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR換成0x0801編譯后執(zhí)行就沒(méi)重啟了,但也不知道發(fā)成功沒(méi)有.固件程序是官方的,測(cè)試了沒(méi)問(wèn)題,對(duì)于這種標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求應(yīng)該會(huì)予以處理.再怎么樣也不至于重啟啊. 請(qǐng)做過(guò)的朋友幫忙看看,到底是哪里出了問(wèn)題?還有哪位知道IO控制代碼(第二個(gè)參數(shù))的具體定義在哪個(gè)文件里面? 謝謝!就算路過(guò)的朋友幫忙頂一下,也很感謝!  | 
  |
| 10樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/3/3 10:19:00 發(fā)布:
         看VCing,頂一下!  | 
  |
| 11樓: | >>參與討論 | 
| 作者: hai_sha 于 2006/3/7 13:40:00 發(fā)布:
         怎么都沒(méi)人說(shuō)話(huà)呢?全靠自己摸索好慢啊 現(xiàn)在不重起了,讀回來(lái)的設(shè)備描述符也是對(duì)的. 雖然我以前上這個(gè)論壇的時(shí)候就感覺(jué)到真正要解決問(wèn)題還得靠自己,但有時(shí)候哪怕是有人鼓勵(lì)下也好啊,太讓我失望了,難道這東西技術(shù)含量很高很需要保密嗎?應(yīng)該不是吧. 我相信我遲早會(huì)弄出來(lái),只是苦于以前一直搞單片機(jī),上位機(jī)軟件的基礎(chǔ)太差.現(xiàn)在開(kāi)始補(bǔ)了  * - 本貼最后修改時(shí)間:2006-3-9 10:29:07 修改者:hai_sha  | 
  |
| 12樓: | >>參與討論 | 
| 作者: wanyiba 于 2006/7/22 18:28:00 發(fā)布:
         偶也剛學(xué)上位機(jī)的,支持你!  | 
  |
| 13樓: | >>參與討論 | 
| 作者: alice25 于 2009/10/19 10:40:07 發(fā)布:
         我想請(qǐng)教8樓的,我也是這樣寫(xiě)的代碼,編譯通過(guò)了,為什么我插上USB板時(shí)顯示Fail to Open DEVICE?  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)  |