Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: СYPRESS 68013a  (Прочитано 7656 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alekcey
Гость
« : 21-03-2007 11:30 » 

javascript:void(0);
Здравствуйте люди!
пытаюсь работать с контроллером от CYPRESS режиме SLAVE FIFO
 вот часть кода  С++


CCyUSBDevice *FX2Device;


int main(int argc, char* argv[])
     
{

   FX2Device = new CCyUSBDevice(Handle);
   

 
    return 0;


возникает ошибка доступа к памяти
(похожа на ту когда выходиш за пределы массива)

компилятор указывает на строку
 FX2Device = new CCyUSBDevice(Handle);

самое интересное что на соседнем компе код работает в таких же условиях ошибки не возникает

Помогите начинающему.
Алексей.

}
« Последнее редактирование: 21-03-2007 20:08 от alekcey » Записан
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 21-03-2007 19:00 » new

А ты сколько буковок-то вводишь перед тем, как enter нажать? Улыбаюсь
Записан

ещё один вопрос ...
alekcey
Гость
« Ответ #2 : 21-03-2007 20:20 » 

javascript:void(0);
Здравствуйте люди!
пытаюсь работать с контроллером от CYPRESS режиме SLAVE FIFO
 вот часть кода С++

CCyUSBDevice *FX2Device;


int main(int argc, char* argv[])
 
{

 FX2Device = new CCyUSBDevice(Handle);
 

 
 return 0;


возникает ошибка доступа к памяти
(похожа на ту когда выходиш за пределы массива)

компилятор указывает на строку
 FX2Device = new CCyUSBDevice(Handle);









самое интересное что на соседнем компе код работает в таких же условиях ошибки не возникает

Помогите начинающему.
Алексей.

}

Не смешно!
я раньше работал с FT245, вынужден осваивать USB 2.0 Нужно очень быстро передать 34 000 байт с внешнего устройства.
 Вот пример часть того что я пытаюсь запустить(списал с одного сайта)
код:

Код:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit7.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"


 
#include "CyAPI.h"


#define USB_DEVICE_NAME "My Own design"
 TForm7 *Form7;

static CCyUSBDevice *s_usb_device;
static CCyUSBEndPoint *s_in_fifo_endpoint, *s_out_fifo_endpoint;
static CCyControlEndPoint* s_control_endpoint;
static OVERLAPPED s_out_overlap, s_in_overlap;
static unsigned char *s_in_context, *s_out_context;
int s_has_to_close_out, s_has_to_close_in;
LONG s_buffer_size_out, s_buffer_size_in;
PUCHAR s_buffer_out, s_buffer_in;

// For now it is static, might change it to a dynamic later

void* usb_init(void) {
int i = 0;
 CCyUSBDevice* s_usb_device = new CCyUSBDevice();
         
// open my device
    if (s_usb_device->DeviceCount()) {
        // search for all connected devices, and add the one that has the right name
        for (i = 0; i < s_usb_device->DeviceCount(); i++) {
            s_usb_device->Open(i);
if(strcmp (USB_DEVICE_NAME, s_usb_device->DeviceName) == 0)
break;
s_usb_device->Close();
        }
} else {
// Cannot find my device
return NULL;
}

if (!s_usb_device->IsOpen()) {
// Could not open my device
return NULL;
}

    // get usb IN and OUT FIFOs endpoints
    int endpoints_count = s_usb_device->EndPointCount();
   
for (i=1; i<endpoints_count; i++) {   
CCyUSBEndPoint *endpoint;

        endpoint = s_usb_device->EndPoints[i];
if (endpoint->Attributes == 2) {
// it is a Bulk endpoint

if(endpoint->Address == 0x86) {
// my IN endpoint
        s_in_fifo_endpoint = endpoint;
}
if(endpoint->Address == 0x02) {
// my OUT endpoint
s_out_fifo_endpoint = endpoint;
}
        }
    }

// get Control enpoint
s_control_endpoint = s_usb_device->ControlEndPt;

// create events for data transfers
s_out_overlap.hEvent  = CreateEventA(NULL, false, false, "CYUSB_OUT");
s_in_overlap.hEvent   = CreateEventA(NULL, false, false, "CYUSB_IN");

return (void*)1;
}

void usb_close() {
usb_finish_in_transfer();
usb_finish_out_transfer();

delete s_usb_device;

    CloseHandle(s_out_overlap.hEvent);
    CloseHandle(s_in_overlap.hEvent);
}

void usb_begin_out_transfer(unsigned char* buffer, int size) {
if (s_has_to_close_out == 1) {
s_out_fifo_endpoint->FinishDataXfer (s_buffer_out, s_buffer_size_out, &s_out_overlap,s_out_context);
}
s_buffer_out = buffer;
s_buffer_size_out = size;
s_out_context = s_out_fifo_endpoint->BeginDataXfer(s_buffer_out, s_buffer_size_out, &s_out_overlap);
s_has_to_close_out = 1;
}

void usb_begin_in_transfer(unsigned char* buffer, int size) {
if (s_has_to_close_in == 1) {
s_in_fifo_endpoint->FinishDataXfer(s_buffer_in, s_buffer_size_in, &s_in_overlap,s_in_context);
}
s_buffer_in = buffer;
s_buffer_size_in = size;
s_in_context = s_in_fifo_endpoint->BeginDataXfer(s_buffer_in, s_buffer_size_in, &s_in_overlap);
s_has_to_close_in = 1;
}

int usb_finish_in_transfer() {
if (s_has_to_close_in == 1) {
s_in_fifo_endpoint->FinishDataXfer(s_buffer_in, s_buffer_size_in, &s_in_overlap,s_in_context);
}
s_has_to_close_in = 0;
return s_buffer_size_in;
}

int usb_finish_out_transfer() {
if (s_has_to_close_out == 1) {
s_out_fifo_endpoint->FinishDataXfer(s_buffer_out, s_buffer_size_out, &s_out_overlap,s_out_context);
}
s_has_to_close_out = 0;
return s_buffer_size_out;
}

int usb_is_in_transfer_done() {
return s_in_fifo_endpoint->WaitForXfer(&s_in_overlap,1);
}

int usb_is_out_transfer_done() {
return s_out_fifo_endpoint->WaitForXfer(&s_out_overlap,1);
}

void usb_wait_in_transfer_finish() {
while(!s_in_fifo_endpoint->WaitForXfer(&s_in_overlap,1));
}

void usb_wait_out_transfer_finish() {
while(!s_out_fifo_endpoint->WaitForXfer(&s_out_overlap,1));
}

   


 



//---------------------------------------------------------------------------
__fastcall TForm7::TForm7(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Button1Click(TObject *Sender)
{
usb_init();   
}
//-

Рекомендую оборачивать код - иначе он нечитаемый
« Последнее редактирование: 22-03-2007 06:37 от RXL » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines