Добрый день, уважаемые!
Для организации USB канала, была выбрана микросхема - FT2232D (режим работы: 245 FIFO). Как известно у неё существуют два канала: A и B. Во многих статьях посвященных данному устройству (FT2232), а так же в описании от производителя, говориться, что эти каналы настраиваются и работают независимо друг от друга... Но при использовании библиотеки высшего уровня для программирования (D2XX Direct), мы имеем следующее:
1. чтобы открыть канал передачи необходимо выполнить: #include "ftd2xx.h" FT_HANDLE ftHandle; // Handle of the FTDI device FT_STATUS ftStatus; ftStatus = FT_Open(1, &ftHandle); // Открытие канала A if (ftStatus == FT_OK) { ... } else { ... }
2. что бы передать или принять данные используем функции: ftStatus = FT_Read(ftHandle, RxBuffer, dwByteToRead, &dwByteReseived); и ftStatus = FT_Write(ftHandle, TxBuffer, dwByteToWrite, &dwBytesWritten);
Как видно, что в функциях FT_Read и FT_Write идентификатором работы с устройством является Handle - ftHandle, который так же жёстко привязан к номеру канала, который мы открыли ранее (A). Т.е. чтобы перейти на другой канал B, необходимо закрыть предыдущий (A) выполнив: FT_Close(ftHandle); и по аналогии открытия канала A, открыть канал B, лишь с разницей установки требуемого индекса канала: ftStatus = FT_Open(0, &ftHandle); .
Вопрос, возможно ли одновременно открыть оба канала и работать с обоими каналами 'одновременно'??!
С уважением, VBU
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|