我用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);
Hi,
可否share下完整的工程,我们这边尝试复现下。
Sorry, 刚才没有看到附件。