lpwnd
驱动小牛
驱动小牛
  • 注册日期2003-03-04
  • 最后登录2012-01-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1650回复:4

READFILE 为何返回0?????

楼主#
更多 发布于:2003-05-19 23:29
定义了IN1 和OUT2两个端点,找到设备后,WRITEFILE成功,READFILE 为什么失败,返回0。
怎么会事呀?????
lpwnd
驱动小牛
驱动小牛
  • 注册日期2003-03-04
  • 最后登录2012-01-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-20 12:34
Result = ReadFile _
    (HidDevice, _
    ReadBuffer(0), _
    CLng(Capabilities.OutputReportByteLength), _
    NumberOfBytesRead, _
    0)
高人们请看一下,为什么result的值是零,
而下边的些却能成功????
Result = WriteFile _
    (HidDevice, _
    SendBuffer(0), _
    CLng(Capabilities.OutputReportByteLength), _
    NumberOfBytesWritten, _
    0)
lpwnd
驱动小牛
驱动小牛
  • 注册日期2003-03-04
  • 最后登录2012-01-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-20 19:36
各路高人,谁能帮帮俺,我急啊。。。
现在数据已经在IN1BUF里了,如何用应用程序去出来啊??(是HID类的设备)
hglzw
驱动小牛
驱动小牛
  • 注册日期2001-06-12
  • 最后登录2006-03-03
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-21 09:46
这个问题我已说过多次,在readfile前,先通知firmware把d12 buffer方上数据并使其有效,这时才能读回东西。firmware的中断是在读完buffer之后才产生,不是再读之前!
应用:
....
deviceioctrl(.read_write_register,nsize);
readfile(nsize);
....
驱动:
 switch(ioctrl)
....
case read_write_register:
       buildvendreguest(..);
....
d12_read(...)
...
firmware:
   void  read_write_register()
{
  if(read)
   write_endpoint(npoint,.nsize<=64..);
//if nsize>64,write 64 else write nsize
.....
}
void rxd_done(...)读完发生中断
{
  if(nsize<=64)
    return;
 else
   nsize-=64;

   write_endpoint(npoint,.nsize<=64..);
//if nsize>64,write 64 else write nsize

}
 
[img]http://www.kinboh.com/images/5130.jpg[/img]
lpwnd
驱动小牛
驱动小牛
  • 注册日期2003-03-04
  • 最后登录2012-01-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-21 14:34
这个问题我已说过多次,在readfile前,先通知firmware把d12 buffer方上数据并使其有效,这时才能读回东西。firmware的中断是在读完buffer之后才产生,不是再读之前!
应用:
....
deviceioctrl(.read_write_register,nsize);
readfile(nsize);
....
驱动:
 switch(ioctrl)
....
case read_write_register:
       buildvendreguest(..);
....
d12_read(...)
...
firmware:
   void  read_write_register()
{
  if(read)
   write_endpoint(npoint,.nsize<=64..);
//if nsize>64,write 64 else write nsize
.....
}
void rxd_done(...)读完发生中断
{
  if(nsize<=64)
    return;
 else
   nsize-=64;

   write_endpoint(npoint,.nsize<=64..);
//if nsize>64,write 64 else write nsize

}
  

感谢感谢,但是我的是HID设备,没有写驱动程序。
我以为,只要有数据在IN1BUF 里,readfile 就可以成功,因为古件中并没有为WRITEFILE 设置函数,但WRITEFILE 能写成功,所以我以为古件中也无须为READFILE 设置函数,但是

先通知firmware把d12 buffer方上数据并使其有效


我用的是CY 的AN2131QC ,而且数据已经在IN1BUF 里了,如何使其有效呢???
游客

返回顶部