PDA

Просмотр полной версии : owen dll



martensit
11.04.2011, 23:45
Добрый день.
Имеется устройство МУ110-8Р(К).
подключил его к компьютеру, установил AC4-драйвер и Конфигуратор.
Соединение с устройством устанавливается удачно.
Скачал архив с dll-кой. Открыл пример на VC.
При работе функции AS3 на чтение всех параметров в примере выдается ошибка: не найден дескриптор. Почему это происходит? (речь идет о командах "in-t", "AL-d", "DPRC", "COPN" и тд.)
При этом параметры Addr, BPS, Sbit, A.LEn считываются удачно и соответствуют значениям при опросе через конфигуратор.

В конфигураторе в меню есть пункт Прибор-Состояние входов и выходов. Руками завожу 1 и 0 для разных портов. На приборе соответствующие порты загораются или тухнут (в зависимости от введенного мной значения). Как я понимаю, этим я замыкаю порт, верно? Как мне побиться такого же результата из программы, используя dll-ку?

Спасибо.

martensit
13.04.2011, 11:44
Код взят из примера к owen_io.dll:

void AS3()
{
int port = askUser("Введите номер COM-порта (1 - 256): ");
int res = OpenPort(port - 1, spd_9600, prty_NONE, databits_8, stopbit_1, RS485CONV_MANUAL);
int address = askUser("Введите адрес прибора (0 - 254): ");
UINT r;
/// результат есть
res = ReadUInt(address, ADRTYPE_8BIT, "Addr", r, -1);
/// не найден дескриптор
res = ReadUInt(address, ADRTYPE_8BIT, "in-t", r, -1);
...
}

int main()
{
AS3();
return 0;
}

1. почему выдается ошибка отсутствия дескриптора?
2. как мне в этом коде замкнуть/разомкнуть вход/выход реле?

Евстигнеев Максим
13.04.2011, 11:56
Вы не в той ветке публикуете свою тему

Малышев Олег
14.04.2011, 12:01
1) Для нужно AC-4 нужно RS485CONV_AUTO вместо RS485CONV_MANUAL
2) Вместо "in-t" попробуйте "in-t "
3) Если нужно записать в параметр "r.oe" используйте функцию WriteFloat24

Точное название параметра можно получить экспортом списка параметров в HTML файл.

Дмитрий Егоренков
14.04.2011, 12:15
> 2) Вместо "in-t" попробуйте "in-t "

Олег, уже года три как пробелы не нужны. пора с этим смириться.

Малышев Олег
15.04.2011, 09:30
Конечно, я об этом помню. Просто если не совсем понятно что и откуда он скачал. Вреда во всяком случае это не принесет. На чтение документации и изучение протокола ОВЕН ,очевидно, времени у клиента нет.

Леонид
15.04.2011, 12:40
Нет ли у кого нибудь исходника проекта на delphi 7 с исспользованием owen.dll ?
Я только начал изучать Delphi 7 ! :rolleyes:

Леонид
15.04.2011, 13:26
Уже на первых шагах в Delphi, не получается открыть com порт проект примитив, выкладываю может кто из гуру подскажет в чем проблема?
Спасибо.

Gosha
15.04.2011, 17:21
Уже на первых шагах в Delphi, не получается открыть com порт проект примитив, выкладываю может кто из гуру подскажет в чем проблема?
Спасибо.

Пробую работать с ТРМ 101 По протоколу Овен. C++

М.б. поможет.

Но пока в ответном слове unpackFloat24() ошибка - размер данных != 3 байт.


tx_00> <#HGHGROTVRSIQ> [23] [48] [47] [48] [47] [52] [4f] [54] [56] [52] [53] [49] [51] [0d]

rx_01> <#HGGHROTVVTQJLJ>[23] [48] [47] [47] [48] [52] [4f] [54] [56] [56] [54] [51] [4a] [4c] [4a] [0d] [ff]


