puppypyb
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1329回复:5

请教 :d12 固件程序中的一个问题!!!

楼主#
更多 发布于:2003-02-13 16:36
各位高手!!!


typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
unsigned short wLength;
unsigned short wCount;
unsigned char * pData;
unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;
这个结构体中的 各个成员是什么意思阿  (第一个知道)在程序中起什么作用阿?

最新喜欢:

lxb_gdlxb_gd
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-14 11:11
楼上老兄的解释比我的简洁的多了呀,我还是表达不清
codestep
驱动牛犊
驱动牛犊
  • 注册日期2002-10-11
  • 最后登录2009-02-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-14 00:48
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
unsigned short wLength;
unsigned short wCount;
unsigned char * pData;
unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;

wLength:发送代码长度
wCount:发送代码计数
pData:数据缓冲指针

jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-13 22:00
我现在还没有遇到这个问题,所以就没有深究,不过我也认真想过这个问题,我觉得也就是对传输数据计数用的

我认为:
wLength是某次控制传输要传输的总数据量
wCount这次控制传输已经传输的数据量
pData是要传输数据的存放地址的地址指针
看下面这个例子:
void Chap9_BurstTransmitEP0(PUCHAR pData, USHORT len)
{
RaiseIRQL();
if(!ControlData.Abort)
{
if(ControlData.wLength > len)
    //要传输的数据总量的大小放入.wlength
    ControlData.wLength = len;
    //要传输的数据的地址指针给ControlData.Addr.pData
    ControlData.Addr.pData = pData;
    //如果一次不能把所有的数据都传完
    if( ControlData.wLength >= EP0_PACKET_SIZE)
    {
        //先传输端点0所能承载的最大数据量,然后将ControlData.wCount 增加相应的数量
        ControlData.wCount += ISP1581_WriteControlEndpoint(pData, EP0_PACKET_SIZE);
           //将端点0的状态标志设为datain,以便进行下一次数据传输
bISP1581flags.bits.DCP_state = USBFSM4DCP_DATAIN;
    }
    //如果总数据量小于端点0的最大包大小,那就一次传完。
    else
    {
        ControlData.wCount += ISP1581_WriteControlEndpoint(pData, ControlData.wLength);
        bISP1581flags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE;
    }
}
}


上面的东西不知正确与否,就算作为抛砖引玉吧,希望能有理解更深的同仁给出更多的意见和建议!
qiezi
驱动小牛
驱动小牛
  • 注册日期2002-10-17
  • 最后登录2005-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-13 20:15
关注!
puppypyb
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-13 17:25

help
游客

返回顶部