Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Dewesoft C++ DLL

Trenz Electronic C# DLL

HANDLE m_handle = 0;

CyUSBDevice TE_USB_FX2_USBDevice = null;
USBDeviceList USBdevList = new USBDeviceList(CyConst.DEVICES_CYUSB);

Tip
The handles are internally managed by CyAPICyUSB.lib dll and there is no need to expose them to the user.
Tip
CyUSBDevice TE_USB_FX2_USBDevice take the place of handles for C# programmers.

cout << endl << TE0300_ScanCards() << endl;

int NumberOfCardAttached = TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_ScanCards(ref USBdevList);
Console.WriteLine(" {0} ", NumberOfCardAttached);

TE0300_Open(&m_handle, 0)!=0

TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_Open
(ref TE_USB_FX2_USBDevice, ref USBdevList, 0) == false

Tip
titleTE_USB_FX2_Open()
In the code, it is possible to call TE_USB_FX2_Open() where TE0300_Open() is used.
titleTE_USB_FX2_Open()
In the code, it is possible to call TE_USB_FX2_Open() where TE0300_Open() is used
Note
titleTE_USB_FX2_Open() act as Close() for other TE USB handles already open
When a new handle to the device driver is open (TE_USB_FX2_Open() run successfully) other internal handles (inside USBDeviceList) are automatically closed by TE_USB_FX2_Open() function. No more than one handle can be active on the same time. It is a behavior inherithed by CyAPI.dll Open() function. For this reason, TE_USB_FX2_Close() function is almost useless.
Note
titleTE_USB_FX2_Open() as SelectCard()
TE_USB_FX2_Open(TE_USB_FX2_USBDevice, USBdevList, x) acts more as a SelectCard() function because the list of USB devices is already created in USBdevList. TE_USB_FX2_USBDevice is the selected device number x (0 in this case).

TE0300_Open(&m_handle, 1)!=0

TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_Open
(ref TE_USB_FX2_USBDevice, ref USBdevList, 1) == false

TE0300_Close(&m_handle);

TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_Close
(ref USBdevListToDispose USBdevList);

 

Warning

In the code, it is not recommended to call TE_USB_FX2_Close() where TE0300_Close() is used. This function differs from its homonym of the previous TE0300DLL.dll in that it does not close a Handle but disposes (erases) all USB devices in the list USBdevList.

The reason of this behavior is due to the CyUSB.dll as explained by Cypress document CyUSB.NET.pdf, pages 132-133 and pages 139-140: "You should never invoke the Dispose() method of a USBDevice directly. Rather, the appropriate technique is to call the Dispose() method of the USBDeviceList object that contains the USBDevice objects".

TE0300_SendCommand(handle, cmd, cmd_length, reply, &reply_length, timeout)

TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SendCommand
(ref TE_USB_FX2_USBDevice, ref cmd, ref cmd_length,
ref reply, ref reply_length, TIMEOUT_MS)

Dewesoft C++ DLL

Trenz Electronic C# DLL

 

language
Code Block
themeDJango
cpp
void ResetFX2FifoStatus(HANDLE handle)
{





    cout << endl << "Resetting all FIFOs" << endl;
    byte cmd[64], reply[64];
 
    int cmd_length = 64;
    int reply_length = 64;



    cmd[0] = 0xA4;//command RESET_FIFO_STATUS
    cmd[1] = 0;//RESET all FIFOs

    if (TE0300_SendCommand(handle, cmd, cmd_length, reply, &reply_length, 1000))
        cout << "Error" << endl;

    cmd[0] = 0xA0;//command INITIALIZE
    cmd[1] = 1;//FIFO mode

    if (TE0300_SendCommand(handle, cmd, cmd_length, reply, &reply_length, 1000))
        cout << "Error" << endl; }


c#
Code Block
themeRDark
language
static void ResetFX2FifoStatus(CyUSBDevice TE_USB_FX2_USBDevice) {

    if (TE_USB_FX2_USBDevice == null)
    {
        Console.WriteLine("Error,no device is selected");
        return;
    }
    Console.WriteLine("Resetting all FIFOs");
    byte[] cmd = new byte[64];
    byte[] reply = new byte[64];
    int cmd_length = 64;
    int reply_length = 64;

    uint TIMEOUT_MS = 100000;

    cmd[0] = (byte)FX2_Commands.RESET_FIFO_STATUS;
    cmd[1] = 0; //reset all fifos

    if (TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SendCommand(ref TE_USB_FX2_USBDevice, ref cmd, ref cmd_length, ref reply, ref reply_length, TIMEOUT_MS) == false)
        Console.WriteLine("Error Send Command Reset all fifos");

    cmd[0] = (byte)FX2_Commands.INITALIZE; //0xA0;//command INITIALIZE
    cmd[1] = 1;//FIFO mode

    if (TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SendCommand(ref TE_USB_FX2_USBDevice, ref cmd, ref cmd_length, ref reply, ref reply_length, TIMEOUT_MS) == false)
        Console.WriteLine("Error Switch Mode Fifo Mode"); }

...