| 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 15.07.2017
 
						- Сообщений: 5
 
               
       
     | 
      
        Подключение E14-140M к программе на Python
        
          Прошу помощи при подключении модуля E14-140M к программе на Python под Windows либо через lcomp.dll, либо через lusbapi.dll. Сейчас проблема в том, что не удается правильно описать интерфейс IDaqLDevice в программе на Python. Работающий пример, который бы открывал плату и к примеру, читал бы ее серийный номер, был бы абсолютно достаточным. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Сотрудник "Л Кард"
 
                						- Откуда: Москва
 
						- Здесь с 23.04.2014
 
						- Сообщений: 3,727
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          можно посмотреть на wlcomp.dll и пример к нему. это будут просто С функции. без плюсов. должно быть полегче. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 15.07.2017
 
						- Сообщений: 5
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Спасибо, посмотрел wlcomp.dll, но при попытке ее использовать на 64-битной ОС появляется ошибка: ---------------------------------------------------------------------------
WindowsError                              Traceback (most recent call last)
<ipython-input-3-3b8c505be86b> in <module>()
      1 from ctypes import *
      2 
----> 3 wl = cdll.wlcomp
      4 
      5 hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp.dll')))
c:\Progs\anaconda2\lib\ctypes\__init__.pyc in __getattr__(self, name)
    434         if name[0] == '_':
    435             raise AttributeError(name)
--> 436         dll = self._dlltype(name)
    437         setattr(self, name, dll)
    438         return dll
c:\Progs\anaconda2\lib\ctypes\__init__.pyc in __init__(self, name, mode, handle, use_errno, use_last_error)
    364 
    365         if handle is None:
--> 366             self._handle = _dlopen(self._name, mode)
    367         else:
    368             self._handle = handle
WindowsError: [Error 193] %1 не является приложением Win32
 Код, вызвавший ошибку: from ctypes import *
wl = cdll.wlcomp
hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp.dll')))
hErr = pointer(c_ulong())
print 'hDll', hDll
hIfc = pointer(c_ulong(wl.CallCreateInstance(hDll, 0, hErr)))
print 'hIfc', hIfc
print 'hErr', hErr
print wl.OpenLDevice(hIfc)
 Не могли бы вы выложить для скачивания 64-битную версию wlcomp.dll ? 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Сотрудник "Л Кард"
 
                						- Откуда: Москва
 
						- Здесь с 23.04.2014
 
						- Сообщений: 3,727
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 15.07.2017
 
						- Сообщений: 5
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Благодарю! Файл получил! Теперь библиотека wlcomp64 открывается. И работает, но только на Windows XP 64-bit и только с драйвером 6.0.2.5 от 20.12.2011. Версии драйвера для E14-140 выше 6.0.2.5 не устанавливаются на Windows XP 64-bit (проверял версии 7.0.0.5 от 20.12.2017 и 7.0.0.4 от 04.06.2015). При попытке запуска на Windows 7 64-bit происходит следующее: Вызов LoadAPIDLL проходит без ошибок и я получаю указатель hDll. При вызове CallCreateInstance возвращается код ошибки 2 вместо 0 и нулевой указатель hIfc. Под Windows XP 64-bit на этом этапе код ошибки 0 и годный указатель hIfc. Код, который запускался на обеих системах: from ctypes import cdll, pointer, c_ulong
wl = cdll.wlcomp64
hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp64.dll')))
hErr = pointer(c_ulong())
print 'hDll', hDll.contents.value
hIfc = pointer(c_ulong(wl.CallCreateInstance(hDll, 0, hErr)))
print 'hIfc', hIfc.contents.value
print 'hErr', hErr.contents.value
 Результат запуска на Windows 7 64-bit: hDll 4200464384
hIfc 0
hErr 2
 Результат запуска на Windows XP 64-bit: hDll 187891712
