自己寫的CyUSB3014通信程序在win10下運行崩潰

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Anonymous
不适用

我用VS2012編寫了一個win32控制台的小程序與CyUSB3014通信,只有控制傳輸,使用靜態鏈接庫,調用EZ-USB FX3 SDK 1.3.3裡面提供的Cypress\EZ-USB FX3 SDK\1.3\library\cpp\lib\x86\CyAPI.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((i<devNum) && ((vID !=VIDEO_VID) || (pID !=VIDEO_PID)));

   

    //write to eeprom

   

   ept->Target = 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);

0 点赞
2 回复数
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

Hi,

   

 

   

可否share下完整的工程,我们这边尝试复现下。

0 点赞
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

Sorry, 刚才没有看到附件。

0 点赞