отправлено / posted
драйвер для КОНТР_1 одиночные запросы.
1. один СОМ порт и несколько контролеров, для каналов Input запросы проxодят нормально, но если 'Входу' канала присвоить скажем 5, то (RSDATA *p в Setxxx) p[0].V.v==1 , a p[0].V.i[0]==25772 и при дальнеших изменениях "Входа" канала увеличивается p[0].V.i[0], а p[0].V.v==1 всегда. Как определить значение "Входа" канала, нужно скажем оформить разные запросы для разных "состояний" одного канала
2.Если type_cnv==1 || type_cnv==0 в Get_xxx, то наблюдаем ситуацию (1), а если type_cnv==10 || type_cnv==8, то p[0].V.v==0 всегда
отправлено / posted
1) Канал может быть либо Input либо Output, что-нибудь одно. Соответственно для канала Input значение читать бессмысленно, в него драйвер может только посылать значение. Тип канала определяется флажком p[0].F.fmt[3]. Например так:
code:
bool bInput = (p[0].F.fmt[3] == 0);
Если Вам нужно "...оформить разные запросы для разных "состояний"...", то можно либо запоминать текущее состояние в драйвере (для этого нужно предварительно сделать запрос состояния), либо передавать эти состояния через параметры канала, которых максимум 6 байт (структура IA), причем при блоковых запросах доступны только 5.
2) В Get_xxx() нужно ЗАПИСЫВАТЬ значение в канал а не пытаться читать. Параметр type_cnv определяет алгоритм разбора при блоковых запросах:
0 или 1 – получены корректные данные. Использовать алгоритм обработки запросов DATA11.
2 или 3 – получены корректные данные. Использовать алгоритм обработки запросов BLOCKDATA11.
8,10,12 – получены корректные данные. Использовать алгоритм обработки данных DATA11. Элемент p[i+1] содержит метку времени последнего изменения значения опрашиваемого канала в секундах с 1 января 1970 года (i – индекс элемента, содержащего значение для канала). 8 – запись полученного значения канала в архив запрещена, 10 – разрешена, 12 – получен блок данных одного канала для записи в архив.
9,11,13 – то же, что 8, 10, 12, но использовать алгоритм обработки данных BLOCKDATA11. 9 – запись полученного значения канала в архив запрещена, 11– разрешена, 13 - получен блок данных одного канала для записи в архив.