|  | 
    | 
       
      
        
        УчастникЗдесь с 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 ctimport 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 ctimport 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 ctimport 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 ctimport 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
          Теперь всё работает! Спасибо! |