This is topic RWH TM7 Linux Red Os in forum TRACE MODE 7 бесплатная базовая версия / TRACE MODE 7 free basic version at Форум TRACE MODE: техническая поддержка.
Здравствуйте, такой вопрос, необходимо создать внешний драйвер в системе Linux, в справке для разработки и подключения драйвера к МРВ используется создаваемая библиотека rwh.dll, как должна называться и как будет подключаться библиотека в линуксе? (и нужно ли вместе с этой библиотекой файлы с кодом помещать в папку с проектом МРВ). Драйвер самый обычный, просто прямо в коде привязать допустим v = 5, и вывести 5 в МРВ.
Posted by Nico (Участник № / Member № 5342) on :
- должна лежать где исполняемые файлы - имя файла librwh_64.so - данный вид драйвера должен использоваться для быстрого обмена с устройством (без задержек ); - не желательно использовать внешние библиотеки - он вызывается из основного потока TM и блокирует его до возврата управления - для написания драйверов обмена с устройством по сети или последовательному интерфейсы необходимо пользоваться t41/t12
Posted by Nikituny (Участник № / Member № 9588) on :
Спасибо
Posted by Nikituny (Участник № / Member № 9588) on :
/* Вызывается на старте 0 - ok > 0 error */ int rwh_start() { memset(do_val, 0, sizeof(int) * 256); memset(ao_val, 0, sizeof(float) * 256); memset(opt_val, 0, sizeof(int) * 256);
return(-1); }
/* Вызывается на стопе */ void rwh_stop() { }
/* Вызывается на старте после вызова rwh_start() для типов 1.15 IN, 1.31 OUT 2.15 IN 2,31 OUT если канал FLOAT */ void rwh_aio_init(IA &ia) { }
/* Вызывается на старте после вызова rwh_start() 2.15 IN 2,31 OUT если канал HEX32 */ void rwh_dio_init(IA &ia) { } /* далее для всех фукций код возврата = 0 - успешно недостоверность сбрасывается > 0 - ошибка недостоверность устанавливается
<type>v - значение из 9 атрибута для записи <type>v - считанное значение для передачи во вход канала */
/* тип 2.15, 2.31 получается в IDE из AI_RWH */ int rwh_aio_write_i32(IA &ia,int v) { v = 5; ao_val[ia.c[2]] = v; return(0); }
/* тип 2.15 получается в IDE из DI_RWH залинкованного на FLOAT INPUT */ int rwh_aio_read_i32(IA &ia,int &v) { v= 6;
return(0); }
/* тип 2.31 получается в IDE из DO_RWH залинкованного на FLOAT INPUT */ int rwh_aio_read_i32_readback(IA& ia, int& v) { v = 7; return(0); }
Еще один вопрос, может я делаю что то не так, мне просто в МРВ нужно вывести значения привязанный к V, чтобы разобраться как это работает, в МРВ выводятся нули и все, скопировал библиотеку в папку с проектом, выводит нули
Posted by Nikituny (Участник № / Member № 9588) on :
Posted by Nikituny (Участник № / Member № 9588) on :
ответ на заданный вами вопрос был таким - должна лежать где исполняемые файлы - имя файла librwh_64.so
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
quote:Отправитель / Originally posted by Nikituny: Еще один вопрос, может я делаю что то не так, мне просто в МРВ нужно вывести значения привязанный к V, чтобы разобраться как это работает, в МРВ выводятся нули и все, скопировал библиотеку в папку с проектом, выводит нули
Здравствуйте. Пользователь Nico дал ответы. Библиотеки поместите в папку Среды Разработки (Монитора Реального Времени). Проверьте название файлов библиотек.
Posted by Nikituny (Участник № / Member № 9588) on :
Меня интересовало, может есть какие то особенности при написании драйвера, или при его вызове в ТМ, может тип переменной указать надо и тд, или ai указать, или же базовый адрес поменять, может сам код драйвера не рабочий? вот что меня интересовало. На предыдущий вопрос да, я получил ответ
Posted by Nico (Участник № / Member № 5342) on :
- код рабочий( поскольку кода пара строк ) - если правильно скомпилировано и загрузился то функции будут дергаться
Posted by Nikituny (Участник № / Member № 9588) on :
Извините конечно меня за мою глупость, но может есть какие то особенности в настройке каналов, ну вот я создал AI_RWH_1, ничего в нем не менял, перенес его в канал где находится экран, привязал к аргументу для вывода на экран, но ничего не выводится, может куда то надо подавать значение при работе с МРВ, что бы AI_RWH_1 активировался, или же нужно изменить тип аргумента, или настроить создание базового адреса, компилирую в QT creator
Posted by Nikituny (Участник № / Member № 9588) on :
Так, я понял в чем был мой косяк, теперь более точный вопрос, я в QT creator создал свой проект и загрузил туда код драйвера из примера, запустил его, у меня скомпилировалась библиотека, ее я загрузил в папку МРВ, но при запуске МРВ вылетает QT -= gui
TEMPLATE = lib DEFINES += RWH_64_LIBRARY
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \ rwh_64.cpp
HEADERS += \ rwh_64.h
# Default rules for deployment. unix { target.path = /usr/lib } !isEmpty(target.path): INSTALLS += target Вот код .pro у меня подозрения что в правилах для развертывания ошибка, что исправить нужно, подскажите пожалуйста, последний вопрос( проект создал в виндовс, чтобы легче ориентироваться, и загружаю тут же)
Posted by Nikituny (Участник № / Member № 9588) on :
Не правильно задал вопрос, если разбираетесь в Qt подскажите как правильно создать библиотеку, пожет пути какие то указать надо в .pro или в принципе надо как то по особенному настроить Creator, может есть руководство, или что-то еще на эту тему
Posted by Nico (Участник № / Member № 5342) on :
- (повторно)не желательно использовать внешние библиотеки - Qt creator это оболочка вокруг gcc - конфигурирование оболочек, каких много не относиться к вопросам о TM