Доброго времени суток! 1 Чем вызвано различие в адресации каналов в функциях опроса и формирования аналоговых и дискретных каналов? void rwh_aio_init(IA &ia); void rwh_dio_init(IA &ia); int rwh_aio_read(IA &ia, unsigned short &v); int rwh_aio_write(IA &ia, unsigned short &v); int rwh_dio_read(IA &ia, unsigned short &v); int rwh_dio_write(IA &ia, unsigned short &v); где ia - удалённый адрес канала(BASE и CH)
и функций опроса и формирования атрибутов каналов int rwh_atr_read(IA &ia, float &v); int rwh_atr_write(IA &ia, float &v); ia - номер канала и атрибута(ia.i[1] - Id канала, ia.c[4] - Id атрибута)
2 Возможно ли получить привязку Id канала и его удалённого адреса(BASE и CH) в rwh.dll? 3 Возможно ли получить эту привязку через предоставляемые интерфейсы для ActiveX компонентов?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Тем, что это разные функции.
2-3. Мы не рекомендуем работать с ID канала.
Но Вы можете получить его, передав 118 атрибут канала.
Posted by udv (Участник № / Member № 3159) on :
Драйвер RWH.DLL знает и понимает только удалённый адрес канала,а Id канала для него не знаком! Поэтому и не понятно, как знающий только удалённый адрес драйвер может работать с функциями опроса/формирования атрибутов,в которых нужно указывать Id канала!
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Начальные значения компонентов удаленного адреса для каналов RWH Вы должны задать в соответствующих компонентах "Источников/Приемников". При этом Вы должны ориентироваться на реальные ID каналов и атрибутов. В реальном времени компоненты удаленного адреса могут быть изменены, например, программно. Если драйвер в своих ответах сам будет менять эти компоненты удаленного адреса, то он должен знать необходимые ему ID каналов (где-то хранить их). Вы можете набить эту таблицу вручную или предложить драйверу отпарсить файл *.rtp. В этом файле указаны индексы всех каналов. Или программно запросить у интересующих Вас каналов их индексы (118 атрибут) и передать их драйверу.