How to write C# programs using the new DLL starting from the old DLL.
There are some major differences between the two DLLs.
feature | Dewesoft C++ DLL | Trenz Electronic C# DLL |
---|---|---|
programming language | C++ | C# |
architecture | standard | stacked |
Handles | present | absent |
structures | embedded | defined in Cypress CyAPI.h |
parameters* | less | more |
freedom* | less | more |
buffer size | 2 Kbyte (fixed) | 4 Kbyte or more (it can be changed) |
Dewesoft C++ DLL | Trenz Electronic C# DLL |
---|---|
HANDLE m_handle = 0; | CyUSBDevice TE_USB_FX2_USBDevice = null; The handles are internally managed by CyUSB.dll and there is no need to expose them to the user. 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); |
TE0300_Open(&m_handle, 0)!=0 | TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_Open TE_USB_FX2_Open() In the code, it is possible to call TE_USB_FX2_Open() where TE0300_Open() is used. TE_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 |
TE0300_Close(&m_handle); | TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_Close |
TE0300_SendCommand(handle, cmd, cmd_length, reply, &reply_length, timeout) | TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SendCommand |
Dewesoft C++ DLL | Trenz Electronic C# DLL |
---|---|
void ResetFX2FifoStatus(HANDLE handle) | static void ResetFX2FifoStatus |
if (TE_USB_FX2_USBDevice == null) | |
cout << endl << "Resetting all FIFOs" << endl; | Console.WriteLine("Resetting all FIFOs"); |
byte cmd[64], reply[64]; | byte[] cmd = new byte[64]; byte[] reply = new byte[64]; int cmd_length = 64; int reply_length = 64; |
uint TIMEOUT_MS = 100; | |
cmd[0] = 0xA4; cmd[1] = 0;//RESET all FIFOs | cmd[0] = (byte)FX2_Commands.RESET_FIFO_STATUS; cmd[1] = 0; //RESET all FIFOs |
if (TE0300_SendCommand (handle, cmd, cmd_length, reply, &reply_length, 1000)) cout << "Error" << endl; | 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] = 0xA0;//command INITIALIZE cmd[1] = 1;//FIFO mode | cmd[0] = (byte)FX2_Commands.INITALIZE; cmd[1] = 1;//FIFO mode |
if (TE0300_SendCommand | if (TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SendCommand |
Dewesoft C++ DLL | Trenz Electronic C# DLL |
---|---|
void ReadData(unsigned int handle) { | static void ReadData (CyUSBDevice TE_USB_FX2_USBDevice, int BUFFER_SIZE, uint TIMEOUT_MS) { |
if (TE_USB_FX2_USBDevice == null) { Console.WriteLine("Error,no device is selected"); return; } | |
int packetlen = RX_PACKET_LEN; unsigned int packets = 1200; byte * data; data = new byte [RX_PACKET_LEN*packets]; unsigned int total_cnt = 0; unsigned int errors = 0; | int packetlen = RX_PACKET_LEN; int packets = 1200; byte[] data = new byte[packetlen*packets]; byte[] buffer = new byte[packetlen]; int total_cnt = 0; int errors = 0; |
int PI_EP6 = 6; | |
ResetFX2FifoStatus(handle); //starts test SendFPGAcommand(handle, FX22MB_REG0_START_TX); | ResetFX2FifoStatus(TE_USB_FX2_USBDevice); //starts test SendFPGAcommand(ref TE_USB_FX2_USBDevice, MB_Commands.FX22MB_REG0_START_TX, TIMEOUT_MS); |
//StopWatch start ElapsedTime.Start(); | //StopWatch start Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); |
for (unsigned int i = 0; i < packets; i++) { packetlen = RX_PACKET_LEN; | for (int i = 0; i < packets; i++) { packetlen = RX_PACKET_LEN; |
if (TE0300_GetData(handle, data+total_cnt, &packetlen, | bResultXfer = TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_GetData |
cout << "Error Get Data" << endl; | Console.WriteLine("Error Get Data"); errors++; break; } total_cnt += packetlen; } //StopWatch timer stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; //stops test SendFPGAcommand(ref TE_USB_FX2_USBDevice, MB_Commands.FX22MB_REG0_STOP, TIMEOUT_MS); //Garbage Collector } |
Dewesoft C++ DLL | Trenz Electronic C# DLL |
---|---|
void WriteData(unsigned int handle) { | static void WriteData (CyUSBDevice TE_USB_FX2_USBDevice, int BUFFER_SIZE, uint TIMEOUT_MS) { |
if (TE_USB_FX2_USBDevice == null) { Console.WriteLine("Error,no device is selected"); return; } | |
int packetlen = TX_PACKET_LEN; unsigned int packets = 1200; byte * data; data = new byte [TX_PACKET_LEN*packets]; unsigned int total_cnt = 0; unsigned int errors = 0; | int packetlen = TX_PACKET_LEN; int packets = 1200; byte[] data = new byte[packetlen*packets]; byte[] buffer = new byte[packetlen]; int total_cnt = 0; int errors = 0; |
int PI_EP8 = 8; | |
ResetFX2FifoStatus(handle); //starts test SendFPGAcommand(handle, FX22MB_REG0_START_RX); | ResetFX2FifoStatus(TE_USB_FX2_USBDevice); //starts test SendFPGAcommand(ref TE_USB_FX2_USBDevice, MB_Commands.FX22MB_REG0_START_RX, TIMEOUT_MS); |
//StopWatch start ElapsedTime.Start(); | //StopWatch start Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); |
for (unsigned int i = 0; i < packets; i++) { packetlen = TX_PACKET_LEN; | for (int i = 0; i < packets; i++) { packetlen = TX_PACKET_LEN; |
if (TE0300_SetData(handle, data+total_cnt, &packetlen, | Buffer.BlockCopy(data,total_cnt, buffer, 0, packetlen); bResultXfer = TE_USB_FX2.TE_USB_FX2.TE_USB_FX2_SetData
|
cout << "Error Set Data" << endl; | Console.WriteLine("Error Set Data"); errors++; break; } total_cnt += packetlen; } //StopWatch timer stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; //stops test SendFPGAcommand(ref TE_USB_FX2_USBDevice, MB_Commands.FX22MB_REG0_STOP, TIMEOUT_MS); //Garbage Collector } |