|  | 
    | 
       | 
        L780 - Как подключить библиотеки АЦП в Visual C++
          Стоит задача написать программу сбора и обработеи данных под Виндоус... начал разбиратся... блин длл не подключается (потом в хелпе нашел что это вроде как не настоящая длл).. а что тогда подключать в проект добовлять .h файлы??? неужелит никто под винду не писал.... подскажите плиз как оно правильно??? | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          пример открыть и посмотреть... | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          вы знаете не совсем разобрался.... застрял вообще на самом первом этапе...
Дело в том что пишую я в Visuale 7 там чтобы подключить библиотеку нужно....
 1. открыть проект
 2. пункт меню Project -> Add Reference...
 здесь выбираем нужную нам dll  и нажимам ок....
 я пробовал почтивсе библиотеи что упоминаюся в разных мануалах да под разные вещи.. на все выдает одну и ту же ошибку: this is is not valid assembly or com component...
 подскажите пожалуйста это я чтото делаю не верно.. или надо использовать чтото другое??? или как то по другому..
 заранее спасибо | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          тут ничего засовывать не надо... в проект если посмотрите включены create.cpp и lguids.cpp... тут динамическая загрузка в процессе выполнения... | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          можно поподробнее... какой примерно пример смотреть???? | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++ | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          блин у меня с таким именем только файлы .bio есть...есть лиэто в вашем доунлоаде? | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          после установки драйверов смотрите в папке L-Card/Library... | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          почему то такого файла у меня нет .. :-( я поиском искал.... | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          а глазами посмотреть, что поставилось? | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          а мануал нормальный написать???? | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          хм... та к там готовые проекты под VC6.... | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          Мда... а что ставиться при установке драйверов в L-Card/Library? Про шарп ничем помочь не могу.... | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          всмысле не признает? он ее точно также как 6 признает...вот за COM объект он ее не признает... | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          С# : описываю функцию следующим образом :
 [DllImport("lcomp.dll",EntryPoint="QueryInterface")] public static extern Int32 QueryInterface(Guid iid, IntPtr i);
 при вызове функции появляется EntryPointNotFoundException : Unable to find an entry point named 'QueryInterface' in DLL 'lcomp.dll'.
 вот такая беда | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          так ее там и нет. В таком стиле вызовется только CreateInstance... Дальше все вызывать нужно через указатель на интерфейс... Решение проблеммы возможно если скачать свежую версию и там из папок WLCOMP взять враппер  для LabView. Там классический вызов функций. Ну или разобраться как в С# вызывать функции также как в сишных примерах... | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          ничего не понял.... 7-(
 в шарпе можно вызвать любую функцию из библиотеки если : 
перед вызовом указать имя библиотеки с помощью атрибута DllImport
 правильно задать все аттрибуты вызываемой функции.
 задать точку входа в библиотеку..
 что это юудет для нашей/вашей библиотеки? | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          вот в общем то я добился следующих достижений:
этот исходный код выводит версию длл
 using System;
using System.Reflection;
 using System.Runtime.InteropServices;
 namespace ConsoleApplication2
{
 
     class Class1
{
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 [STAThread]
 
 static void Main(string[] args)
 {
 Console.WriteLine(GetDllVersion().ToString());
             Console.ReadLine();
 }
 [DllImport("Lusbapi.dll")]
 public static extern int GetDllVersion();
 }
 }
 | 
  
    |  | 
    | 
       
      
        
        Сотрудник "Л Кард"Откуда: МоскваЗдесь с 23.04.2014Сообщений: 3,727 | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          чего непонятно то?
в lcomp 1 функция возвращает указатель и все остальные вызываются в виде pointer->Function,
 в том что на сайте сейчас есть обертка wlcomp
 которая функции вызывает по простому...
 | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          смотрел я это. Искал подобную конструнцию в документации и на форумах dotNet-а. Не нашел. | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          Значит так? поправте меня если я неправ...
Я так понял, что нужно
 1. Скачать из доунлоада сайта файл lcomp.exe
 2. Проинсталировать его
 3. В проинсталированной папке есть папка Library а в ней соответственно папка wlcomp
 4. В найденной папке есть длл wlcomp.dll которую и нужно подключать.
 5. Пишем код:
 static void Main(string[] args)
{
 Console.WriteLine(GetDllVersion().ToString());
 Console.ReadLine();
 }
 
 [DllImport("wlcomp.dll")]
 public static extern int GetDllVersion();
 }
 и что то должно вернутся, но к сожалению неполучается, на одни функции пишет нет такой, на другие, укажите точку входа???
 Хелп!!!! | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          ...
 [DllImport("d://wlcomp.dll", CallingConvention = CallingConvention.StdCall)]
