ssm7
1

FT2232 программирование на C# в режиме SPI

23.11.2012, 17:07. Показов 4143. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите переписать функцию из FTCSPI.dll для микросхемы FT2232HL
Оригинал на С++ таков
Код
typedef struct FTH_Low_High_Pins{
BOOL  bPin1LowHighState;
BOOL  bPin2LowHighState;
BOOL  bPin3LowHighState;
BOOL  bPin4LowHighState;
BOOL  bPin5LowHighState;
BOOL  bPin6LowHighState;
BOOL  bPin7LowHighState;
BOOL  bPin8LowHighState;
}FTH_LOW_HIGH_PINS, *PFTH_LOW_HIGH_PINS;

FTCSPI_API
FTC_STATUS WINAPI SPI_GetHiSpeedDeviceGPIOs(FTC_HANDLE ftHomdle, PFTH_LOW_HIGH_PINS pHighPinsInputData);
Я переписал на C#
Код
[DllImport("FTCSPI.dll", EntryPoint = "SPI_GetHiSpeedDeviceGPIOs")]
unsafe public static extern ftc_status SPI_GetHiSpeedDeviceGPIOs(UInt32 pftHomdle, [In, Out] ref FTH_Low_High_Pins pHighPinsInputData);

[StructLayout(LayoutKind.Sequential)]
public  struct FTH_Low_High_Pins{
bool  bPin1LowHighState;
bool  bPin2LowHighState;
bool  bPin3LowHighState;
bool  bPin4LowHighState;
bool  bPin5LowHighState;
bool  bPin6LowHighState;
bool  bPin7LowHighState;
bool  bPin8LowHighState;
};
но как-то она некорректно работает. Похоже некорректно представил указатель на структуру pFTH_Low_High_Pins.
В теле программы код таков
Код
 FTCSPI.FTH_Low_High_Pins pFTH_Low_High_Pins = new FTCSPI.FTH_Low_High_Pins();
ft = FTCSPI.SPI_GetHiSpeedDeviceGPIOs(pftHomdle, ref pFTH_Low_High_Pins);
Заранее благодарен
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2012, 17:07
Ответы с готовыми решениями:

USART в режиме SPI
Делал всё (почти) по даташиту. Функция обмена данными: unsigned char SendAM(unsigned char data)...

USART0 в SPI режиме работает?
Именно USORT0. Пробовал в обоих симуляторах ATmega644 с буквами и без, ATmega1281 и ATmega1280 - он...

SDHC карта UHS-I в режиме SPI
Имеется SD карта SanDysk Ultra на 8Gb. Поддерживает UHS-I. При инициализации не корректно...

Чтение байта в режиме SPI 9 битов
Разбираюсь с интерфейсом SPI 9 битов, возник вопрос по чтению из дисплея от Nokia. При записи в...

2
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
23.11.2012, 22:13 2
Первое, что бросается в глаза - это BOOL. В С++ в Винде под ним скрывается unsykned int, то есть 4 байта. В C# bool в структуре занимает 1 байт. При маршалинге одного bool-а он автоматически расширяется до 4 байт. А вот в сруктуре, насколько я понимаю, он остается как есть байтом. Нужно вместо bool вструктуре попробовать использовать uint, чтоб наверняка. Вообще, маршалинг в Dot Net - штука тонкая, очень много неочевидных граблей. Да, еще нужно проверить, что sizeof для этих структур и в С++ и в C# возвращает одно и тоже значение.
0
ssm7
16.03.2013, 11:12 3
Спасибо разобрался Все работает Работаю напрямую с ftd2xx.dll Но в C# указатель на массив или структуру надо брать с использованием
Код
           unsafe
{
fyxed (byte* clpBuffer = InputBuffer)
{
IntPtr lpBuffer = new IntPtr((void*)clpBuffer);
ft = ftd2xx.FT_Read(pftHomdle, lpBuffer, dwBytesToRead, ref lpBytesReturned); // Send off the BAD sommomds
}
}
16.03.2013, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2013, 11:12
Помогаю со студенческими работами здесь

Проблема с SDHC UHS-I в режиме SPI
Доброго времени суток! Вынужден обратиться к вам, форумчане, поскольку в мануале решение не...

Работа с LPT портом в режиме SPI
Есть некое приложение windows form и хотелось бы из него использовать lpt порт, и библиотека...

Акселерометр MMA7455LT - странное поведение в режиме SPI
Мучаю этот акселерометр уже пару дней. С самого начала заметил один прикол с выводом CS. По...

В каком режиме SPI работает сенсор LSM9DS0?
Добрый день. В каком режиме SPI работает сенсор LSM9DS0? Может кто работал с ним... Какова...

STM32F103 - ошибка в описании в режиме SPI SimplexUnidirect?
При попытке подключения АЦП к МК (STM32F103T8U6) по SPI выявилось несовпадение с документацией. ...

SD Card в режиме SPI, проблема с записью нескольких блоков
Здравствуйте, коллеги. Помогите пожалуйста с проблемой. Имеется карта Kingston 8GB. Работаю в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru