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

E14-140 + Linux. С чего начать?

Вы не вошли.

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

Gals
09.10.2015 11:19:18
#1

Гость

E14-140 + Linux. С чего начать?

Добрый день.
У меня Е14-140М и ubuntu на ядре 3.13.0-37-generic
Я скачал и установил драйвера lcomp_linux.tgz.
Подключил устройство.

lsusb
Bus 005 Device 005: ID 0471:0140 Philips (or NXP) 

Подскажите, как работать дальше.
1. Должно ли появиться устройство в /dev ?
2. Есть ли примеры работы с устройством под линукс? Не могу найти примеров в библиотеке файлов, xosc - работает просто с устройствами.

3. В документе ldsp1208.zip, описывается работа с библиотекой LDSP - где её взять?
4. В документе ldsp1208.zip, подключается файл ldsp/ldps.h - где его взять?

5. Если можно пример РАБОЧЕГО кода программы, которая работает с Е14-140М в линуксе.

09.10.2015 13:24:54
#2

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

Re: E14-140 + Linux. С чего начать?

Если скачали lcomp_linux.tgz то там внутри и драйвер и библиотека и пример. И еще Readme есть. Собрать нужно драйвера и прописать в udev. Собрать библиотеки и поотм пример подправив в нем пути...

Gals
09.10.2015 22:45:35
#3

Гость

Re: E14-140 + Linux. С чего начать?

Poul пишет:

Если скачали lcomp_linux.tgz то там внутри и драйвер и библиотека и пример.

Пример test и библиотеку для него скомпилировал, но он не работает, При запуске пишет: error InitInstance

Правила я скопировал, но это ничего не изменило.

А кроме этого никаких больше рабочих "живых" примеров нету?

Gals
09.10.2015 22:49:28
#4

Гость

Re: E14-140 + Linux. С чего начать?

Вот что дает запуск примера:

./test 0 e140
CallCreateInstance failed 

Что с этим делать?

Gals
09.10.2015 22:59:58
#5

Гость

Re: E14-140 + Linux. С чего начать?

устройства:

lilu@lilu-laptop:~$ ls /dev
agpgart          hpet    network_latency     ram15   sda3        tty1   tty25  tty40  tty56    usbmon0     vcsa
audio            input   network_throughput  ram2    sda4        tty10  tty26  tty41  tty57    usbmon1     vcsa1
block            kmsg    null                ram3    sda5        tty11  tty27  tty42  tty58    usbmon2     vcsa2
bsg              log     oldmem              ram4    sda6        tty12  tty28  tty43  tty59    usbmon3     vcsa3
bus              loop0   pktcdvd             ram5    sda7        tty13  tty29  tty44  tty6     usbmon4     vcsa4
char             loop1   port                ram6    sequencer   tty14  tty3   tty45  tty60    usbmon5     vcsa5
console          loop2   ppp                 ram7    sequencer2  tty15  tty30  tty46  tty61    v4l         vcsa6
core             loop3   psaux               ram8    sg0         tty16  tty31  tty47  tty62    vboxdrv     vcsa7
cpu_dma_latency  loop4   ptmx                ram9    shm         tty17  tty32  tty48  tty63    vboxnetctl  vga_arbiter
disk             loop5   pts                 random  snapshot    tty18  tty33  tty49  tty7     vcs         video0
dri              loop6   ram0                rfkill  snd         tty19  tty34  tty5   tty8     vcs1        zero
dsp              loop7   ram1                root    sndstat     tty2   tty35  tty50  tty9     vcs2
ecryptfs         mapper  ram10               rtc     stderr      tty20  tty36  tty51  ttyS0    vcs3
fb0              mcelog  ram11               rtc0    stdin       tty21  tty37  tty52  ttyS1    vcs4
fd               mem     ram12               sda     stdout      tty22  tty38  tty53  ttyS2    vcs5
full             mixer   ram13               sda1    tty         tty23  tty39  tty54  ttyS3    vcs6
fuse             net     ram14               sda2    tty0        tty24  tty4   tty55  urandom  vcs7

файл правил:

lilu@lilu-laptop:~$ ls /etc/udev
lcard.rules  rules.d  udev.conf

Почему не получается?

