Antilatency Hardware Extension Interface Library

Antilatency Hardware Extension Interface Library

Библиотека для работы с устройствами, которые поддерживают Antilatency Hardware Extension Interface.

Использование библиотеки

  1. Загрузка библиотеки;
  2. Получение ILibrary;
  3. Получение ICotaskConstructor с помощью getCotaskConstructor;
  4. Запуск Task через startTask;
  5. Декларирование режимов работы нужных пинов с помощью:
  6. Перевод Task в режим Run с помощью метода run
  7. Работа с полученными ранее интерфейсами(IInputPin, IOutputPin и т.д.).

IInputPin

}

IOutputPin

}

IAnalogPin

}

IPulseCounterPin

}

IPwmPin

interface IPwmPin : InterfaceContract.IInterface {
void setDuty(​float value);
float getDuty(​);
uint getFrequency(​);
}
Для более высокой частоты duty будет иметь больше градаций. Но сама частота для некоторых может быть установлена менее точно. Список рекомендованных частот:
Узнать реальную частоту и скважность можно с помощью getFrequency и getDuty соответственно.
До перехода Task в состояние Run, все методы данных интерфейсов будут возвращать значение по умолчанию.

ICotask

interface ICotask : DeviceNetwork.ICotask {
IAnalogPin createAnalogPin(​Interop.Pins pin, uint refreshIntervalMs);
IPulseCounterPin createPulseCounterPin(​Interop.Pins pin, uint refreshIntervalMs);
IPwmPin createPwmPin(​Interop.Pins pin, uint frequency, float initialDuty);
void run(​);
}
Методы по созданию пинов только формируют таблицу инициализации, которая будет отправлена на устройство в методе run.
Сразу после запуска Task находится в состоянии Init. Только в этом состоянии работают методы по созданию пинов.

Run

Метод run отправляет на устройство сформированную таблицу инициализации и ждёт подтверждения. Task переходит в режим Run. После выхода из метода будут получены актуальные состояния всех пинов в режиме входа и аналогового входа, а также установлены начальные состояния всех пинов в режиме выхода.
После перехода в режим Run можно использовать нужные методы из полученных ранее интерфейсов(IInputPin, IOutputPin и т.д.).
После завершения Task, все пины деинициализируются и переходят в высокоимпедансное состояние (Hi-Z).

Причины исключений в методах создания пинов

  1. Метод run уже был вызван.
  2. Указанный пин уже используется.
  3. Указанный пин не поддерживает требуемый режим.
  4. Refresh interval/frequency не входит в допустимый интервал (см. Constants).
  5. Уже создано максимальное количество пинов данного типа.
  6. Указаны разные refresh interval для пинов в режиме счётчика импульсов или frequency для ШИМ пинов.