|
- Участник
- Здесь с 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 не поддерживает цифровой вход?
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 23.04.2014
- Сообщений: 3,727
|
Re: E20-10 16-битный цифровой вход
должно работать. по коду я вроде ничего криминального не вижу... а данные читаются если на статус не обращать внимание?
|
|
- Участник
- Здесь с 25.05.2015
- Сообщений: 23
|
Re: E20-10 16-битный цифровой вход
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 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 проверить....
|
|
- Участник
- Здесь с 25.05.2015
- Сообщений: 23
|
Re: E20-10 16-битный цифровой вход
Poul пишет:в библиотке отладочных printf запихните в вызов IoAsync и в ULONG DaqE2010::InputTTL(PDAQ_PAR sp).
Это где?
|
|
- Участник
- Здесь с 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.
|
|
- Участник
- Здесь с 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;
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 23.04.2014
- Сообщений: 3,727
|
Re: E20-10 16-битный цифровой вход
Пересобрали и перезапустили? библиотека вся в папке lcomp.
|