Допустимые значения в рамках. Пробовал индексы (0 и 1) - без толку. Пробовал использовать GetExtendedLasErr-возвращает 0. Ее можно самостоятельно использовать или только после LastErrToStr?
Допустимые значения в рамках. Пробовал индексы (0 и 1) - без толку. Пробовал использовать GetExtendedLasErr-возвращает 0. Ее можно самостоятельно использовать или только после LastErrToStr?
можно. только использовать надо было GetDeviceLastErr().
Накидал простейший проект для ПЛК150 - он мастер, пишет в зависимости от дискретного входа 1 либо SH=1, KU=1,005, либо SH=0, KU=1. Ну, там FloatPIC и все остальное соответственно моему ТРМ101. Все работает прекрасно, а от компа-ни в какую. Сейчас подсуну ПЛК под видом ТРМки
Хм... У меня в описании библиотеки такой функции нет.
А вот что показали эксперименты с подменой ТРМки ПЛК150-ым: Функция WriteFloat24 пишет какое-то особо малое значение (1,735409... в -39 степени), причем и при вызове для параметра SH, и при вызове для параметра KU. SH это воспринимает как 0 и для него это нормальное значение, а KU ругается из-за того, что 0 для него значение не допустимое. Вот только почему такое значение передается? В пошаговой отладке я вижу, что в WriteFloat24 передаются правильные параметры. Такая вот эпидерсия...
у вас в дельфи как функция WriteFloat24 описана?
TProcWriteFloat24=function (adr,adr_type: DWORD;command: pchar;var value: single;index: integer):integer;stdcall;
WriteFloat24:TProcWriteFloat24;
Так в хелпе на библиотеку она описывается. Подключил LastErrToStr(), она дала вот что "Значение мантиссы превышает ограничение дескриптора" (не ручаюсь что дословно так)
Последний раз редактировалось Hemann; 12.01.2010 в 22:30.
должно быть так:
TProcWriteFloat24=function (adr,adr_type: DWORD;command: pchar;value: single;index: integer):integer;stdcall;
у вас не значение передается, а указатель на переменную.
дима, спасибо большое! все пошло. одна голова хорошо, а две лучше