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


Проблема при работе с E14-440 в LabVIEW

Вы не вошли.

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

Vitaly
26.01.2006 15:32:44
#1

Гость

Проблема при работе с E14-440 в LabVIEW

При написании программы для E14-440 под LabVIEW столкнулся со следующей проблемой:
при вызове CIN, написанного мною для инициализации карты, из LabVIEW появляется сообщение об ошибке:
"The value of ESP was not properly saved across a function call. This is usually a result of calling a fucntion declared with one calling convention with a function pointer declared with a different calling convention"
и LabVIEW завершает работу.
при анализе кода CINа обнаружил, что данное сообщение об ошибке появляется, когда в код включается строчка
Res = WGetModuleName(*hInst, ModuleName);
Если ее убрать, то ошибка исчезает.
Собственно вопрос: В чем может быть проблема? И как с ней бороться?
Да, пишу на MS VC++ 6.0
LabVIEW версии 6.1
ОС Windows XP SP2 build 2600
P.S.Пример кода CINа, который приводит к падению LabVIEW.

CIN MgErr CINRun(uInt32 *hDLL, uInt32 *hInst, uInt32 *ErrCode)
{
    ULONG Res;
    LPVOID X;
    char *ModuleName;
    MODULE_DESCR_E440 md;
   
    Res = LoadAPIDLL("Lusbapi.dll", hDLL);
    if(Res!=0) {
        *ErrCode = 1;
        return noErr;
    };
    X = CallCreateInstance(*hDLL, "E440");
   
    *hInst = (ULONG)X;
    Res = WInitLDevice(*hInst, 0);
    if(Res!=1) {
        *ErrCode = 2;
        return noErr;
    };
    Res = WGetModuleName(*hInst, ModuleName);
    if(Res!=1) {
        *ErrCode = 3;
        return noErr;
    };
    *ErrCode = 0;
    return noErr;
}

26.01.2006 16:41:10
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема при работе с E14-440 в LabVIEW

память надо выделять для ModuleName, или описать как char[255]...

Vitaly
26.01.2006 16:45:45
#3

Гость

Re: Проблема при работе с E14-440 в LabVIEW

Это не помогает, я уже попробовал объявлять переменную как char ModuleName[255]. Видимо проблема не в этом.
Также обнаружил, что в примерах для LabVIEW, которые есть на дисках, периодически возникает такая же ошибка при вызове той же функции WGetModuleName()...

Vitaly
26.01.2006 16:58:14
#4

Гость

Re: Проблема при работе с E14-440 в LabVIEW

Да еще не подскажите, какая версия библиотеки последняя для использования совместно с LabVIEW. А то у меня есть три разные версии файлов:
Lusbapi.dll
версия 1.0.0.0 от 2 апреля 2002 г. 70Кб
версия 1.0.0.0 от 21 мая 2002 г.  272Кб
версия 2.0.0.0 от 2 декабря 2003 г. 88Кб

E440.bio
версия от 2 апреля 2002 г. 7,44Кб
версия от 24 декабря 2002 г. 7,71Кб
версия от 1 декабря 2003 г. 7,94Кб

Что лучше использовать и может есть более свежие версии данных файлов?

Александр
27.01.2006 10:08:19
#5

Гость

Re: Проблема при работе с E14-440 в LabVIEW

А какими примерами Вы пользуетесь? Старыми или новыми? Новый пример включает в себя три виртуальных прибора: Oscilloscope, Detector и приммер покадрового сбора?

Vitaly
31.01.2006 12:14:44
#6

Гость

Re: Проблема при работе с E14-440 в LabVIEW

Проверил работу на новых примерах. Выдается аналогичная ошибка при вызове Init CIN. Предположительно проблема все в той же функции WGetModuleName().

Vitaly
31.01.2006 15:03:10
#7

Гость

Re: Проблема при работе с E14-440 в LabVIEW

Все, проблема разрешилась заменой lusbapi.dll и e440.dll на версии, которые идут вместе с новыми примерами.