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


Использование LComp.dll в .Net

Вы не вошли.

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

Dima131
01.08.2014 17:02:41
#1

Гость

Использование LComp.dll в .Net

Добрый день!
Появилась необходимость использования вашего оборудования (на данный момент - модули E14-140 и E14-440). И столкнулся с проблемой - полное отсутствие примеров для управляемой среды (я пишу на c#).
Я получил интерфейс IDAQLDevice, смог прочитать Slot_Params (по крайней мере я получил правильные значения BoardType). Однако остановился на ReadPlataDescr - поля структуры не заполняются. И, боюсь, это будет не последняя проблема.
Хотелось бы получить комментарии на эту тему, был бы очень благодарен за примеры.

01.08.2014 18:29:26
#2

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

Re: Использование LComp.dll в .Net

поиском по форуму пройдитесь. а так примеров для C# нету.

04.08.2014 09:02:30
#3

Участник
Здесь с 01.08.2014
Сообщений: 8

Re: Использование LComp.dll в .Net

Poul,
На вашем форуме не работает поиск.

04.08.2014 09:05:40
#4

Участник
Здесь с 01.08.2014
Сообщений: 8

Re: Использование LComp.dll в .Net

по крайней мере, на запросы "C#" и ".Net" я не нахожу ничего, даже ЭТУ тему

04.08.2014 09:52:56
#5

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

Re: Использование LComp.dll в .Net

Действительно слова C# и .Net чем-то поиску не нравятся)) хотя по остальным вроде работает.
Вот вроде недавно была тема с приведением кода: http://www.lcard.ru/forums/viewtopic.php?id=9361.

А так про lcomp не знаю, но если напишете тут конкретную не работающую функцию - описание ее и нужных типов на C и Ваше описание на C# то могу попробовать предположить ошибку

04.08.2014 09:57:19
#6

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

Re: Использование LComp.dll в .Net

Тут например кто-то выкладывал свою обертку, правда не знаю насколько она актуальна на сегодняшний день http://www.lcard.ru/forums/viewtopic.php?id=8640

04.08.2014 10:01:59
#7

Участник
Здесь с 01.08.2014
Сообщений: 8

Re: Использование LComp.dll в .Net

Спасибо smile попробую пока изучить эту тему, и если это не поможет - то напишу сюда, уже более конкретно

04.08.2014 12:47:18
#8

Участник
Здесь с 01.08.2014
Сообщений: 8

Re: Использование LComp.dll в .Net

[Guid("32bb8320-b41b-11cf-a6bb-0080c7b2d682"), InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)]
    public unsafe interface IDaqLDevice
    {
        IntPtr OpenLDevice();
        L_Result LoadBios(string Filename);
        L_Result PlataTest();
        L_Result GetSlotParam(ref SLOT_PAR slPar);
        L_Result ReadPlataDescr(void* pd);
     // L_Result IoAsync(PDAQ_PAR sp);
     // L_Result RequestBufferStream(ref uint Size, uint StreamId = L_STREAM_ADC);
     // L_Result SetParametersStream(PDAQ_PAR sp, ref uint UsedSize, ref IntPtr Data, ref IntPtr Sync, uint StreamId = L_STREAM_ADC);
     // L_Result FillDAQparameters(PDAQ_PAR sp); 
     // L_Result InitStartLDevice();
     // L_Result StartLDevice();
     // L_Result StopLDevice();
     // L_Result CloseLDevice();
    }

static unsafe void Main(string[] args)
       {
            var Dev = LComp.CreateDevice(0);
            Console.WriteLine("OpenLDevice: {0}", Dev.OpenLDevice());
            var par = new SLOT_PAR();
            Console.WriteLine("GetSlotParam: {0}", Dev.GetSlotParam(ref par));
            Console.WriteLine("LoadBIOS: {0}", Dev.LoadBios("E440") );

            var arr = new byte[256];
            fixed (void* pd = &arr[0] )
            {
                Console.WriteLine("ReadPlataDescr: {0}", Dev.ReadPlataDescr(pd));
            }
            Console.ReadLine();
        }

просмотрел пример - с ним следующие отличия - я пока пытаюсь работать с lcomp.dll с COM-объектом. Выше я привел код, над которым на данный момент работаю. Функция GetSlotParam - возвращает правильные значения для типов плат, однако ReadPlataDescr - не изменяет значения массива arr

04.08.2014 13:09:44
#9

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

Re: Использование LComp.dll в .Net

Ах если Вы COM-напрямую пытаетесь вызвать, это совсем другое. COM - вообще очень специфическая microsoft'овская вешь, работа которой основана на том как организованна таблица виртуальных методов.... Я думаю что просто так тут класс не опишешь... У Micorosoft для вызова COM из .Net есть отдельные статьи http://msdn.microsoft.com/en-us/library … .110).aspx, но так как lcomp не полностью COM, то не уверен, что они помогут....

Мне кажется с C-ой оберткой все же более простой пусть. По крайней мере я всегда работал только через C-интерфейс, про COM к сожалению не подскажу.

04.08.2014 13:35:48
#10

Участник
Здесь с 01.08.2014
Сообщений: 8

Re: Использование LComp.dll в .Net

Я решил попробовать COM потому, что в описании сказано, что это COM, хоть и не совсем. А то, что функция GetSlotParam сработала - дало надежду на то, что получится  пойти таким путем. Но, похоже действительно, придется идти через врапер.
Мне все хочется узнать, почему у вас до сих пор не появилось поддержка .Net? Я понимаю, что все это можно сделать самому, но на это придется тратить довольно много времени