打印

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

[复制链接]
7307|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大洋芋|  楼主 | 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 | 只看该作者
你确定固件程序已经跑通了。

使用特权

评论回复
5
大洋芋|  楼主 | 2011-10-30 15:56 | 只看该作者
我用地不是CYAPI的,是ezusb的,哭死。交到我手上的就是这个,用DeviceIoControl来控制的。感觉好像是句柄的问题?不晓得。全部照搬ezusb的源程序都不行,我真搓!

使用特权

评论回复
6
大洋芋|  楼主 | 2011-10-30 16:32 | 只看该作者
感觉是句柄获取错误,因为读数据读两次就会进程死在那里。但是我怎么验证我的想法呢?或者是怎么纠正这个用法呢?我的句柄获取就是用的createfile方式,就如一楼写的,完全照搬ezusb程序啊。拜托大家看看啊。

使用特权

评论回复
7
liangziusb| | 2011-11-2 08:17 | 只看该作者
你用的上位机API也太老了,还是什么EZMR,赶快升级一下SDK吧!
另外,说一下,我这儿USB2.0的资料多的是,现在已经在研究USB3.0了,呵呵。

使用特权

评论回复
8
大洋芋|  楼主 | 2011-11-2 10:54 | 只看该作者
我一开始就是用CYconsole来开发,用CYAPI来做。但是用ezusb control panel才能正确识别设备,而且能进行get pipes等操作。用新的版本就不能够,奇怪啊!因为第一次做USB所以也不知道是为什么,就将就旧的开发平台做。
我也奇怪呢,按说旧的能识别,新的也应该能识别呢。为什么我的不能识别呢?可能还是固件同学的问题吧?:P

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

1

粉丝