Есть проект на Delphi 6.0 - пример использования АЦП Е-154. (консольная программа осуществляет потоковый сбор данных с первых 4 каналов АЦП)
Пытаюсь его перевести под Lazarus.
Проект компилится, запускается, пишет в консоль
DLL Version --> OK
Module Interface --> OK
,но потом вываливается с ошибкой Sigsegv при попытке обращения к функциям интерфейса модуля
// интерфейс модуля E-154
pModule : ILE154;
например
// попробуем обнаружить модуль E-154 в первых MAX_VIRTUAL_SLOTS_QUANTITY_LUSBAPI виртуальных слотах
for i := 0 to (MAX_VIRTUAL_SLOTS_QUANTITY_LUSBAPI-1) do if pModule.OpenLDevice(i) then break;
Функции определены здесь.
- Код: Выделить всё
предок всех классов для USB устройств от L-Card
// *****************************************************************************
type
Lusbbase = class
// функции общего назначения для работы с USB устройствами
Function OpenLDevice(VirtualSlot : WORD) : BOOL; virtual; stdcall; abstract;
Function CloseLDevice : BOOL; virtual; stdcall; abstract;
Function ReleaseLInstance : BOOL; virtual; stdcall; abstract;
// получение дескриптора устройства USB
Function GetModuleHandle : THandle; virtual; stdcall; abstract;
// получение названия используемого модуля
Function GetModuleName(ModuleName : pAnsiChar) : BOOL; virtual; stdcall; abstract;
// получение текущей скорости работы шины USB
Function GetUsbSpeed(UsbSpeed : pBYTE) : BOOL; virtual; stdcall; abstract;
// управления режимом низкого электропотребления модуля
Function LowPowerMode(LowPowerFlag : BOOL) : BOOL; virtual; stdcall; abstract;
// функция выдачи строки с последней ошибкой
Function GetLastErrorInfo(LastErrorInfo : pLAST_ERROR_INFO_LUSBAPI) : BOOL; virtual; stdcall; abstract;
end;
Честно говоря не очень во всем этом ориентируюсь. Возможно, какая-нибудь мелочь ) Что тут можно сделать, куда копать?
Если кому будет интересно, проект лежит на сайте производителя
http://www.lcard.ru/download/e154_examples_source.zip