采集出来的都是一个数

[复制链接]
 楼主| 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
,看看这个应该很有帮助。
kangzj 发表于 2016-5-11 22:25 | 显示全部楼层
如果还是不是很明白,建议你下载安装SuiteUSB 3.4 (http://www.cypress.com/?rID=34870),CY提供了很完整的Windows下的应用程序代码,自己根据自己的设计改改参数配置。
 楼主| ousj 发表于 2016-5-11 22:28 | 显示全部楼层
我看了一下那个应用手册,它调用的是CYUSB.dll,可是我安装了驱动CYUSB.SYS以及CY3684开发包,里面只发现CYAPI.H,和CYAPI.LIB
juventus9554 发表于 2016-5-11 22:29 | 显示全部楼层
那意思还不能直接调用CYUSB.dll
 楼主| ousj 发表于 2016-5-11 22:30 | 显示全部楼层
需要自己下载一个放进项目路径里面?
llljh 发表于 2016-5-11 22:31 | 显示全部楼层
是啊
 楼主| ousj 发表于 2016-5-11 22:32 | 显示全部楼层
我现在安装的是cypress usb console,上位机编程用的是vc++6.0
dingy 发表于 2016-5-11 22:33 | 显示全部楼层
楼主问题搞定了么?

我现在也准备开始做CY7C68013A+FPGA数据采集。
不知道如何下手,现在手头没有CY7C68013A,需要搞一块有CY7C68013A和FPGA的开发板不?求指导!
 楼主| ousj 发表于 2016-5-11 22:34 | 显示全部楼层
现在采集出来的数据和FPGA自定义的数据相吻合,只是出现了数据丢失的现象。有一块开发板会容易很多
supernan 发表于 2016-5-11 22:35 | 显示全部楼层
不懂了,帮顶
栩栩如生 发表于 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没有传递相关的管道信息呀,奇怪。
supernan 发表于 2016-5-11 22:41 | 显示全部楼层
至少应该给一个参数说明是用的哪种传输方式和管道,端点
 楼主| ousj 发表于 2016-5-11 22:41 | 显示全部楼层
我也不清楚,先结贴了哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

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