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

 
 
> что делать с d2xx?
spindelsinn
сообщение Aug 11 2011, 07:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



Впервые сталкиваюсь с подобного рода задачей. Ничего не понимаю в драйверах.
Итак нужно установить синхронный фифошный режим на чипе FT232H. Он устанавливается только через драйвер, а именно путем назначения параметра ucMode в FT_SetBitmode.
А что и где менять? Писать свой ftd2xx.dll? Менять имеющийся?

Зараннее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spindelsinn
сообщение Aug 11 2011, 14:30
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



Вот код програмки для установки параметра. Но что то она не пашет.

Код
// setbit.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "ftd2xx.h"


void getlist ()
{
    FT_STATUS ftStatus;
    FT_HANDLE ftHandleTemp;
    DWORD numDevs;
    DWORD Flags;
    DWORD ID;
    DWORD Type;
    DWORD LocId;
    char SerialNumber[16];
    char Description[64];
    // create the device information list
    ftStatus = FT_CreateDeviceInfoList(&numDevs);
    if (ftStatus == FT_OK) {
        printf("Number of devices is %d\n",numDevs);
    }
    if (numDevs > 0) {
        // get information for device 0
        ftStatus = FT_GetDeviceInfoDetail(0, &Flags, &Type, &ID, &LocId, SerialNumber, Description, &ftHandleTemp);
        if (ftStatus == FT_OK) {
            printf("Dev 0:\n");
            printf(" Flags=0x%x\n",Flags);
            printf(" Type=0x%x\n",Type);
            printf(" ID=0x%x\n",ID);
            printf(" LocId=0x%x\n",LocId);
            printf(" SerialNumber=%s\n",SerialNumber);
            printf(" Description=%s\n",Description);
            printf(" ftHandle=0x%x\n",ftHandleTemp);
        }
    }
}

int setbit(unsigned char mode)
{
    int ret;

    FT_HANDLE ftHandle;
    FT_STATUS ftStatus;
    UCHAR Mask = 0xff;
    UCHAR Mode = mode; // Set mode
    UCHAR BitMode;

    ftStatus = FT_Open(0, &ftHandle);
    if(ftStatus != FT_OK) {
        // FT_Open failed
        puts("FT_Open failed");
        return -1;
    }

    ftStatus = FT_GetBitMode(ftHandle, &BitMode);
    if (ftStatus == FT_OK) {
        // BitMode contains current value
        printf("FT_GetBitMode return 0x%02X\n", BitMode);
    } else {
        // FT_GetBitMode FAILED!
        puts("FT_GetBitMode FAILED!");
    }

    ftStatus = FT_SetBitMode(ftHandle, Mask, Mode);
    if (ftStatus == FT_OK) {
        // 0xff written to device
        printf("FT_SetBitMode 0x%02X written to device\n", Mode);
        ret = 0;
    } else {
        // FT_SetBitMode FAILED!
        puts("FT_SetBitMode FAILED!");
        ret = -1;
    }

    ftStatus = FT_GetBitMode(ftHandle, &BitMode);
    if (ftStatus == FT_OK) {
        // BitMode contains current value
        printf("FT_GetBitMode return 0x%02X\n", BitMode);
    } else {
        // FT_GetBitMode FAILED!
        puts("FT_GetBitMode FAILED!");
    }
    FT_Close(ftHandle);
    return ret;
}




#define MODE 0x40

int _tmain(int argc, _TCHAR* argv[])
{
    printf("start MODE = 0x%X\n", MODE);
    getlist();
    setbit(MODE);
    getchar();
    
    return 0;
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 16:18
Рейтинг@Mail.ru


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