hIfc 188361808
hErr 0
 При этом на семерке работает штатная программа LGRAPH без проблем, с любой версией драйвера. Целевая платформа, для которой разрабатывается программа - Windows 7 64-bit, установить туда XP не представляется возможным. Прошу Вашей подсказки, что же нужно сделать, чтобы использовать E14-140 через wlcomp64 под Windows 7 64-bit. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Сотрудник "Л Кард"
 
                						- Откуда: Москва
 
						- Здесь с 23.04.2014
 
						- Сообщений: 3,727
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          письмом ответил. wlcomp.h там другой чуток. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 15.07.2017
 
						- Сообщений: 5
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Спасибо, получил письмо с примером! Скомпилированный пример действительно работает как надо в 64-битном режиме на Windows 7. wlcomp.h для 64 бит отличается в том, что для hDll используется тип данных c_ulonglong вместо c_ulong в 32-битной версии. Изменение типа данных однако не изменило картины для программы на питоне. Все так же, на семерке не работает, в XP работает. В итоге поставил 32-битный питон, который заработал с 32-битной wlcomp.dll под 64-битной ОС. Благодарю за помощь. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 19.08.2018
 
						- Сообщений: 1
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Здравствуйте! Пытаюсь начать работать с е14-140м с помощью питона также в win7 х64. Поставил драйвер lcomp_old.dll, свежая версия почему-то становилась криво. Сейчас вроде стоит нормально, L-Graph работает. Запускаю приведенный выше код в питоне 3.7 х32 с 32-битным файлом wlcomp.dll в каталоге. Получаю значение указателя hDll = 0. Подскажите, пожалуйста, в чем может быть ошибка? Если можно, пришлите упомянутый выше файл с примером. Сергей 84 пишет:Скомпилированный пример действительно работает как надо в 64-битном режиме на Windows 7. wlcomp.h для 64 бит отличается в том, что для hDll используется тип данных c_ulonglong вместо c_ulong в 32-битной версии. Изменение типа данных однако не изменило картины для программы на питоне. Все так же, на семерке не работает, в XP работает. В итоге поставил 32-битный питон, который заработал с 32-битной wlcomp.dll под 64-битной ОС. Благодарю за помощь. 
  
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Сотрудник "Л Кард"
 
                						- Откуда: Москва
 
						- Здесь с 23.04.2014
 
						- Сообщений: 3,727
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Здравствуйте! Пытаюсь подключить библиотеку wlcomp.dll через Python следующим образом: import ctypes as ct import os libname = os.path.abspath(os.path.join(os.path.dirname(__file__), "wlcomp.dll")) wl = ct.CDLL(libname) В итоге получаю ошибку: OSError: [WinError 193] %1 не является приложением Win32 Система, под которой работаю: Windows 10. Модуль, с которым пытаюсь работать: E14-440. Пожалуйста, подскажите, как решить проблему. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Внимательно ознакомился с ответами выше и удалось решить проблему. Однако, теперь столкнулся с проблемой, которая выше также обозначается, а именно: при выполнении кода pythona: from ctypes import *
wl = cdll.wlcomp
hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp.dll')))
hErr = pointer(c_ulong())
hIfc = pointer(c_ulong(wl.CallCreateInstance(hDll, 0, hErr)))
print('hDll', hDll.contents.value)
print('hIfc', hIfc.contents.value)
print('hErr', hErr.contents.value)
 Получаю: Пожалуйста, подскажите, как это устранить. Заранее спасибо! Dmitry пишет:Здравствуйте! Пытаюсь подключить библиотеку wlcomp.dll через Python следующим образом: import ctypes as ct import os libname = os.path.abspath(os.path.join(os.path.dirname(__file__), "wlcomp.dll")) wl = ct.CDLL(libname) В итоге получаю ошибку: OSError: [WinError 193] %1 не является приложением Win32 Система, под которой работаю: Windows 10. Модуль, с которым пытаюсь работать: E14-440. Пожалуйста, подскажите, как решить проблему. 
  
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Добрый день, подскажите пожалуйста есть ли версия wlcomp под linux (debian)? пытаемся подключиться к е14-140 посредством python и библиотеки lcomp.so из http://download.opensuse.org/repositori … Debian_10/, открытие библиотеки и createinstance проходят, а openldevice нет, видимо в  lcomp.so просто не оформлена/отсутствует такая функция. Или, если возможно, приведите пример открытия устройства на python с помощью  lcomp.so 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 21.05.2021
 
						- Сообщений: 7
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Запишусь в очередь на манну небесную пример под Питон. 
                             
                					
        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 20.10.2020
 
						- Сообщений: 41
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          это тоже теоретически можно. но если wlcomp собрать в принципе не очень сложно и есть его исходники в виндовой версии. то питон мне придется как-то выучить немного... так что сроки этого даже по тикету будут приличные... 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Добрый день. Тоже, прямо очень необходимо получить разъяснения и примеры. Заранее признателен. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Dmitry пишет:Внимательно ознакомился с ответами выше и удалось решить проблему. Однако, теперь столкнулся с проблемой, которая выше также обозначается, а именно: при выполнении кода pythona: from ctypes import *
wl = cdll.wlcomp
hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp.dll')))
hErr = pointer(c_ulong())
hIfc = pointer(c_ulong(wl.CallCreateInstance(hDll, 0, hErr)))
print('hDll', hDll.contents.value)
print('hIfc', hIfc.contents.value)
print('hErr', hErr.contents.value)
 Получаю: Пожалуйста, подскажите, как это устранить. Заранее спасибо! Dmitry пишет:Здравствуйте! Пытаюсь подключить библиотеку wlcomp.dll через Python следующим образом: import ctypes as ct import os libname = os.path.abspath(os.path.join(os.path.dirname(__file__), "wlcomp.dll")) wl = ct.CDLL(libname) В итоге получаю ошибку: OSError: [WinError 193] %1 не является приложением Win32 Система, под которой работаю: Windows 10. Модуль, с которым пытаюсь работать: E14-440. Пожалуйста, подскажите, как решить проблему. 
  
  Получилось ли решить эту проблему? Тоже сижу голову ломаю 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          У вас получилось работать с этой библиотекой? У меня CreateInstance работает, hDll и hIfc определяются, а OpenLDevice не работает (Windows 10, x64) hDll 140734843846656
