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


E20-10 16-битный цифровой вход

Вы не вошли.

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

16.12.2015 14:43:40
#1

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

E20-10 16-битный цифровой вход

Добрый день!

E20-10 B, ОС Linux.
Пытаюсь получить информацию с входа DI, АЦП конфигурирую - всё ок, выход DO работает.
Пытаюсь получить DI

ASYNC_PAR sp;
sp.s_Type = L_ASYNC_TTL_CFG;
sp.Mode = 1;
ULONG res = pI->IoAsync(&sp);
sp.s_Type = L_ASYNC_TTL_INP;
sp.Data[0]= 1;
res = pI->IoAsync(&sp);
if ( res != L_SUCCESS ) {

В res возвращается 1 (код ошибки L_NOTSUPPORTED).

Е20-10 не поддерживает цифровой вход?

16.12.2015 16:57:00
#2

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

Re: E20-10 16-битный цифровой вход

должно работать. по коду я вроде ничего криминального не вижу... а данные читаются если на статус не обращать внимание?

16.12.2015 17:55:48
#3

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

Re: E20-10 16-битный цифровой вход

Мусор читается.

16.12.2015 18:45:55
#4

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

Re: E20-10 16-битный цифровой вход

в библиотке отладочных printf запихните в вызов IoAsync и в ULONG DaqE2010::InputTTL(PDAQ_PAR sp).
И в драйвере ldevusbu.c
      case DIOC_TTL_IN: // for e20-10 specific...
      {
         DbgPrint("In DIOC_TTL_IN \n");
         *((u16 *)ibuf->outBuffer) = GET_DM_WORD_E2010(dev, SEL_DIO_DATA); break;
         status = copy_to_user((void*)arg, ibuf, sizeof(IOCTL_BUFFER));
>> тут почитать и значение и статус
>>          DbgPrint("In DIOC_TTL_IN %x %x \n",*((u16 *)ibuf->outBuffer), status);
>> если DEBUG собрать, то в логах дожно быть видно
      } break;

У меня сейчас нет рабочей машины с Linux проверить....

17.12.2015 09:14:41
#5

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

Re: E20-10 16-битный цифровой вход

Poul пишет:

в библиотке отладочных printf запихните в вызов IoAsync и в ULONG DaqE2010::InputTTL(PDAQ_PAR sp).

Это где?

17.12.2015 09:25:32
#6

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

Re: E20-10 16-битный цифровой вход

Poul пишет:

И в драйвере ldevusbu.c
      case DIOC_TTL_IN: // for e20-10 specific...
      {
         DbgPrint("In DIOC_TTL_IN \n");
         *((u16 *)ibuf->outBuffer) = GET_DM_WORD_E2010(dev, SEL_DIO_DATA); break;
         status = copy_to_user((void*)arg, ibuf, sizeof(IOCTL_BUFFER));
>> тут почитать и значение и статус
>>          DbgPrint("In DIOC_TTL_IN %x %x \n",*((u16 *)ibuf->outBuffer), status);
>> если DEBUG собрать, то в логах дожно быть видно
      } break;

У меня сейчас нет рабочей машины с Linux проверить....

[303238.242636] lcard: Set Buffer 8 32768 
[303238.242696] lcard: In DIOC_TTL_CFG 
[303238.243042] lcard: In DIOC_TTL_OUT 
[303238.243448] lcard: In DIOC_TTL_CFG 
[303238.243942] lcard: In DIOC_TTL_IN 
[303238.244384] lcard: in close 

Почему-то не выводит строчку добавленную в ldevusbu.c.

17.12.2015 09:27:54
#7

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

Re: E20-10 16-битный цифровой вход

Вот так добавил.

      case DIOC_TTL_IN: // for e20-10 specific...
      {
         DbgPrint("In DIOC_TTL_IN \n");
         *((u16 *)ibuf->outBuffer) = GET_DM_WORD_E2010(dev, SEL_DIO_DATA); break;
         status = copy_to_user((void*)arg, ibuf, sizeof(IOCTL_BUFFER));
	 DbgPrint("In DIOC_TTL_IN %x %x \n",*((u16 *)ibuf->outBuffer), status);
      } break;
17.12.2015 13:01:28
#8

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

Re: E20-10 16-битный цифровой вход

Пересобрали и перезапустили? библиотека вся в папке lcomp.