extern static public Int32 OpenLDevice();
         private void button1_Click(object sender, EventArgs e)
{
 try
 {
 Int32 ii = OpenLDevice();
 }
 catch (Exception ee)
 {
 }
 }
 при вызове функции полуил SEHException Exception. Уже не "Unable to find an entry point", прогресс  | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          я тож примерно подобный код написал, только  LoadAPIDLL("lcomp.dll"); делал с wlcomp.dll.
 Выпадает {System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at lCardNewDLLTest1.dllHandler.CallCreateInstance(UInt64& hDll, UInt64 slot, UInt64& Err)
 | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          тоже при вызове CallCreateInstance
 странно, почему у нас ошибки разные ? | 
  
    |  | 
    | 
       | 
        Re: L780 - Как подключить библиотеки АЦП в Visual C++
          в общем незнаю правильно ли но вот есть такой результат: 
 Loading lcomp.dll
Адрес начала библиотеки : 63832064
 Вызов функции CallCreateInstance...
 Функция выполнена успешно.
 Указатель на устройство : 63971096
 Вызов функции OpenLDevice...
 Функция выполнена успешно.
 Дискриптор полученного устройства : 944
 Загрузка биоса...
 Функция выполнена успешно.
 Считывание параметров платы...
 Функция выполнена успешно.
 Инициализация функции тестирования платы...
 Функция выполнена успешно.
  Серийный номер платы : 4C2408
Called RequestBufferStream. Allocated memory size(word): 2048. Error result = 0
 Called SetParametersStream. Error result = 0
 Plata parameters  :
 Buffer size(word) : 2048
 Pages             : 1
 IrqStep           : 2048
 FIFO              : 2048
 Rate              : 20,000000000058
 Called InitStartLDevice. Error result = Функция выполнена успешно.
 syncVarPointer = 64028672 dataStartPointer = 64032768 Разница  = -4096
 Adress = 64032768 value = 0
 Adress = 64032769 value = 0
 Adress = 64032770 value = 0
 Adress = 64032771 value = 0
 Adress = 64032772 value = 73
 Adress = 64032773 value = 114
 Adress = 64032774 value = 112
 Adress = 64032775 value = 32
 Adress = 64032776 value = 32
 Adress = 64032777 value = 30
 Adress = 64032778 value = 86
 Adress = 64032779 value = 128
 Adress = 64032780 value = 32
 Adress = 64032781 value = 30
 Adress = 64032782 value = 86
 Adress = 64032783 value = 128
 Adress = 64032784 value = 0
 Adress = 64032785 value = 112
 Adress = 64032786 value = 171
 Adress = 64032787 value = 129
 Adress = 64032788 value = 0
 Adress = 64032789 value = 0
 Adress = 64032790 value = 0
 Adress = 64032791 value = 0
 Adress = 64032792 value = 24
 Adress = 64032793 value = 128
 Adress = 64032794 value = 171
 Adress = 64032795 value = 129
 Adress = 64032796 value = 24
 Adress = 64032797 value = 128
 Adress = 64032798 value = 171
 Adress = 64032799 value = 129
 Adress = 64032800 value = 0
 Adress = 64032801 value = 0
 Adress = 64032802 value = 0
 Adress = 64032803 value = 0
 Adress = 64032804 value = 216
 Adress = 64032805 value = 1
 Adress = 64032806 value = 0
 Adress = 64032807 value = 0
 Adress = 64032808 value = 0
 Adress = 64032809 value = 1
 Adress = 64032810 value = 10
 Adress = 64032811 value = 12
 Adress = 64032812 value = 0
 Adress = 64032813 value = 0
 Adress = 64032814 value = 0
 Adress = 64032815 value = 4
 Adress = 64032816 value = 224
 Adress = 64032817 value = 26
 Adress = 64032818 value = 48
 Adress = 64032819 value = 129
 Adress = 64032820 value = 208
 Adress = 64032821 value = 26
 Adress = 64032822 value = 48
 Adress = 64032823 value = 129
 Adress = 64032824 value = 0
 Adress = 64032825 value = 0
 Adress = 64032826 value = 0
 Adress = 64032827 value = 0
 Adress = 64032828 value = 0
 Adress = 64032829 value = 0
 Adress = 64032830 value = 0
 Adress = 64032831 value = 0
 Adress = 64032832 value = 0
 Adress = 64032833 value = 0
 Adress = 64032834 value = 0
 Adress = 64032835 value = 0
 Adress = 64032836 value = 0
 Adress = 64032837 value = 0
 Adress = 64032838 value = 0
 Adress = 64032839 value = 0
 Adress = 64032840 value = 0
 Adress = 64032841 value = 0
 Adress = 64032842 value = 0
 Adress = 64032843 value = 0
 Adress = 64032844 value = 0
 Adress = 64032845 value = 0
 Adress = 64032846 value = 0
 Adress = 64032847 value = 0
 Adress = 64032848 value = 0
 Adress = 64032849 value = 0
 Adress = 64032850 value = 0
 Adress = 64032851 value = 0
 Adress = 64032852 value = 0
 Adress = 64032853 value = 0
 Adress = 64032854 value = 0
 Adress = 64032855 value = 0
 Adress = 64032856 value = 64
 Adress = 64032857 value = 77
 Adress = 64032858 value = 128
 Adress = 64032859 value = 129
 Adress = 64032860 value = 0
 Adress = 64032861 value = 0
 Adress = 64032862 value = 0
 Adress = 64032863 value = 0
 Adress = 64032864 value = 0
 Adress = 64032865 value = 0
 Adress = 64032866 value = 0
 Adress = 64032867 value = 0
 Вызов функции StopLDevice...
Функция выполнена успешно.
 Вызов функции CloseLDevice...
 Функция выполнена успешно.
 Вызов функции FreeAPIDLL...
 Функция не поддерживается этой платой.
 
помоему что то нетак...
 выводится это так
 Data += " syncVarPointer = " + syncVarPointer.ToString() +  " dataStartPointer = " + dataStartPointer.ToString();
Data += " Разница  = " + (syncVarPointer.ToInt32() - dataStartPointer.ToInt32()).ToString();
             
for (int i = 0; i<100; i++)
 {
 RealAdress = (uint)(dataStartPointer.ToInt32() + i);
 csDriverLibrary.GetDataFromBuffer(ref hIfc, RealAdress, ref MasOfData, (uint)1);
 Data += "Adress = "  + RealAdress.ToString() + " value = " + MasOfData.ToString()+ "/n" ;
 }
 а структура вот такая:
 
csDriverLibrary.WADC_PAR_0 helper = new csDriverLibrary.WADC_PAR_0();
             helper.s_Type = (ushort)csDriverLibrary.L_ADC_PARAM; // тип структуры (должен быть L_ADC_PARAM);
helper.AutoInit = 1;    // флаг указывающий на тип сбора данных 0 - однократный 1 - циклический;
 helper.dRate = 20;     // частота опроса каналов в кадре (кГц);
 helper.dScale = 0;
 helper.dKadr = 0.0;       // интервал между кадрами (мс);
 helper.SynchroType = 3; // тип синхронизации;
 helper.SynchroSensitivity = 0;
 helper.SynchroMode = 0;
 helper.AdChannel = 0;
 helper.AdPorog = 0;
 helper.NCh = 1;         // количество опрашиваемых каналов ;
 helper.Chn[0] = 0x0;    // массив с номерами каналов и усилением на них; описывает порядок опроса каналов;
 helper.Chn[1] = 0x1;
 helper.Chn[2] = 0x2;
 helper.Chn[3] = 0x3;
 helper.FIFO = 2048;     // размер половины аппаратного буфера FIFO на плате;
 helper.IrqStep = 2048;  //
 helper.Pages = 32;      // произведение этих двух параметров IrqStep*Pages задает количество отсчетов,
 // которое соберет плата при однократном сборе, но не больше чем 128К отсчетов.
 // При циклическом сборе они игнорируются – буфер всегда 128К.
 helper.IrqEna = 1;      // разрешение генерации прерывания от платы (mask/0),
 // при этом mask - это младшие 16 бит в слове разрешающем прерывания от платы (блок АЦП);
 helper.AdcEna = 1;      // разрешение работы АЦП (1/0);
 
csDriverLibrary.FillDAQparameters(ref hIfc, ref helper, csDriverLibrary.L_ADC_PARAM);
 DAQparameters.t3 = helper;
             uint tm = 100;        // мы захотели 100000 отсчетов
Err = csDriverLibrary.RequestBufferStream(ref hIfc, ref tm, csDriverLibrary.L_STREAM_ADC);
 result += "/nCalled RequestBufferStream. Allocated memory size(word): " + tm.ToString() + ". Error result = " + Err.ToString() + '/n';
             Err = csDriverLibrary.SetParametersStream(ref hIfc, ref helper, /*csDriverLibrary.L_STREAM_ADC*/2, ref tm, ref dataStartPointer, ref syncVarPointer, csDriverLibrary.L_STREAM_ADC);
result += "Called SetParametersStream. Error result = " + Err.ToString() + "/n";
 result += "Plata parameters  : " + "/n";
 result += "Buffer size(word) : " + tm.ToString() + "/n";
 result += "Pages             : " + helper.Pages.ToString() + "/n";
 result += "IrqStep           : " + helper.IrqStep.ToString() + "/n";
 result += "FIFO              : " + helper.FIFO.ToString() + "/n";
 result += "Rate              : " + helper.dRate.ToString() + "/n";
             DAQparameters.t3 = helper;
             Err = csDriverLibrary.EnableCorrection(ref hIfc,1); // Коррекция 
Err = csDriverLibrary.InitStartLDevice(ref hIfc); // Инициализация
 result += "Called InitStartLDevice. Error result = " + ErrorMessenger(Err) + "/n";
 Вопрос : почему разница между syncVarPointer = 64028672 dataStartPointer = 64032768  4096? |