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

Тема: Программирование под Linux

Вы не вошли.

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

Vladimir Zoreev
17.04.2002 17:24:15
#1

Гость

Программирование под Linux

Пытаюсь работать с картой под Linux.
Непонятны многие моменты, т.к. они очень
слабо освещены в документации, а именно:

1. Как установить коэффициент усиления для
конкретного канала.

2. можно-ли выбрать отдельные каналы для работы,
а не последовательно, начиная от первого канала.

3. Можно-ли сделать одиночное чтение нескольких
каналов одновременно.

4. О каких таблицах каналов идёт речь в описании?
Т.к. реально таблицы каналов я увидел только в
описании функций DOS-овской библиотеки.

Буду рад любой информации.

С уважением,
  Владимир Зореев.

Ivan
22.04.2002 14:53:22
#2

Гость

Re: Программирование под Linux

(1)
Коэффициент усиления задается 2 старшими битами
логического номера канала.
Подробнее об этом написано в техническом описании платы.

(2)
Логические номера каналов устанавливаются
с помощью dspjdf ioctl XDSP_SET_CHANNEL
или функции xdspSetChannel().

  channel_info.number - порядковый номер канала в таблице;
  channel_info.log_channel - логический номер канала.

Общее число каналов устанавливается с помощью вызова
SNDCTL_DSP_CHANNELS или функции xdspChannels().

(3)
С помощью нескольких последовательных опросов
одиночных каналов.
В Linux эти запросы работают достаточно быстро.

(4)
Эта таблица находится в памяти DSP на плате
(или в области данных драйвера для плат без DSP).
Она определяет, какие логические каналы опрашиваются
при непрерывном сборе данных функцией.
Например, если таблица имеет вид:
int ChannelTab[5] = {0x40, 0x81, 0x42, 0x83, 0x81};

ее можно установить так:

{
  channel_info ci;
  int i;

  for(i = 0; i < 5; i++)
  {
   ci.number = i;  /* номер элемента таблицы */
   ci.log_channel = ChannelTab[i];  /* логический канал */
   if(ioctl(dev, XDSP_SET_CHANNEL, &ci) break);
  }

/* а теперь установим общее число каналов */

  ioctl(dev, SNDCTL_DSP_CHANNELS, &i);
}

при чтении с устройства функцией read()
будет получен такой массив:

(канал 0x40) (кадр 0)
(канал 0x81)
(канал 0x42)
(канал 0x83)
(канал 0x81)

(канал 0x40) (кадр 1)
(канал 0x81)
...

Контакты

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

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

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

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