打印

没有read都读不出来

[复制链接]
514|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
supernan|  楼主 | 2017-10-29 13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在简单做了一个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都读不出来呢?
沙发
xxrs| | 2017-10-29 13:55 | 只看该作者
CY不是有个API手册吗,看看那个啊。

使用特权

评论回复
板凳
houcs| | 2017-10-29 13:56 | 只看该作者
你确定固件程序已经跑通了?

使用特权

评论回复
地板
supernan|  楼主 | 2017-10-29 14:01 | 只看该作者

我用地不是CYAPI的,是ezusb的,交到我手上的就是这个,用DeviceIoControl来控制的。

使用特权

评论回复
5
houcs| | 2017-10-29 14:02 | 只看该作者

感觉好像是句柄的问题

使用特权

评论回复
6
liliang9554| | 2017-10-29 14:03 | 只看该作者


以H.264,MPEG2为例,这些算法都用YUV模式,很少有用RGB的,一般RGB格式的图像文件,一般也先转换为YUV图像进行编码

使用特权

评论回复
7
chenjunt| | 2017-10-29 14:04 | 只看该作者
全部照搬ezusb的源程序都不行?

使用特权

评论回复
8
supernan|  楼主 | 2017-10-29 14:05 | 只看该作者
感觉是句柄获取错误,因为读数据读两次就会进程死在那里。但是我怎么验证我的想法呢?

使用特权

评论回复
9
ousj| | 2017-10-29 14:06 | 只看该作者
你应该想怎么纠正这个用法

使用特权

评论回复
10
supernan|  楼主 | 2017-10-29 14:06 | 只看该作者

我的句柄获取就是用的createfile方式,就如一楼写的,完全照搬ezusb程序啊。

使用特权

评论回复
11
renyaq| | 2017-10-29 14:07 | 只看该作者
估计是你deviceiocontrol参数里的buffer的问题。

使用特权

评论回复
12
supernan|  楼主 | 2017-10-29 14:08 | 只看该作者

嗯,设置任何一个数都读不出来,唯独设置成buffer=1024*1024;就能读出了。

使用特权

评论回复
13
morrisk| | 2017-10-29 14:08 | 只看该作者
对啊,说明不是你的调用问题,而是固件问题

使用特权

评论回复
14
supernan|  楼主 | 2017-10-29 14:09 | 只看该作者
哦,我用ezusb control panel也是这样,好吧,这个皮球就算踢到固件那位同学那里了。

使用特权

评论回复
15
xxmmi| | 2017-10-29 14:09 | 只看该作者

你用的上位机API也太老了,还是什么EZMR,赶快升级一下SDK吧!

使用特权

评论回复
16
supernan|  楼主 | 2017-10-29 14:10 | 只看该作者
我一开始就是用CYconsole来开发,用CYAPI来做。但是用ezusb control panel才能正确识别设备,而且能进行get pipes等操作。用新的版本就不能够,奇怪啊

使用特权

评论回复
17
zwll| | 2017-10-29 14:10 | 只看该作者
估计第一次做USB所以也不知道是为什么,就将就旧的开发平台做。

使用特权

评论回复
18
supernan|  楼主 | 2017-10-29 14:11 | 只看该作者
嗯,我也奇怪呢,按说旧的能识别,新的也应该能识别呢。为什么我的不能识别呢?

使用特权

评论回复
19
zyf部长| | 2017-10-29 14:11 | 只看该作者
可能还是固件同学的问题吧?哈哈

使用特权

评论回复
20
supernan|  楼主 | 2017-10-29 14:12 | 只看该作者
好吧。。。汗一个,先结贴了

使用特权

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

本版积分规则

730

主题

10412

帖子

6

粉丝