阅读:2904回复:17
Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题
使用 Ez_USB 开发板
用他的工具 EzMr.exe 下载例子 bulktest.hex 没有问题 自己写了一个 总是到 VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; char *buffer; OutputMemo->Lines->Add(\"Vendor Request\"); myRequest.request = (UCHAR)(pTh->request); myRequest.value = (USHORT)(pTh->value); myRequest.index = (USHORT)(pTh->index); myRequest.direction = pTh->direction; buffer = (char *)(pTh->pBuf); myRequest.requestType=2; myRequest.recepient=0; myRequest.requestTypeReservedBits=130; if(hDevice == NULL)return false; bResult = DeviceIoControl(hDevice, IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST, &myRequest, sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL), buffer, pTh->length, (unsigned long *)&nBytes, NULL); USB死掉 myRequest的各项参数均反复检查无误 请教高手是什么问题? EzMr.exe里边有 p_recalcThreadInfo->m_hEventOpDone = CreateEvent(NULL, TRUE, FALSE, NULL); // manual reset, initially set DWORD ThreadStat = WaitForSingleObject(p_recalcThreadInfo->m_hEventOpDone, nWaitTime); 不知有什么用? |
|
|
沙发#
发布于:2002-07-12 17:45
20分的问题,高手请进
|
|
|
板凳#
发布于:2002-07-12 18:35
是否向EEPROM写,如果是的话,要等15秒左右
|
|
地板#
发布于:2002-07-12 18:38
在问一下,你在Control Panel download出不出错?
|
|
地下室#
发布于:2002-07-12 18:50
不是向EEPROM写
在Control Panel download不出错 |
|
|
5楼#
发布于:2002-07-12 19:15
1先把你原来的handle close
2临时创建一个hdevice,用它OpenDriver,保证driver name(我的是EZ_USB0)与以前相同 3发DeviceIoControl(hDevice, IOCTL_Ezusb_VENDOR_REQUEST,&myRequest,sizeof(VENDOR_REQUEST_IN),NULL,0,&uBytes,NULL)// 你可以试这个,我是成功了 4CloseHandle 5Sleep(xxx) //xxx依据固件程序 6 重新用原来的handle和设备名Open driver |
|
6楼#
发布于:2002-07-13 12:54
我要传输的是
typedef struct _VENDOR_OR_CLASS_REQUEST_CONTROL { UCHAR direction; UCHAR requestType; UCHAR recepient; UCHAR requestTypeReservedBits; UCHAR request; USHORT value; USHORT index; }VENDOR_OR_CLASS_REQUEST_CONTROL,*PVENDOR_OR_CLASS_REQUEST_CONTROL; 而不是 typedef struct _VENDOR_REQUEST_IN { BYTE bRequest; WORD wValue; WORD wIndex; WORD wLength; BYTE direction; BYTE bData; } VENDOR_REQUEST_IN, *PVENDOR_REQUEST_IN; 数据结构不同 |
|
|
7楼#
发布于:2002-07-13 15:38
VENDOR_OR_CLASS_REQUEST_CONTROL我没试过
我使用的是VENDOR_REQUEST_IN 你可以试一下 关键是先关闭原来的设备句柄,创建一个临时句柄,最后成功后再付给全局句柄 |
|
8楼#
发布于:2002-07-15 10:39
VENDOR_OR_CLASS_REQUEST_CONTROL中
myRequest.request = 0xA3 可能对应 VENDOR_REQUEST_IN中 bRequest = 0xA3 但其他参数呢????? |
|
|
9楼#
发布于:2002-07-19 09:43
我的请求类型是说明书中
SETUP的八个字节中的 0 bmRequest=0x40 Vendor Request,OUT 1 bRequest=0xA3 Reserved by Cypress Semiconductor |
|
|
10楼#
发布于:2002-07-19 09:50
能留下你的EMAIL 地址吗?有问题请教
|
|
11楼#
发布于:2002-07-19 12:30
cuiming@solar.com.cn
|
|
|
12楼#
发布于:2002-07-23 11:05
我也推一下!急
|
|
|
13楼#
发布于:2002-07-24 14:52
sunkai 我想给你分,请你在这里出现一下
|
|
|
14楼#
发布于:2002-07-24 17:49
^_^,tks
|
|
15楼#
发布于:2002-07-25 11:08
这个帖子结了吧
欲知后事请看: 请sunkai关注:Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题 :) :) :) [编辑 - 7/25/02 by CuiMing_73] |
|
|
16楼#
发布于:2008-08-12 11:24
BULK 读写代码如下:
case IDC_TRAN_BULK_DATA: ...... char *buffer = NULL; buffer = (char *)pTh->pBuf 我想问下这里的(char *)pTh->pBuf,pBuf里的数据怎么读取出来的? 那既然pBuf里有数据了,为什么还要执行这个控制函数??? bResult = DeviceIoControl (hDevice, ioctl_val, &bulkControl, sizeof (BULK_TRANSFER_CONTROL), buffer, length, (unsigned long *)&nBytes, NULL); 非常感谢答复的朋友们。 |
|
|
17楼#
发布于:2008-08-14 16:16
cuiming@solar.com.cn给你发了EMALL,怎么发不出去,我的是qige729@163.com
|
|
|