CyUSB.NET with custom GUIDuserc_44384 Dec 13, 2011 8:27 AM
I'm very new to CyUSB so please bear with me if this is a silly mistake.
I am currently using a Saxo-Q from KNJN and it uses a FX2 for programming and communicating with the FPGA.
My question is setting up CyUSB with a custom driver GUID in VC#. I suppose my question is a follow on to this one:
in C# I have not been able to get the code supplied in Introduction to CuUSB.dll Based Application using C# (). I've read the I have looked at the source code for CyControlCentre and see the following lines:
//Set the customer class GUID(vendor specific) and Driver Guid(vendor specific)
//CyConst.SetCustomerGUID("{CDBF8987-75F1-468e-8217-97197F88F773}", "{C955D74D-0430-44f2-B120-276D94492D2D}");
CyConst.SetClassGuid("{CDBF8987-75F1-468e-8217-97197F88F773}");
Looking at the .inf for CyUSB.sys that comes with SuiteUSB 3.4.7.000, I can see that the relevant GUIDs are:
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
CYUSB.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"
Comparing this with .inf that came with the FPGA:
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
HKR,,DriverGUID,,"{0EFA2C93-0C7B-454F-9403-D638F6C37E65}"
My reasoning is then that in order to use the sample code, I need to add the line:
CyConst.SetCustomerGUID("{36FC9E60-C465-11CF-8056-444553540000}", "{0EFA2C93-0C7B-454F-9403-D638F6C37E65}");
However, my program still seems to be detect the FPGA. I know that the driver for the FPGA works, as I can program it over USB using the program supplied with the FPGA. If I set the FPGA to use the default driver that comes with SuiteUSB then my program works fine, however I then cannot program the FPGA using the program supplied by the board manufacturer (presumably as it is looking for a device attached to the driver with a different GUID). There does not seem to be any documentation for CyConst.SetCustomerGUID. I only found it through the CyControlCentre example. Seems like a pretty important function to not be documented!
Any help would be really appreciated!
Cheers,
Iain
Here is my C# code:
using CyUSB;
//FPGA CLASS GUID {36FC9E60-C465-11CF-8056-444553540000}
//FPGA DRIVER GUID {0EFA2C93-0C7B-454F-9403-D638F6C37E65}
//CYPRESS CLASS GUID {36FC9E60-C465-11CF-8056-444553540000}
//CYPRESS DRIVER GUID {AE18AA60-7F6A-11d4-97DD-00010229B959}
namespace testCs
{
public partial class Form1 : Form
{
USBDeviceList usbDevices;
CyUSBDevice myDevice;
public Form1()
{
InitializeComponent();
CyConst.SetCustomerGUID("{36FC9E60-C465-11CF-8056-444553540000}", "{0EFA2C93-0C7B-454F-9403-D638F6C37E65}");
usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB | CyConst.DEVICES_HID | CyConst.DEVICES_MSC);;
}
void usbDevices_DeviceAttached(object sender, EventArgs e)
{
//Add code to handle Device arrival
Text = "Device Attached";
}
void usbDevices_DeviceRemoved(object sender, EventArgs e)
{
//Add code to handle Device removal
Text = "Device Removed";
}
}
}
I can change the GUID using the C++ lib, using an example supplied with the Saxo-Q, but I would be much more comfortable using C#. Some sample (working) C++ code for a windows form application for changing the GUID is below:
CCyUSBDevice *USBDevice;
GUID *GUID_KNJN_FX2;
Form1(void)
{
InitializeComponent();
static GUID test={0x0EFA2C93, 0x0C7B, 0x454F, 0x94, 0x03, 0xD6, 0x38, 0xF6, 0xC3, 0x7E, 0x65};
GUID_KNJN_FX2=&test;
USBDevice =new CCyUSBDevice((HANDLE)this->Handle,*GUID_KNJN_FX2,true);
for(int i=0; i<100; i++) // blink the LEDs for a few seconds
{
LONG len = 1;
USBDevice->EndPoints[3]->XferData((PUCHAR)&i, len); // send one byte (the value of i) to FIFO2
Sleep(50);
}
}
1. Re: CyUSB.NET with custom GUIDuserc_44384 Dec 11, 2011 9:30 AM (in response to userc_44384)
Sorry for the horrible formatting. Not what it looked like in the edit window and there was no preview option that I could see and now I can't even delete or edit it.
2. Re: CyUSB.NET with custom GUIDprajithc_ Dec 13, 2011 8:27 AM (in response to userc_44384)
Hi
I need to clarify my understanding before responding to your post. From your post what I understood is you are developing an host application using CyAPIs but using a custom GUID, Am I correct???