Подскажите, каким образом рекомендуется принимать данные с платы производителя СКБ ИС ЛИР-941-PCI-9pin-G2. Возможно уже реализовывали опрос с похожими платами этого производителя. С данной платой поставляется драйвер для windows и библиотека dll. по возможности прошу прислать пример использования внешней библиотеки.
спасибо.
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Можно попробовать через программу на ST. Описано в справке в разделе: Программирование алгоритмов - Программирование алгоритмов в TRACE MODE 6 - Описание языка Техно ST - Функции Техно ST - Внешние библиотеки функций. Там все банально должно быть, но если возникли трудности, напишите запрос на почту техподдержки (почта указана в Личном кабинете в разделе "Обратиться за технической поддержкой").
Posted by jasper1 (Участник № / Member № 9434) on :
Можете подсказать, каким образом передавать в функцию аргумент типа char?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Char - символьный тип данных. Используйте String. Подробнее в Справочной Системе - Программирование алгоритмов - Описание языка ST - Переменные и константы ST - Определение переменных и констант
Posted by jasper1 (Участник № / Member № 9434) on :
да, я так и делаю. но проблема в том, что не понятно какой формат записи для строковой переменной у которой передается первый символ должен быть?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
STRING (WCHAR*) – 256 символов в кодировке utf-8 (см. также Строковые константы Техно ST );
Описание в справке в разделе: Программирование алгоритмов - Программирование алгоритмов в TRACE MODE 6 - Описание языка Техно ST - Функции Техно ST - Внешние библиотеки функций
При взаимодействии с внешней библиотекой строка передается в формате Unicode (16 бит). Переменная TRACE MODE должна иметь тип данных STRING, указатель на строку в DLL – WCHAR. Для перевода из WCHAR в CHAR в DLL может использоваться функция WideCharToMultiByte.
Posted by jasper1 (Участник № / Member № 9434) on :
С описанием из справочной системы ознакомился первым делом. Т.е. передать символ из переменной нельзя, передается вся переменная, а библиотека должна сама уметь разбирать на символы. В таком случае непонятен следующий вопрос: аргументам функции можно назначить тип char, но передавать я так понимаю можно только константу. Верно ли это утверждение? и второй вопрос (для экономии времени на эксперименты): в библиотеке, которую мне необходимо подключить, тип возвращаемого значения bool. например: LIR_API bool __stdcall Open_Driver_LIR_X (char plata_number , HANDLE &hFile); LIR_API bool __stdcall AbsReadKanalData(HANDLE hFile, UCHAR kanal_number, ULONG &data); возможно ли из trace mode вызывать такие функции (с типом возвращаемого значения bool)?
пример проекта с подключением библиотеки вы можете предоставить?
Posted by jasper1 (Участник № / Member № 9434) on :
непонятен следующий вопрос: аргументам функции можно назначить тип char, но передавать я так понимаю можно только константу. Верно ли это утверждение? и второй вопрос: в библиотеке, которую мне необходимо подключить, тип возвращаемого значения bool. например: LIR_API bool __stdcall Open_Driver_LIR_X (char plata_number , HANDLE &hFile); LIR_API bool __stdcall AbsReadKanalData(HANDLE hFile, UCHAR kanal_number, ULONG &data); возможно ли из trace mode вызывать такие функции (с типом возвращаемого значения bool)?
Posted by jasper1 (Участник № / Member № 9434) on :
Добрый день. При запуске проекта с использованием внешней библиотеки в файле профайлера возникает ошибка (15:52:53) WRN_LOAD:Templates load error 22,ID=0 Type=1. в папке RTM_1 библиотека есть с тем же именем, что и в проекте. есть ли какие то ограничения на имя библиотеки? необходимо ли регистрировать библиотеку в системе (про это в документации ничего не сказано)?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Добрый день. Любую внешнюю библиотеку (dll-файл), если она не windows'овая, необходимо регистрировать.
Если библиотека не зарегистрирована, то при запуске проекта как раз будет сообщение о библиотеке, которой нет.