Форум: Техническая поддержка

Тема: Подключение E14-140M к программе на Python

Вы не вошли.

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

15.07.2017 11:25:34
#1

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

Подключение E14-140M к программе на Python

Прошу помощи при подключении модуля E14-140M к программе на Python под Windows либо через lcomp.dll, либо через lusbapi.dll.

Сейчас проблема в том, что не удается правильно описать интерфейс IDaqLDevice в программе на Python.

Работающий пример, который бы открывал плату и к примеру, читал бы ее серийный номер, был бы абсолютно достаточным.

17.07.2017 13:23:06
#2

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

Re: Подключение E14-140M к программе на Python

можно посмотреть на wlcomp.dll и пример к нему. это будут просто С функции. без плюсов. должно быть полегче.

29.01.2018 10:37:31
#3

Участник
Здесь с 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 ?

29.01.2018 14:42:09
#4

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

Re: Подключение E14-140M к программе на Python

В почту послал.

30.01.2018 12:18:51
#5

Участник
Здесь с 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.

30.01.2018 13:36:17
#6

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

Re: Подключение E14-140M к программе на Python

письмом ответил. wlcomp.h там другой чуток.

30.01.2018 17:36:55
#7

Участник
Здесь с 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 22:14:33
#8

Участник
Здесь с 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-битной ОС. Благодарю за помощь.

20.08.2018 12:03:59
#9

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

Re: Подключение E14-140M к программе на Python

пример послал на почту

Dmitry
18.12.2020 08:12:11
#10

Гость

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. Пожалуйста, подскажите, как решить проблему.

Dmitry
18.12.2020 12:16:07
#11

Гость

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)

Получаю:

hDll 0
hIfc 0
hErr 2

Пожалуйста, подскажите, как это устранить. Заранее спасибо!

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. Пожалуйста, подскажите, как решить проблему.

MikhailShevchenko
02.04.2021 17:20:45
#12

Гость

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

03.06.2021 05:56:45
#13

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

Re: Подключение E14-140M к программе на Python

Запишусь в очередь на манну небесную пример под Питон.


L-Card E14-440

03.06.2021 13:15:22
#14

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

Re: Подключение E14-140M к программе на Python

это тоже теоретически можно. но если wlcomp собрать в принципе не очень сложно и есть его исходники в виндовой версии. то питон мне придется как-то выучить немного... так что сроки этого даже по тикету будут приличные...

Алексей_86
05.04.2022 14:29:29
#15

Гость

Re: Подключение E14-140M к программе на Python

Добрый день. Тоже, прямо очень необходимо получить разъяснения и примеры. Заранее признателен.

Андрей9834863
22.03.2023 19:03:14
#16

Гость

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)

Получаю:

hDll 0
hIfc 0
hErr 2

Пожалуйста, подскажите, как это устранить. Заранее спасибо!

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. Пожалуйста, подскажите, как решить проблему.


Получилось ли решить эту проблему? Тоже сижу голову ломаю

Гость123
27.03.2023 19:57:29
#17

Гость

Re: Подключение E14-140M к программе на Python

denisgriaznov
18.04.2023 11:34:52
#18

Гость

Re: Подключение E14-140M к программе на Python

Гость123 пишет:

У вас получилось работать с этой библиотекой?

У меня 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
denisgriaznov
18.04.2023 11:38:32
#19

Гость

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)

Получаю:

hDll 0
hIfc 0
hErr 2

Пожалуйста, подскажите, как это устранить. Заранее спасибо!

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

denisgriaznov
18.04.2023 13:33:48
#20

Гость

Re: Подключение E14-140M к программе на Python

denisgriaznov пишет:
Гость123 пишет:

У вас получилось работать с этой библиотекой?

У меня 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))
Гость123
19.04.2023 16:44:38
#21

Гость

Re: Подключение E14-140M к программе на Python

Странно. У меня на Win7 64bit на python3.7 64bit вариант

_ifc_type = lambda x: pointer(c_uint(x))

работает. Проверю и обновлю библиотеку

Гость123
20.04.2023 18:08:41
#22

Гость

Re: Подключение E14-140M к программе на Python

Обновил. Спасибо за подсказку

04.10.2023 17:23:13
#23

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

Re: Подключение E14-140M к программе на Python

Скиньте, пожалуйста рабочий код на Python 64-bit для E14-440.

Гость123
05.10.2023 16:09:43
#24

Гость

Re: Подключение E14-140M к программе на Python

Добавил поддержку E440 в https://github.com/RAA80/python-lcomp, но правильную работу не гарантирую, т.к у меня нет модуля E440 для проверки

09.10.2023 18:42:02
#25

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

Re: Подключение E14-140M к программе на Python

Теперь всё работает! Спасибо!

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск