Использование USB3.0 для быстрого чтения данных с FT601 - PullRequest
0 голосов
/ 01 октября 2018

У меня проблема с использованием порта USB3.0 с FTDI (FT601).USB3.0 должен иметь скорость передачи около 300 Мбит / с (для чтения и записи с FT).Я проверил эту скорость с помощью одного из предварительно подготовленных приложений FT: FT600 Data Streamer, и вот результаты:

чтение данных с порта USB3.0 в приложении DataStreamer

FT может отправлять 16 пакетов с размером выборки около 16 миллионов за 800 мс.

Я хочу читать из FT в приложении на C #.Я использовал файлы библиотеки FT .dll в своем проекте, я хочу читать буфер из 10 миллионов образцов каждый раз из FT.Я использовал код в руководстве по программированию на C # FT (руководство для программиста AN 407 D3xx) для чтения из FT:

//Read from port FT and assigns to bytes_FT
FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;
FTDI d3xxDevice = new FTDI();
UInt32 bytesTransferred = 0;
byte pipeID = 0x01;
var pOverlapped = new System.Threading.NativeOverlapped();
// Use GetDeviceInfoList to get the actual Serial Number of the device
ftStatus = d3xxDevice.OpenBySerialNumber("000000000001");

if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
    return;
}

ftStatus = d3xxDevice.SetStreamPipe(pipeID, (UInt32)bytes_FT.Length);
ftStatus = d3xxDevice.ReadPipeAsync(pipeID, bytes_FT, (UInt32)bytes_FT.Length, ref bytesTransferred, ref pOverlapped);
t_portPack = (DateTime.Now - starttime).TotalMilliseconds;
foreach (var desc in d3xxDevice.DataPipeInformation)
{
    if (desc.PipeId > 0x80) // Is a read-pipe? 
        ftStatus = d3xxDevice.ReadPipe(desc.PipeId, bytes_FT, (UInt32)bytes_FT.Length, ref bytesTransferred);
}
ftStatus = d3xxDevice.Close();
ftStatus = d3xxDevice.ClearStreamPipe(pipeID);

эта часть кодов выполняется за 300 мс (чтение образца пакета 10 миллионов).Я думаю, что это время должно быть очень меньше.Приложение Data Streamer находится на C ++.Проблема в использовании библиотеки FT в C # ??

...