Gals
09.10.2015 23:18:41
#6

Гость

Re: E14-140 + Linux. С чего начать?

Gals пишет:

Вот что дает запуск примера:
./test 0 e140
CallCreateInstance failed

Вот тут было сказано:

Перейдите в папку с распакованным архивом
Далее чтобы собрать правильно драйвера раскомментируйте дефайн #define LCOMP_LINUX 1 в include/stubs.h
sudo ./build
sudo ./start

после этого появилось устройство ldevice0-4

lilu@lilu-laptop:~/L-Card/driver/dstr-29/dstr/test$ ls /dev
agpgart          hpet      mapper              ram10   rtc         stderr  tty20  tty36  tty51  ttyS0       vcs3
audio            input     mcelog              ram11   rtc0        stdin   tty21  tty37  tty52  ttyS1       vcs4
block            kmsg      mem                 ram12   sda         stdout  tty22  tty38  tty53  ttyS2       vcs5
bsg              ldevice0  mixer               ram13   sda1        tty     tty23  tty39  tty54  ttyS3       vcs6
bus              ldevice1  net                 ram14   sda2        tty0    tty24  tty4   tty55  urandom     vcs7
char             ldevice2  network_latency     ram15   sda3        tty1    tty25  tty40  tty56  usbmon0     vcsa
console          ldevice3  network_throughput  ram2    sda4        tty10   tty26  tty41  tty57  usbmon1     vcsa1
core             ldevice4  null                ram3    sda5        tty11   tty27  tty42  tty58  usbmon2     vcsa2
cpu_dma_latency  log       oldmem              ram4    sda6        tty12   tty28  tty43  tty59  usbmon3     vcsa3
disk             loop0     pktcdvd             ram5    sda7        tty13   tty29  tty44  tty6   usbmon4     vcsa4
dri              loop1     port                ram6    sequencer   tty14   tty3   tty45  tty60  usbmon5     vcsa5
dsp              loop2     ppp                 ram7    sequencer2  tty15   tty30  tty46  tty61  v4l         vcsa6
ecryptfs         loop3     psaux               ram8    sg0         tty16   tty31  tty47  tty62  vboxdrv     vcsa7
fb0              loop4     ptmx                ram9    shm         tty17   tty32  tty48  tty63  vboxnetctl  vga_arbiter
fd               loop5     pts                 random  snapshot    tty18   tty33  tty49  tty7   vcs         video0
full             loop6     ram0                rfkill  snd         tty19   tty34  tty5   tty8   vcs1        zero
fuse             loop7     ram1                root    sndstat     tty2    tty35  tty50  tty9   vcs2
Gals
09.10.2015 23:20:31
#7

Гость

Re: E14-140 + Linux. С чего начать?

Gals пишет:

после этого появилось устройство ldevice0-4

А какое из них правильное, если у меня стоит только одна Е140?

Gals
09.10.2015 23:34:30
#8

Гость

Re: E14-140 + Linux. С чего начать?

Но библиотека не запускается.
Я так же её собираю, копирую в папку test, собираю и запускаю test
вот что пишет.

./test 0 e140
error open dll!! /home/poul/dio/test/liblcomp.so: cannot open shared object file: No such file or directory
Ошибка сегментирования

На этом я пока завис.

Кстати

Чтобы собрать библиотеку lcomp нужно в исходниках в файле ldevbase.cpp замениить строчку strcpy(szDrvName,"/dev/ldev"); на strcpy(szDrvName,"/dev/ldevice"); т.к. именно такие файлы устройств создает драйвер, а в библиотеке видно еще остались старые названия(разработчики поправьте исходники!)

тоже пришлось делать.  roll

Gals
11.10.2015 15:52:44
#9

Гость

Re: E14-140 + Linux. С чего начать?

В общем после танцев с бубном test таки запустился

Но есть еще ряд вопросов:

1. test пишет некий файл test.dat, опрашивая 4 канала.
Вопрос: в каком виде читаются данные из буфера? как отличить данные одного канала от данных другого?

2. test читает только АЦП.
Вопрос: как мне читать цифровые входы через lcomp, и как писать в цифровые выходы?

