Cypress技术论坛
直播中

陈艳

7年用户 959经验值
私信 关注

用VS2012编写了一个win32控制台的小程序与CyUSB3014通信,一调用write API就崩溃怎么解决?

我用VS2012编写了一个win32控制台的小程序与CyUSB3014通信,只有控制传输,使用静态链接库,调用EZ-USB FX3 SDK 1.3.3裡面提供的CypressEZ-USB FX3 SDK1.3librarycpplibx86CyAPI.lib,程序在win7系统下运行正常,在win10下一运行到与控制端点通信的地方就崩溃。程式可以正常找到设备,但是一调用write API就崩溃。
    报错 “程式已经停止运作”。
    win10下 EZ-USB FX3 SDK 1.3.3(1.2.3.10)裡面自带的driver和官网上下的Cypress USB-Serial Driver(1.2.3.14) 都试过,现象一样。但是Cypress 官方的USB controller就能正常工作。
    关键代码如下:在调用CyAPI.lib提供的API Write和Read时程序崩溃。
        CCyUSBDevice *USBDevice = new CCyUSBDevice();
     CCyControlEndPoint *ept = USBDevice->ControlEndPt;
    //find out video card.
             int devNum = USBDevice->DeviceCount();
             int pID,vID;
             int i = 0;
             do
             {
                 USBDevice->Open(i);
                 pID = USBDevice->ProductiD;
                 vID = USBDevice->VendorID;
                 i++;
             }while((iTarget = TGT_DEVICE;
     ept->ReqType = REQ_VENDOR;
     ept->Index = 0x0000;
     ept->Value = 0x0100;
     ept->ReqCode = 0xba;//I2C write command
     if(TRUE !=ept->Write(buf0,len))
     {
         _tprintf(_T("Write EEPROM error!n"));
         return 0x04;//write i2c error.
     }
     Sleep(1000);
     //verify
     ept->ReqCode = 0xbb;//I2C read command
     if(TRUE !=ept->Read(buf1,len))
     {
         _tprintf(_T("nRead EEPROM error!n"));
         return 0x05;//read i2c error.
     }
     
     Sleep(1000);
                                                                                                                                                                                                                                                                                                                                                                                                        
                                                        

回帖(1)

张莉

2024-2-29 17:16:44
首先,请确保您已更新到最新的EZ-USB FX3 SDK版本。您可以从Cypress官方网站上下载最新版本。

如果问题仍然存在,可能是与您的操作系统或编译器的兼容性问题有关。您可以尝试以下方法解决问题:

1. 确保使用的是与您的操作系统兼容的驱动程序。根据您的问题描述,您已经尝试了不同版本的驱动程序,但问题依然存在。您可以尝试联系Cypress官方支持团队,了解是否有与您的操作系统兼容的特定版本的驱动程序可供使用。

2. 尝试更改编译器选项。根据您的描述,程序在Win7上运行正常,但在Win10上崩溃。您可以尝试在VS2012中更改编译器选项,可能也涉及到更改SDK库的版本。您可以尝试使用不同的编译器选项和库版本来解决问题。

3. 检查您的代码。检查您的代码以确保在调用write API之前已正确初始化所有必要的变量和数据结构。确保没有任何空指针或无效的内存访问。您可以使用调试器来跟踪代码并查找潜在的错误。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分