Но сам пример м. б. поможет.

LAP
10.07.2011, 21:27
Доброго времени суток господа, у меня есть несколько вопросов по поводу работы счётчика СИ30 с библиотекой. При работе со счётчиком подключенным через USB при помощи библиотеки периодически возникает ошибка вот такого рода:

641 0.00352477 BrakeMachine.e IOCTL_SERIAL_GET_BAUD_RATE USBSER000 SUCCESS
642 0.00397499 BrakeMachine.e IOCTL_SERIAL_GET_LINE_CONTROL USBSER000 SUCCESS
643 0.00000118 BrakeMachine.e IOCTL_SERIAL_GET_CHARS USBSER000 SUCCESS
644 0.00000039 BrakeMachine.e IOCTL_SERIAL_GET_HANDFLOW USBSER000 SUCCESS
645 0.00396472 BrakeMachine.e IOCTL_SERIAL_GET_BAUD_RATE USBSER000 SUCCESS
646 0.00399197 BrakeMachine.e IOCTL_SERIAL_GET_LINE_CONTROL USBSER000 SUCCESS
647 0.00000039 BrakeMachine.e IOCTL_SERIAL_GET_CHARS USBSER000 SUCCESS
648 0.00000039 BrakeMachine.e IOCTL_SERIAL_GET_HANDFLOW USBSER000 SUCCESS
649 0.00797566 BrakeMachine.e IOCTL_SERIAL_SET_BAUD_RATE USBSER000 * 0xC0000001 Rate: 115200
650 0.00395485 BrakeMachine.e IOCTL_SERIAL_GET_BAUD_RATE USBSER000 SUCCESS
651 0.00399040 BrakeMachine.e IOCTL_SERIAL_GET_LINE_CONTROL USBSER000 SUCCESS
652 0.00000039 BrakeMachine.e IOCTL_SERIAL_GET_CHARS USBSER000 SUCCESS
653 0.00000039 BrakeMachine.e IOCTL_SERIAL_GET_HANDFLOW USBSER000 SUCCESS
654 0.00795907 BrakeMachine.e IOCTL_SERIAL_SET_BAUD_RATE USBSER000 * 0xC0000001 Rate: 115200
655 0.00000079 BrakeMachine.e IOCTL_SERIAL_SET_TIMEOUTS USBSER000 SUCCESS RI:-1163005939 RM:-1163005939 RC:-1163005939 WM:-1163005939 WC:-1163005939
656 0.00000079 BrakeMachine.e IOCTL_SERIAL_PURGE USBSER000 SUCCESS Purge: TXCLEAR RXCLEAR
657 0.00000118 BrakeMachine.e IRP_MJ_CLEANUP USBSER000 SUCCESS
658 0.00395406 BrakeMachine.e IRP_MJ_CLOSE USBSER000 SUCCESS

полный лог: http://zalil.ru/31404127

я работаю под windows 7, лог снят программой portmon. Вопрос заключается в том может ли данная ошибка возникнуть изза операционной системы, или это косяк библиотеки при работе именно с СИ30?

версия библиотеки: 1.2.0.17
среда разработки: Delphi

заранее благодарен.

O_o
15.07.2011, 14:17
Работаю с МК110-08ДН.4Р, адрес модуля 25
Хочу включить дискр. выход DO2A-DO2B


Dim MyVal As Single
MyVal = 1
res = ioLib.WriteFloat24(26, ADRTYPE_8BIT, "r.Oe", MyVal, -1)

Ошибка -104, размер поля не соответствует ожидаемому. Что я сделал неправильно? :confused:

С модулем МУ110-8И WriteFloat24 выдаёт такую же ошибку

O_o
18.07.2011, 09:04
Проблема решилась использованием исходника из архива библиотеки owen_io.dll, ранее были использованы объявления функций (Declare function) из OwenIOSample

Отличий в параметрах и типах не нашёл, но тем не менее всё заработало.