This is topic Как передать строку из внешней DLL в МРВ ТМ6 in forum Пользователи для пользователей at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/50/t/000024.html

Posted by Romсheg (Участник № / Member № 3792) on :
 
В ходе разработки проекта возникла потребность передачи строковых данных из внешней DLL в узлы под управлением МРВ ТМ6. Так как при подключении внешних библиотек в программах ТМ6 не предусмотрена возможность вызова функций, возвращающих строку, а также то, что ТМ6 - это Unicode система. Задачка не совсем тривиальная. Рецепт ее решения, надеюсь, пригодится и другим разработчикам.

В DLL на С++ пишем нашу функцию, возвращающую строку текста в аргумент:
code:
#include <wchar.h>

extern "C" __declspec(dllexport) void GetStr(wchar_t *s1)
{
wchar_t *str=L"строка";
wcscpy((wchar_t *)s1, str);
}

В проекте ТМ6 при объявлении этой функции в описании аргумента функции необходимо указать параметр "Тип данных" в STRING, а "Указатель" в Да. При правильном определении в дереве структуры программы это должно получиться как:
code:
void cdecl GetStr(string* s1)

Все - теперь запускаем программу и при вызове этой функции с переменной типа string получаем в эту переменную строку "строка". [fun / веселый]
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2