CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2904回复:17

Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题

楼主#
更多 发布于:2002-07-08 13:13
使用 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);
不知有什么用?
cuiming73@263.net 10101973@sina.com
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-12 17:45
20分的问题,高手请进
cuiming73@263.net 10101973@sina.com
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-12 18:35
是否向EEPROM写,如果是的话,要等15秒左右
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-12 18:38
在问一下,你在Control Panel download出不出错?
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-12 18:50
不是向EEPROM写
在Control Panel download不出错
cuiming73@263.net 10101973@sina.com
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
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
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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;

数据结构不同
cuiming73@263.net 10101973@sina.com
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-13 15:38
VENDOR_OR_CLASS_REQUEST_CONTROL我没试过
我使用的是VENDOR_REQUEST_IN
你可以试一下
关键是先关闭原来的设备句柄,创建一个临时句柄,最后成功后再付给全局句柄
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-15 10:39
VENDOR_OR_CLASS_REQUEST_CONTROL中
myRequest.request = 0xA3
可能对应
VENDOR_REQUEST_IN中
bRequest = 0xA3
但其他参数呢?????
cuiming73@263.net 10101973@sina.com
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-19 09:43
我的请求类型是说明书中
SETUP的八个字节中的
0 bmRequest=0x40 Vendor Request,OUT
1 bRequest=0xA3  Reserved by Cypress Semiconductor
cuiming73@263.net 10101973@sina.com
服务器
驱动牛犊
驱动牛犊
  • 注册日期2002-07-18
  • 最后登录2004-09-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-19 09:50
能留下你的EMAIL 地址吗?有问题请教
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-19 12:30
cuiming@solar.com.cn
cuiming73@263.net 10101973@sina.com
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-23 11:05
我也推一下!
cuiming73@263.net 10101973@sina.com
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-24 14:52
sunkai 我想给你分,请你在这里出现一下
cuiming73@263.net 10101973@sina.com
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-24 17:49
^_^,tks
CuiMing_73
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-25 11:08
这个帖子结了吧
欲知后事请看:

请sunkai关注:Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题


:)  :)  :)

[编辑 -  7/25/02 by  CuiMing_73]
cuiming73@263.net 10101973@sina.com
jack_qi
驱动牛犊
驱动牛犊
  • 注册日期2008-07-15
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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);
非常感谢答复的朋友们。
交流是为了更好的学习
jack_qi
驱动牛犊
驱动牛犊
  • 注册日期2008-07-15
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2008-08-14 16:16
cuiming@solar.com.cn给你发了EMALL,怎么发不出去,我的是qige729@163.com
交流是为了更好的学习
游客

返回顶部