打印

采集出来的都是一个数

[复制链接]
667|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ousj|  楼主 | 2016-5-11 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在做基于CY7C68013A+FPGA的数据采集系统,采用同步块传输模式,CYUSB.SYS驱动。现在参照USB应用开发实例详解上的步骤来写上位机程序,先打开USB设备,然后直接用read函数来采集数据,但是采集出来的都是一个数
沙发
morrisk| | 2016-5-11 22:22 | 只看该作者
漏了哪个步骤了吧

使用特权

评论回复
板凳
ousj|  楼主 | 2016-5-11 22:23 | 只看该作者

需要先查找输入输出端点吗?具体都有些什么步骤?

使用特权

评论回复
地板
小小猫咪| | 2016-5-11 22:24 | 只看该作者

CY网上有个VC++上位机开发的应用手册http://www.cypress.com/?rID=53167
,看看这个应该很有帮助。

使用特权

评论回复
5
kangzj| | 2016-5-11 22:25 | 只看该作者
如果还是不是很明白,建议你下载安装SuiteUSB 3.4 (http://www.cypress.com/?rID=34870),CY提供了很完整的Windows下的应用程序代码,自己根据自己的设计改改参数配置。

使用特权

评论回复
6
ousj|  楼主 | 2016-5-11 22:28 | 只看该作者
我看了一下那个应用手册,它调用的是CYUSB.dll,可是我安装了驱动CYUSB.SYS以及CY3684开发包,里面只发现CYAPI.H,和CYAPI.LIB

使用特权

评论回复
7
juventus9554| | 2016-5-11 22:29 | 只看该作者
那意思还不能直接调用CYUSB.dll

使用特权

评论回复
8
ousj|  楼主 | 2016-5-11 22:30 | 只看该作者
需要自己下载一个放进项目路径里面?

使用特权

评论回复
9
llljh| | 2016-5-11 22:31 | 只看该作者
是啊

使用特权

评论回复
10
ousj|  楼主 | 2016-5-11 22:32 | 只看该作者
我现在安装的是cypress usb console,上位机编程用的是vc++6.0

使用特权

评论回复
11
dingy| | 2016-5-11 22:33 | 只看该作者
楼主问题搞定了么?

我现在也准备开始做CY7C68013A+FPGA数据采集。
不知道如何下手,现在手头没有CY7C68013A,需要搞一块有CY7C68013A和FPGA的开发板不?求指导!

使用特权

评论回复
12
ousj|  楼主 | 2016-5-11 22:34 | 只看该作者
现在采集出来的数据和FPGA自定义的数据相吻合,只是出现了数据丢失的现象。有一块开发板会容易很多

使用特权

评论回复
13
supernan| | 2016-5-11 22:35 | 只看该作者
不懂了,帮顶

使用特权

评论回复
14
栩栩如生| | 2016-5-11 22:36 | 只看该作者

VOID
UsbSamp_EvtIoRead(
    IN WDFQUEUE         Queue,
    IN WDFREQUEST       Request,
    IN size_t           Length
    )
/*++

Routine Description:

    Called by the framework when it receives Read requests.

Arguments:

    Queue - Default queue handle
    Request - Handle to the read/write request
    Lenght - Length of the data buffer associated with the request.
                 The default property of the queue is to not dispatch
                 zero lenght read & write requests to the driver and
                 complete is with status success. So we will never get
                 a zero length request.

Return Value:


--*/
{
    PFILE_CONTEXT           fileContext = NULL;
    WDFUSBPIPE              pipe;
    WDF_USB_PIPE_INFORMATION   pipeInfo;

    PAGED_CODE();

    //
    // Get the pipe associate with this request.
    //
    fileContext = GetFileContext(WdfRequestGetFileObject(Request));
    pipe = fileContext->Pipe;
    if (pipe == NULL) {
        UsbSamp_DbgPrint(1, ("pipe handle is NULL\n"));
        WdfRequestCompleteWithInformation(Request, STATUS_INVALID_PARAMETER, 0);
        return;
    }
    WDF_USB_PIPE_INFORMATION_INIT(&pipeInfo);
    WdfUsbTargetPipeGetInformation(pipe, &pipeInfo);

    if((WdfUsbPipeTypeBulk == pipeInfo.PipeType) ||
       (WdfUsbPipeTypeInterrupt == pipeInfo.PipeType)) {

        ReadWriteBulkEndPoints(Queue, Request, (ULONG) Length, WdfRequestTypeRead);
        return;

    } else if(WdfUsbPipeTypeIsochronous == pipeInfo.PipeType){

#if !defined(BUFFERED_READ_WRITE) // if doing DIRECT_IO
        ReadWriteIsochEndPoints(Queue, Request, (ULONG) Length, WdfRequestTypeRead);
        return;
#endif

    }

    UsbSamp_DbgPrint(1, ("ISO transfer is not supported for buffered I/O transfer\n"));
    WdfRequestCompleteWithInformation(Request, STATUS_INVALID_DEVICE_REQUEST, 0);

    return;
}
请问这函数中是怎么识别管道传输和登时传输的,文中我能看得懂。但是在上位机程序中我们调用了readfile,可是readfile没有传递相关的管道信息呀,奇怪。

使用特权

评论回复
15
supernan| | 2016-5-11 22:41 | 只看该作者
至少应该给一个参数说明是用的哪种传输方式和管道,端点

使用特权

评论回复
16
ousj|  楼主 | 2016-5-11 22:41 | 只看该作者
我也不清楚,先结贴了哈

使用特权

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

本版积分规则

712

主题

7557

帖子

1

粉丝