3. При загрузке ОС Линукс устройств ldevice в системе НЕТ!
Они появляются после выполнения скрипта start.
Вопрос: это нормально, или все же как-то должно устройство появляться автоматом при загрузке системы?

Gals
11.10.2015 18:42:23
#10

Гость

Re: E14-140 + Linux. С чего начать?

4. test работает только под администратичными правами.
Вопрос: что нужно сделать чтобы можно было работать от обычного пользователя?

Gals
12.10.2015 09:32:56
#11

Гость

Re: E14-140 + Linux. С чего начать?

Отвечаю на вопрос:

Gals пишет:

4. test работает только под администратичными правами.
Вопрос: что нужно сделать чтобы можно было работать от обычного пользователя?

Для этого надо чтобы устройства имели права доступа RW:

ls -l /dev | grep ldev
crw-rw-rw-  1 root root    249,   0 окт.  12 09:12 ldevice0
crw-rw-rw-  1 root root    249,   1 окт.  12 09:12 ldevice1
crw-rw-rw-  1 root root    249,   2 окт.  12 09:12 ldevice2
crw-rw-rw-  1 root root    249,   3 окт.  12 09:12 ldevice3
crw-rw-rw-  1 root root    249,   4 окт.  12 09:12 ldevice4

в файл start прописал:

chmod a+rw /dev/ldev*
Gals
12.10.2015 09:44:50
#12

Гость

Re: E14-140 + Linux. С чего начать?

Отвечаю на вопрос:

Gals пишет:

1. test пишет некий файл test.dat, опрашивая 4 канала.
Вопрос: в каком виде читаются данные из буфера? как отличить данные одного канала от данных другого?

Циклический буфер содержит числа типа short от считывания каждого измеряемого канала последовательно и по порядку:
Например:
Если считываются каналы 4, 2, 7 то в буфере будет: Число4, Число2, Число7, Число4, Число2, Число7, Число4, ....  - по каждому считываемому каналу последовательно, согласно тому, что записано в поле Chn структуры ADC_PAR.
Если например:
считываются каталы: 1, 2, 15, 4, 15, 15, 15 то в буфере будет: Число1, Число2, Число15, Число4, Число15, Число15, Число15 - в соответствии с номерами каналов в Chn.

Gals
12.10.2015 09:49:11
#13

Гость

Re: E14-140 + Linux. С чего начать?

Однако замечено, что

Gals пишет:

согласно тому, что записано в поле Chn структуры ADC_PAR.

начинается не всегда с первого указанного в Chn канала. То есть может начаться как бы с середины, при чем произвольно.
Вопрос: с чем это может быть связано?

12.10.2015 12:58:50
#14

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

Re: E14-140 + Linux. С чего начать?

если в правила udev добавить lcard.rules то будут создаваться линки ldev0... и править ничего не надо. И права там будут правильные емнип.И устройство будет появляться сразу если драйвера в систему прописать. В примере путь к библиотеке liblcomp.so нужно просто поправить на реальный. Данные идут 0 1 2 3 0 1 2 3... при опросе каналов 0,1,2,3. Перебор таблицы всегда с начала начинается при старте. Для асинхронного опроса цифровых линий есть IoAsync. Там естьописание в pdf файле. Все практически аналогично  windows.

Gals
12.10.2015 14:10:34
#15

Гость

Re: E14-140 + Linux. С чего начать?

Poul пишет:

если в правила udev добавить lcard.rules то будут создаваться линки ldev0... и править ничего не надо.

В том то и дело что этот файл добавлен, но ничего этого не происходит почемуто.
Если этот файл не добавить в udev, то при запуске start - устройства не появляются!
Может вы говорите о каком то другом файле lcard.rules - не том, что находится в папке с драйвером?

12.10.2015 14:15:53
#16

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

Re: E14-140 + Linux. С чего начать?

Не знаю. надо читать . Там вечно что-от меняется. Еще и в разных дистрибутивах все по разному. Я на слаке все это делал.

Gals
22.10.2015 13:29:39
#17

Гость

Re: E14-140 + Linux. С чего начать?

На основе примеров, документов и помощи на форуме, написалась консольная програмка, позволяющая управлять L-card E14-140M

Теперь легко пользуюсь ею из PHP big_smile

Вот её функционал:

