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

 
 
> Cypress CyAPI, ---
uranium13
сообщение Sep 11 2010, 06:36
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 11-09-10
Пользователь №: 59 425



Видел похожая тема была для BORLAND'a

Я использую MS VS 2008 (MFC) и хотелось бы подключить CyAPI библиотеку

CCyUSBDevice *USBDevice;

USBDevice = new CCyUSBDevice();

и на этом возникает ошибка компоновки

"ссылка на неразрешенный внешний символ "public: __thiscall CCyUSBDevice::CCyUSBDevice(void *,struct _GUID,int)"

Как эту проблему можно для MSVS решить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uranium13
сообщение Sep 18 2010, 17:32
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 11-09-10
Пользователь №: 59 425



Как вы реализуете ф-цию чтения?

я хотел бы вынести её в отдельный поток

bool CSomeDlg::Read(UCHAR *buf, LONG buflen) {

InEndpt->TimeOut = 2000;
return InEndpt->XferData(buf,buflen);
}


но InEndpt - это указатель и в потоке компилятор выдаёт ошибку

ps "После загрузки хекса надо делать реинициализацию драйвера.Тоесть заново получать новый хэндл." простите меня, новичка, но какой хэндл всё время приходится получать? Я всё делал по примеру и после открытия IsOpen() возвращает true пока не отключишь железо от ПК даже после закрытия\открытия программы
Go to the top of the page
 
+Quote Post
jur
сообщение Sep 20 2010, 06:23
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(Sh@dow @ Sep 18 2010, 16:06) *
Возникла необходимость использовать драйвер в visual studio 6.0. От CyAPI отказался так как она собрана так что под VS6.0 не линкуется.Пришлось работать с драйвером через DeviceIoControl.

Хм... Весьма странно... Ведь их родной пример "BulkLoop" содержит незабвенные BulkLoop.dsp и BulkLoop.dsw. А чего линкер пишет? Может ему просто какого-то флага не хватает?

Насколько помнится, я просто взял их пример "Streamer", скомпилировал, запустил, убедился, что все работает. А потом на его основе написал свою DLL-ку считывания данных (и вообще всей необходимой работы с USB). Думается, что на первом этапе стоило бы скомпилировать их собственный пример ("BulkLoop" или "Streamer"). Если это сработает, то можно пробовать локализовать проблему.

А CyAPI штука очень удобная и весьма надежная.

Цитата(uranium13 @ Sep 18 2010, 20:32) *
Как вы реализуете ф-цию чтения?

я хотел бы вынести её в отдельный поток

Правильно, именно в отдельном потоке ее и следует реализовывать. Тут я поступил просто - завел глобальные переменные, которые инициализируются при старте моей DLL-ки (точнее, при вызове основной программой ее функции "Init"):

Код
CCyUSBDevice*   pUSBDevice       = NULL;
CCyUSBEndPoint* pControlOutEndpt = NULL;
CCyUSBEndPoint* pControlInEndpt  = NULL;
CCyUSBEndPoint* pUsDataInEndpt   = NULL;
CCyUSBEndPoint* pCfmDataInEndpt  = NULL;
CCyUSBEndPoint* pEp1OutEndpt     = NULL;
CCyUSBEndPoint* pEp1InEndpt      = NULL;

А в потоке просто обращаюсь по этим указателям, например:

Код
  // Queue-up the first batch of transfer requests
  for (int i = 0; i < QUEUE_SIZE; i++)
    contexts[i] = pUsDataInEndpt->BeginDataXfer(buffers[i], len, &inOvLap[i]);


Что касается закрытия драйвера. Я сначала попробовал сделать его закрытие (путем SAFE_DELETE(pUSBDevice);) в DllMain по приходу DLL_PROCESS_DETACH. А ни фига! Не работает. Тогда я экспортировал функцию "Close", которую вызывает моя программа при завершении работы. А USB-шный драйвер - "Штука конисская!" © :-) Не закроешь его - и привет, процесс останется висеть в системе, "без окон, без дверей ...". И убить его можно только отключением железа. Как решить эту проблему - я пока не знаю.

Еще вот тут "CY7C680013A Киньте ссылкой на софт и лит-ру" мы обсуждали вопросы работы с CyAPI, прием данных и т.п. Думается, эту ветку было бы тоже полезно почитать.


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uranium13   Cypress CyAPI   Sep 11 2010, 06:36
- - uranium13   Проблема решена скачал более новую библиотеку ps...   Sep 11 2010, 08:03
|- - jur   Цитата(uranium13 @ Sep 11 2010, 11:03) ps...   Sep 16 2010, 10:07
- - leva87   Я работаю с этим чипом могу помочь)   Sep 16 2010, 18:20
- - Sh@dow   Возникла необходимость использовать драйвер в visu...   Sep 18 2010, 13:06
|- - Sh@dow   >>Ведь их родной пример "BulkLoop...   Sep 20 2010, 17:50
|- - jur   Цитата(Sh@dow @ Sep 20 2010, 20:50) >...   Sep 21 2010, 06:01
- - Sh@dow   >>Как вы реализуете ф-цию чтения? Функция чт...   Sep 18 2010, 17:50
- - uranium13   спасибо за ответы, я накидал простенькую програмку...   Sep 21 2010, 08:15
|- - jur   Цитата(uranium13 @ Sep 21 2010, 11:15) сп...   Sep 21 2010, 13:15
|- - Sh@dow   >>Я пробовал в "CyConsole.exe" рес...   Sep 21 2010, 14:07
|- - jur   Цитата(Sh@dow @ Sep 21 2010, 17:07) Как т...   Sep 22 2010, 18:36
- - uranium13   От какого источника ваши девайсы питаются? От USB ...   Sep 23 2010, 04:58
|- - jur   Цитата(uranium13 @ Sep 23 2010, 07:58) От...   Sep 23 2010, 18:17
- - uranium13   Дело в том, что у меня при подключении к одному по...   Sep 24 2010, 16:09
|- - jur   Цитата(uranium13 @ Sep 24 2010, 19:09) Де...   Sep 27 2010, 15:27
- - Sh@dow   Возникла потребность юзать сабж под x64,в частност...   Sep 30 2010, 06:11
- - alexkok   Цитата(Sh@dow @ Sep 30 2010, 09:11) Возни...   Sep 30 2010, 16:50


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

 


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


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