Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Не компилируется в VC++ 6.0

Вы не вошли.

 Поиск | Регистрация | Вход 

Aray
19.09.2003 08:36:56
#1

Гость

Не компилируется в VC++ 6.0

Здравствуйте!
Начальство купило LA3USB(говорят у вас очередь на вашу продукцию). Поставил драйвера и все остальное от Е440.(Встало как родное).
Вопрос существует ли файл lusbapi.lib для MSVS C++ 6.0 (из комплекта e440v2.exe не встает). Пишу прогу без этого файла - дает unresolved link (на CreateIntstance.. вставляею код динамической загрузки из единственного примера для MSVC, не помогает, просто становиьтся еще больше не разрешенных ссылок)
включаю его в проект invalid or corrupt lusbapi.lib .
Как быть? need help

22.09.2003 09:36:56
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: Не компилируется в VC++ 6.0

А штатный пример из директории //Examples//MSVC6//DynLoad работает исправно?

Aray
24.09.2003 10:08:52
#3

Гость

Re: Не компилируется в VC++ 6.0

Спасибо, запустил(был глюк в Виндах, переустановил, все заработало). Но вопрос о статической компановки DLL остался открытым.
(Это вообще возможно?)

24.09.2003 10:16:58
#4

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: Не компилируется в VC++ 6.0

В принципе статическая компановка DLL под MS Visual C++ 6.0 вполне возможна, правда предварительно необходима полная перекомпиляция проекта DLL в среде MSVS C++ 6.0. Исходники библиотеки можно найти на нашем CD-ROM.

Aray
25.09.2003 08:35:17
#5

Гость

Re: Не компилируется в VC++ 6.0

Здравтсвуйте!
Дальше больше :-)
добавил в пример /Examples//MSVC6//DynLoad
следующий код:

    am.AdcRate = 0.6;// частота работы АЦП в кГц
    am.InterKadrDelay = 1.0;
// Получил частоту на канал 0.1, и задержку 1.66
//***********************************//
   
    DWORD recbytes;
    DWORD BytesToRead;
    HANDLE ReadEvent;   
    OVERLAPPED ReadOv;
    DWORD TimeOut = 10000;

    short *Main_Buf;
    Main_Buf = (short*)calloc(5000,sizeof(short));
    DWORD shift =0, from = 0;

    ReadEvent = CreateEvent(NULL, FALSE , FALSE, NULL);
    memset(&ReadOv,0,sizeof(OVERLAPPED));
    ReadOv.hEvent = ReadEvent;

    if(!pE440->START_ADC()) TerminateApplication(" START_ADC_() --> Bad//n");
    else printf(" START_ADC --> OK//n");;
   
    while(!kbhit())
    {
        recbytes=0x0;
        BytesToRead = am.AdcFifoLength/2;
        pE440->ReadData(Main_Buf+shift, &BytesToRead, &recbytes, &ReadOv);
       
    if(WaitForSingleObject(ReadEvent, TimeOut) == WAIT_TIMEOUT)
        { CloseHandle(ReadEvent);  printf("   Getting Data -----> Error!!!//n");
          break; }
        if(recbytes !=0)
        {
            shift += am.AdcFifoLength/2;
            for(DWORD j = from; j< shift; j++)
            {
                short a = Main_Buf [j];    printf("data ===== %d//n",a);

            }//for
            from = shift;
        }// if(recbytes)
        else
        { printf("!!!!!!!------->No data!!!//n");}
    }

    if(!pE440->STOP_ADC()) TerminateApplication(" STOP_ADC() --> Bad//n");
    else printf(" STOP_ADC() --> OK//n");


//**************************************//

    // освободим интерфейс модуля
    if(!pE440->ReleaseLDevice()) TerminateApplication("//n ReleaseLDevice() --> Bad//n");
    else printf("//n ReleaseLDevice() --> OK//n");

    // освободим библиотеку
    delete pLoadDll;
    getch();
}

Получаю ошибку из строки if (WaitForSingleObject (ReadEvent ...
В чем может быть проблема?
(Таймауты так для пробы выставлял в разные значения, да проект Win32 console)

25.09.2003 13:07:37
#6

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: Не компилируется в VC++ 6.0

1. Переменная recbytes вполне может быть равна нулю после выполнения ф. ReadData(), поскольку у нас ассинхронный режим передачи информации. Так что проверка этой переменной на ноль не имеет ни малейшего смысла sad
2. Для заданных временнЫх параметрах сделайте TimeOut = 15000;

Aray
29.09.2003 13:00:44
#7

Гость

Re: Не компилируется в VC++ 6.0

Огромное спасибо!
Все в принципе заработало. Данные получаю (Пока кажется , что частота ChannelRate и количество плочаемых данных не совпадают, сейчас пишу прогу, чтобы проанализировать соотношение пришедших отсчетов с канала и величину ChannelRate). Заметил такую вещь, что сбор данных иногда не запускается, в зависимости от размера FIFO буфера.
(Для данных временных параметров AdcRate = 0.6, InterKadrDealay = 1.6 (ChannelRate =100) ЕСЛИ задать размер FIFO больше 512, то вываливается в ошибку, а если меньше, то прекрасно работает)

29.09.2003 13:19:12
#8

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: Не компилируется в VC++ 6.0

Посмотрите www.lcard.ru/forum.php3?action=viewthread&thread=1128.