alexey lproc # ./lproc 
Lcard manager (E14-140M only)
2015 GALS
Usage:
lproc <params> [<channels>]
    params:
        -a <action> - action
            action:
                r - read ADC (use -f -c -p -m and channels options)
                w - write DAC
                s - set digital outputs (use -d -i -ib -f options)
                g - get digital inputs (use -o -oh -ob -c -f options)
                i - get Lcard info
        -f <freq> - process frequency
        -c <count> - number of points for action (default 1000)
        -p <prefix> - file prefix
        -m <mode> - read contact mode
            mode:
                d - differencial (default)
                g - ground mode
        -d <data> - set value to digital outs
            data:
                0101000100100111 - binary number
                a5f0 - hex number
        -i <infile> - text file for out to digit outputs
            infile - file contain hex or binary values new line separated. (-f parameter define frequency of output)
        -ib <infile> - binary file for out to digit outputs
            infile - file contain array or words (-f parameter define frequency of output)
        -o <outfile> - text output file for readed datas from digital inputs
            outfile - file contain binary digits of readed values. (-f parameter define frequency of output)
        -oh <outfile> - text output file for readed datas from digital inputs
            outfile - file contain hex digits of readed values. (-f parameter define frequency of output)
        -ob <infile> - binary output file for readed datas from digital inputs
            infile - file contain array or words readed values(-f parameter define frequency of output)
    channels:
        <channel> [<channel> [<channel>]...]
        or
        <channel>.<gain> [<channel>.<gain> [<channel>.<gain>]...]
            channel: number of channel
            gain: 1, 4, 16, 64 - gain value. default - 1

Примеры запуска:
Читаем 1000 раз каналы 1, 2, 4, 5 и 6 с частотой 10кГц

./lproc -a r -f 10000 -c 1000 -p aaa 1.4 2.16 4 5 6

В результате в текущей папке будут созданы файлы с результатами:

-rw-r--r-- 1 al   al     2010 окт.  22 13:13 lcard-aaa-F10000-CH1-G4.dat
-rw-r--r-- 1 al   al     2010 окт.  22 13:13 lcard-aaa-F10000-CH2-G16.dat
-rw-r--r-- 1 al   al     2010 окт.  22 13:13 lcard-aaa-F10000-CH4-G1.dat
-rw-r--r-- 1 al   al     2010 окт.  22 13:13 lcard-aaa-F10000-CH5-G1.dat
-rw-r--r-- 1 al   al     2008 окт.  22 13:13 lcard-aaa-F10000-CH6-G1.dat

Записать значение в цифровые выходы:
1. разово установить значение на выходы

./lproc -a s -d 1100110000101010

менять значения на выходах с частотой 100 Гц, взяв числа из файла:

./lproc -a s -f 100 -i a1.txt

Прочитать 100  значений из цифровых входов с частотой 100 Гц:

./lproc -a g -f 100 -c 100 -o out.txt

В результате получим файл с битовыми числами прочитанных значений.

Плата подкинута к вебсерверу, измеряет разные цифровые и аналоговые величины - такая вот стационарная лаборатория с кнопками, щупами и мониторами вместо осциллографов.
Результаты работы этой программы используются веб сервером посредством PHP, и результаты своей работы студенты с легкостью наблюдают в браузере.

24.10.2024 13:06:15
#18

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

Re: E14-140 + Linux. С чего начать?

Gals пишет:

Но библиотека не запускается.
Я так же её собираю, копирую в папку test, собираю и запускаю test
вот что пишет.

./test 0 e140
error open dll!! /home/poul/dio/test/liblcomp.so: cannot open shared object file: No such file or directory
Ошибка сегментирования

На этом я пока завис.

Gals пишет:

В общем после танцев с бубном test таки запустился

У меня та же самая проблема с ошибкой сегментирования на Е-440. При этом он определяет карту, выводит shared words. Подскажите, что нужно сделать чтобы ее исправить.
Snimok-ehkrana_2024-10-24_14-02-00.png
Snimok-ehkrana_2024-10-24_14-04-10.png

24.10.2024 15:04:42
#19

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

Re: E14-140 + Linux. С чего начать?

Какой у Вас дистрибутив Linux?
Откуда брали lcomp?

Контакты

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

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

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

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