|
|
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М в линуксе.
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 23.04.2014
- Сообщений: 3,727
|
Re: E14-140 + Linux. С чего начать?
Если скачали lcomp_linux.tgz то там внутри и драйвер и библиотека и пример. И еще Readme есть. Собрать нужно драйвера и прописать в udev. Собрать библиотеки и поотм пример подправив в нем пути...
|
|
|
Re: E14-140 + Linux. С чего начать?
Poul пишет:Если скачали lcomp_linux.tgz то там внутри и драйвер и библиотека и пример.
Пример test и библиотеку для него скомпилировал, но он не работает, При запуске пишет: error InitInstance Правила я скопировал, но это ничего не изменило. А кроме этого никаких больше рабочих "живых" примеров нету?
|
|
|
Re: E14-140 + Linux. С чего начать?
Вот что дает запуск примера: ./test 0 e140
CallCreateInstance failed
Что с этим делать?
|
|
|
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
Почему не получается?
|
|
|
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
|
|
|
Re: E14-140 + Linux. С чего начать?
Gals пишет:после этого появилось устройство ldevice0-4
А какое из них правильное, если у меня стоит только одна Е140?
|
|
|
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"); т.к. именно такие файлы устройств создает драйвер, а в библиотеке видно еще остались старые названия(разработчики поправьте исходники!)
тоже пришлось делать.
|
|
|
Re: E14-140 + Linux. С чего начать?
В общем после танцев с бубном test таки запустился Но есть еще ряд вопросов: 1. test пишет некий файл test.dat, опрашивая 4 канала. Вопрос: в каком виде читаются данные из буфера? как отличить данные одного канала от данных другого? 2. test читает только АЦП. Вопрос: как мне читать цифровые входы через lcomp, и как писать в цифровые выходы? 3. При загрузке ОС Линукс устройств ldevice в системе НЕТ! Они появляются после выполнения скрипта start. Вопрос: это нормально, или все же как-то должно устройство появляться автоматом при загрузке системы?
|
|
|
Re: E14-140 + Linux. С чего начать?
4. test работает только под администратичными правами. Вопрос: что нужно сделать чтобы можно было работать от обычного пользователя?
|
|
|
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 прописал:
|
|
|
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.
|
|
|
Re: E14-140 + Linux. С чего начать?
Однако замечено, что Gals пишет:согласно тому, что записано в поле Chn структуры ADC_PAR.
начинается не всегда с первого указанного в Chn канала. То есть может начаться как бы с середины, при чем произвольно. Вопрос: с чем это может быть связано?
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 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.
|
|
|
Re: E14-140 + Linux. С чего начать?
Poul пишет:если в правила udev добавить lcard.rules то будут создаваться линки ldev0... и править ничего не надо.
В том то и дело что этот файл добавлен, но ничего этого не происходит почемуто. Если этот файл не добавить в udev, то при запуске start - устройства не появляются! Может вы говорите о каком то другом файле lcard.rules - не том, что находится в папке с драйвером?
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 23.04.2014
- Сообщений: 3,727
|
Re: E14-140 + Linux. С чего начать?
Не знаю. надо читать . Там вечно что-от меняется. Еще и в разных дистрибутивах все по разному. Я на слаке все это делал.
|
|
|
Re: E14-140 + Linux. С чего начать?
На основе примеров, документов и помощи на форуме, написалась консольная програмка, позволяющая управлять L-card E14-140M Теперь легко пользуюсь ею из PHP Вот её функционал: 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, и результаты своей работы студенты с легкостью наблюдают в браузере.
|
|
- Участник
- Здесь с 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. Подскажите, что нужно сделать чтобы ее исправить.
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,283
|
Re: E14-140 + Linux. С чего начать?
Какой у Вас дистрибутив Linux? Откуда брали lcomp?
|