Err 0
hIfc 3071912784
Traceback (most recent call last):
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcard.py", line 13, in <module>
    with LCOMP(slot=0) as ldev:     
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcomp\lcomp.py", line 123, in __enter__
    if self.OpenLDevice():
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcomp\lcomp.py", line 151, in OpenLDevice
    _wlib.OpenLDevice(self._ifc)
OSError: exception: access violation reading 0x00000000B719AB50
  
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Андрей9834863 пишет:Dmitry пишет:Внимательно ознакомился с ответами выше и удалось решить проблему. Однако, теперь столкнулся с проблемой, которая выше также обозначается, а именно: при выполнении кода pythona: from ctypes import *
wl = cdll.wlcomp
hDll = pointer(c_ulong(wl.LoadAPIDLL('lcomp.dll')))
hErr = pointer(c_ulong())
hIfc = pointer(c_ulong(wl.CallCreateInstance(hDll, 0, hErr)))
print('hDll', hDll.contents.value)
print('hIfc', hIfc.contents.value)
print('hErr', hErr.contents.value)
 Получаю: Пожалуйста, подскажите, как это устранить. Заранее спасибо! Dmitry пишет:Здравствуйте! Пытаюсь подключить библиотеку wlcomp.dll через Python следующим образом: import ctypes as ct import os libname = os.path.abspath(os.path.join(os.path.dirname(__file__), "wlcomp.dll")) wl = ct.CDLL(libname) В итоге получаю ошибку: OSError: [WinError 193] %1 не является приложением Win32 Система, под которой работаю: Windows 10. Модуль, с которым пытаюсь работать: E14-440. Пожалуйста, подскажите, как решить проблему. 
  
  Получилось ли решить эту проблему? Тоже сижу голову ломаю 
  Вам нужно поменять dll файлы на 64-битные скорее всего, все библиотеки по умолчанию есть тут: C:\Program Files (x86)\LCard\LIBRARY\BIN 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          denisgriaznov пишет:У вас получилось работать с этой библиотекой? У меня CreateInstance работает, hDll и hIfc определяются, а OpenLDevice не работает (Windows 10, x64) hDll 140734843846656
Err 0
hIfc 3071912784
Traceback (most recent call last):
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcard.py", line 13, in <module>
    with LCOMP(slot=0) as ldev:     
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcomp\lcomp.py", line 123, in __enter__
    if self.OpenLDevice():
  File "C:\Users\Denis\Desktop\Laser Physics\Python UI\Optical Clock UI\lcomp\lcomp.py", line 151, in OpenLDevice
    _wlib.OpenLDevice(self._ifc)
OSError: exception: access violation reading 0x00000000B719AB50
 
  UPD: нашел проблему, в этой строчке для 64-битной версии нужно тоже менять тип c_uint на c_ulonglong: _ifc_type = lambda x: pointer(c_uint(x))
 нужно заменить на  _ifc_type = lambda x: pointer(c_ulonglong(x))
  
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Странно. У меня на Win7 64bit на python3.7 64bit вариант  _ifc_type = lambda x: pointer(c_uint(x))
  работает. Проверю и обновлю библиотеку 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Обновил. Спасибо за подсказку 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 04.10.2023
 
						- Сообщений: 3
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Скиньте, пожалуйста рабочий код на Python 64-bit для E14-440. 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Добавил поддержку E440 в https://github.com/RAA80/python-lcomp, но правильную работу не гарантирую, т.к у меня нет модуля E440 для проверки 
                             
                        
               
     | 
  
  
    | 
       
     | 
  
    | 
       
       
      
        
        - Участник
 
                						- Здесь с 04.10.2023
 
						- Сообщений: 3
 
               
       
     | 
      
        Re: Подключение E14-140M к программе на Python
        
          Теперь всё работает! Спасибо! 
                             
                        
               
     |