上位机程序怎么只能写不能读呢?想得都快哭了。

[复制链接]
 楼主| 大洋芋 发表于 2011-10-30 15:10 | 显示全部楼层 |阅读模式
本帖最后由 大洋芋 于 2011-10-30 15:13 编辑

现在简单做了一个VC上位机程序访问驱动,获取数据。
     因为交到我这里的时候就是用的EZUSB,所以我也是用的EZUSB.SYS。不过我想应该没什么问题的。完全仿造EZMR这个工程看了一遍,写出的来得程序只能写数据而不能读数据,怪哉啊!怪哉!
   bResult = DeviceIoControl (hDevice,
      IOCTL_EZUSB_BULK_WRITE,      
      &bulkControl,
      sizeof (BULK_TRANSFER_CONTROL),
      buffer,
      length,
      (unsigned long *)&nBytes,
      NULL);
      ——————这是写的调用,完全参照control panel里的程序。
但是为什么完全仿照这个的读数据却返回不了值呢?
bResult = DeviceIoControl (hDevice,
      IOCTL_EZUSB_BULK_READ,
      &bulkControl,
      sizeof (BULK_TRANSFER_CONTROL),
      buffer,
      length,
      (unsigned long *)&nBytes,
      NULL);——————我用VC调试,看到所有的参数都与control panel一样,但是传进去都一样,为什么传出来的就是false呢?
     读与写有什么配置上的差异呢?头都快想破了都没想出来。
     另:
     因为control panel里的create File里的申明是这样的:
CreateFile(   completeDeviceName,
                              GENERIC_WRITE,
                              FILE_SHARE_WRITE
,
                              NULL,
                              OPEN_EXISTING,
                              0,
                              NULL);
我看到没有GENERIC_READ,
我自己的申明如下:
WhDevice = CreateFile("[url=]\\\\.\\ezusb-0[/url]",
               GENERIC_READ|GENERIC_WRITE,
               FILE_SHARE_READ|FILE_SHARE_WRITE,
              NULL,
              OPEN_EXISTING,
              0,//FILE_ATTRIBUTE_NORMAL,
              NULL);
也读不出来啊。为什么他没有read能读出来,而我有没有read都读不出来呢?
    哭死!!!
 楼主| 大洋芋 发表于 2011-10-30 15:23 | 显示全部楼层
没有人回复么?我真的无计可施啊,已经搞了半个多月了,完全想不通啊!!流泪盼回复啊
Donald-Duck 发表于 2011-10-30 15:54 | 显示全部楼层
CY不是有个API手册吗,看看那个啊。
Donald-Duck 发表于 2011-10-30 15:55 | 显示全部楼层
你确定固件程序已经跑通了。
 楼主| 大洋芋 发表于 2011-10-30 15:56 | 显示全部楼层
我用地不是CYAPI的,是ezusb的,哭死。交到我手上的就是这个,用DeviceIoControl来控制的。感觉好像是句柄的问题?不晓得。全部照搬ezusb的源程序都不行,我真搓!
 楼主| 大洋芋 发表于 2011-10-30 16:32 | 显示全部楼层
感觉是句柄获取错误,因为读数据读两次就会进程死在那里。但是我怎么验证我的想法呢?或者是怎么纠正这个用法呢?我的句柄获取就是用的createfile方式,就如一楼写的,完全照搬ezusb程序啊。拜托大家看看啊。
liangziusb 发表于 2011-11-2 08:17 | 显示全部楼层
你用的上位机API也太老了,还是什么EZMR,赶快升级一下SDK吧!
另外,说一下,我这儿USB2.0的资料多的是,现在已经在研究USB3.0了,呵呵。
 楼主| 大洋芋 发表于 2011-11-2 10:54 | 显示全部楼层
我一开始就是用CYconsole来开发,用CYAPI来做。但是用ezusb control panel才能正确识别设备,而且能进行get pipes等操作。用新的版本就不能够,奇怪啊!因为第一次做USB所以也不知道是为什么,就将就旧的开发平台做。
我也奇怪呢,按说旧的能识别,新的也应该能识别呢。为什么我的不能识别呢?可能还是固件同学的问题吧?:P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部