реклама на сайте
подробности

 
 
> FT_Write глючит в Linux
BSACPLD
сообщение Jan 28 2015, 10:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Пишу кроссплатформенную программу на Qt.
Столкнулся с весьма необычным поведением FTDI под Linux.
При частом обращении к FTDI иногда не срабатывает функция FT_Write.
Функция для настройки FTDI:
CODE
bool MainWindow::OpenPort(int nPort, bool msgbox)
{
if(ftPort != 0)
{
FT_Purge(ftPort, FT_PURGE_RX | FT_PURGE_TX);
FT_Close(ftPort);

ftPort = 0;
}

if(FT_Open(nDevIndex[nPort], &ftPort) != FT_OK)
{
ftPort = 0;

if(msgbox)
QMessageBox::critical(0, "Ошибка!", "Ошибка при открытии USB порта.");

return false;
}

FT_ResetDevice(ftPort);

FT_SetBitMode(ftPort, 0, FT_BITMODE_RESET);
FT_SetDtr(ftPort);
FT_SetRts(ftPort);
FT_Purge(ftPort, FT_PURGE_RX | FT_PURGE_TX);
FT_SetUSBParameters(ftPort, 65535, 0);
FT_SetTimeouts(ftPort, TIMEOUT + 10, TIMEOUT + 10);
FT_SetLatencyTimer(ftPort, 1);
FT_SetDivisor(ftPort, FTDIVISOR);
FT_SetDataCharacteristics(ftPort, FT_BITS_8, FT_STOP_BITS_1, FT_PARITY_NONE);
FT_SetFlowControl(ftPort, FT_FLOW_NONE, NULL, NULL);

FT_Purge(ftPort, FT_PURGE_RX | FT_PURGE_TX);

return true;
}

Код для записи в FTDI:
Код
nb = 0;
ftStatus = FT_Write(*ftPort, ft_data, i, &nb);
if(ftStatus != FT_OK)
{
    emit ft_msg("ftStatus FT_Write() != FT_OK");
    continue;
}
if(i != ((uint32_t)nb))
{
    char st[256];
    sprintf(st, "Ошибка при записи данных.\nЗаписано %u bytes, передано %u bytes.", i, ((uint32_t)nb));
    emit ft_msg(st);
    continue;
}

Причём при возникновении ошибки функция всегда возвращает ftStatus == FT_OK и nb == 0.
На Windows (XP x32, Win7 x64) такая ошибка не возникает никогда.
Пробовал разные версии Linux.
На Red Hat вываливается раз в пол минуты.
На Gentoo почти сразу.
На Debian запись работает нормально, а вот чтение всегда возвращает неправильные данные.
Драйвер самый последний с ftdichip.com.
Кто-нибудь сталкивался с подобной проблемой?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 06:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016