To make asynchronous transfers, all the above three APIs are necessary and it has to be done the way the streamer is implementing the same.
I think you are looking for synchronous transfers where you request for some data and wait for it to return. In that case please refer to XferData() API. You can look for documentation regarding it in section 4.14.7 in CyUSB.NET.pdf in the following path:
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\SuiteUSB
Also you can refer to it's usage in 'control center' application source code.
Please let me know for any questions.
Regarding to the BULK mode of asynchronous transfers, Finishdataxfer retrieves the data that was received but the second parameter of this function is just a value, how do I know that how much data is received by the host?
For data transmission, what is the minimum number of data per packet should be transmitted? 512 * 8 bytes? Can I send out arbitrary number of bytes? How?
As I know that the advantage of asynchronous transfer is no need to wait for the return, and the transfer rate will be higher than synchronous transfer, right?
I'm modifying C++ streamer, thanks.
It seems my problem is solved.
Good to know the same. But regarding your question - 'how do I know that how much data is received by the host?':
The second parameter of FinishDataXfer() tells the actual number of bytes transferred.