APIs require a device driver of the same generation.
Beyond the APIs (used for the communication between the host computer and the USB FX2 microcontroller), another set of API exists: they are called "API commands". The application sends API commands to the Xilinx MicroBlaze embedded processor by means of the following API functions:
The Xilinx MicroBlaze soft embedded processor executes then the command. Skilled users can extend the API command set themselves.
DLL files:
Documentation:
This API
A binding from Python to DEWESoft TE USB API is possible through the ctypes function library.
Trenz Electronic USB FX2 APIs
are based on the Cypress CyUSB.sys device driver (renamed as TE_USB_FX2_xx.sys) and respectively on
distributed with the Cypress SuiteUSB 3.4 (or later).
Trenz Electronic USB FX2 APIs do not use handles.
API files:
Documentation:
Cypress CyAPI (CyAPI.lib) APIs for C/C++:
Trenz Electronic TE_USB_FX2_CyAPI.dll's for C/C++:
TE_USB_FX2_CyAPI APIs are not pure extern C code libraries because an external creation of a class instance defined in CyAPI.h (CyAPI.lib) is required.
Advantage:
Disadvantage:
A pure extern C code library version of TE_USB_FX2_CyAPI APIs (codename: simplified TE_USB_FX2_CyAPI APIs) is available for developers.
Advantage:
Disadvantages:
API files:
Documentation:
Cypress CyUSB (CyUSB.dll) API for .NET Framework:
Trenz Electronic TE_USB_FX2_CyUSB.dll for .NET Framework:
TE_USB_FX2_CyUSB.dll has no binding to Python because it is pure .NET CLR code that cannot be compiled as a COM object. It is a managed Microsoft .NET class library that can be used with all languages of the NET Framework (Visual Basic, Managed C++, C#, …) or other .NET infrastructures (such as IronPython).
If the user application is mainly made of C# code, it is convenient to use IronPython.If the user application is mainly made of Python, it is convenient to use Python for .NET package.
TE_USB_FX2_CyAPI (C++) APIs and TE_USB_FX2_CyUSB (.NET) API do not have the same signature although they are very similar. The signature of the pure extern C code library version of TE_USB_FX2_CyAPI APIs available for developers (codename: simplified TE_USB_FX2_CyAPI APIs) is slightly different from the two signatures above.
TE_USB_FX2_CyUSB (.NET) API is intrinsically cleaner than TE_USB_FX2_CyAPI (C++) APIs because CyUSB.dll is intrinsically cleaner than CyAPI.lib.
Please note that CCyUSBDevice Cypress class in the Cypress CyAPI C++ API is actually the list of all USB devices currently served by a Cypress USB driver derivative (e.g. Cypress generic USB device or Trenz Electronic USB FX2 device). For ease of understanding and convenience, Trenz Electronic named the corresponding variable as USBdevList.
API | Cypress class name | TE USB FX2 variable name |
---|---|---|
C++ API | CCyUSBDevice | USBdevList |
.NET API | USBDeviceList | USBdevList |
API | Cypress class name | TE USB FX2 variable name |
---|---|---|
C++ API | (not available) | (not available) |
.NET API | CyUSBDevice | TE_USB_FX2_USBDevice |
Most functions, parameters and variables have maintained name and meaning across APIs. A notable exceptions is recalled in the following table.
TE_USB_FX2_CyAPI (C++) APIs | TE_USB_FX2_CyUSB (.NET) API |
---|---|
TE_USB_FX2_SetData_InstanceDriverBuffer() | (not available) |
TE_USB_FX2_GetData_InstanceDriverBuffer() | (not available) |
A pure extern C code library version of TE_USB_FX2_CyAPI (C++) APIs and TE_USB_FX2_CyUSB (.NET) API would