|
|
|
Использование FT2232D, Работа с каналами A и B |
|
|
|
May 24 2018, 11:06
|
Профессионал
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264
|
Добрый день, уважаемые!
Для организации 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
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
May 24 2018, 11:24
|
Гуру
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095
|
QUOTE (BVU @ May 24 2018, 14:06) Т.е. чтобы перейти на другой канал B, необходимо закрыть предыдущий (A) выполнив: FT_Close(ftHandle); и по аналогии открытия канала A, открыть канал B, лишь с разницей установки требуемого индекса канала: ftStatus = FT_Open(0, &ftHandle); . Странный подход. Что вам мешает вместо одного ftHandle завести два- ftHandleA и ftHandleB? QUOTE (BVU @ May 24 2018, 14:06) Вопрос, возможно ли одновременно открыть оба канала и работать с обоими каналами 'одновременно'? Конечно возможно.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 24 2018, 11:41
|
Профессионал
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264
|
Цитата(Сергей Борщ @ May 24 2018, 14:24) Странный подход. Что вам мешает вместо одного ftHandle завести два- ftHandleA и ftHandleB?
Конечно возможно. Пробовал такой вариант, но при чтении серийного номера любого из открытых каналов (А, В): ftStatus = FT_ListDevices((PVIOD)devIndex, Buffer, FT_LIST_BY_INDEX | FT_OPEN_BYSERIAL_NUMBER); данная функция возвращает ошибку!!! Если работаешь с одним каналом, то всё замечательно... С уважение, BVU
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
May 24 2018, 12:55
|
Гуру
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095
|
QUOTE (BVU @ May 24 2018, 14:41) данная функция возвращает ошибку!!! 1) У вас залипает клавиша с восклицательным знаком, пора менять клавиатуру. 2) Какую именно ошибку возвращает эта функция? QUOTE (BVU @ May 24 2018, 14:41) Если работаешь с одним каналом, то всё замечательно... Приведите больше кода.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 25 2018, 08:01
|
Профессионал
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264
|
Цитата(Сергей Борщ @ May 24 2018, 15:55) 2) Какую именно ошибку возвращает эта функция? статус возвращенный выполняемой функцией принятый в 2DXX Direct: ftStatus = 1 - false; ftStatus = 0 - true; С уважением, BVU P.S. Сергей, спасибо, что вы пытаетесь мне помочь! А практически, вы сами работали с FT2232 в таком режиме?
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|