Page 1 of 1

Механизм глобальных переменных ( GlobalVariable )

Posted: 28 Dec 2012
by VanVan
Для MC x32 и MC .Net x32
Должен быть установлен vcredist_x86_2010 (http://www.microsoft.com/ru-ru/download ... px?id=5555)

Для MC x64 и MC .Net x64
Должен быть установлен vcredist_x64_2010 (http://www.microsoft.com/ru-ru/download ... x?id=14632)

Позволяет передавать данные из одного индикатора/сигнала в другой в рамках одного процесса MultiCharts.exe
(из чарта в чарт, из чарта в сканер и т.д.)

Распаковать архив, скопировать COGlobalVariable.dll, COGlobalVariableWrapper.dll и Register.bat в папку с
MultiCharts(Для MC x32 и MC .Net x32 брать файлы из папки Win32, для MC x64 и MC .Net x64 из папки х64) .
Из папки с MultiCharts запустить с правами администратора Register.bat.
В архиве есть пример для МС .Net х64

Реализованы следующие функции:
bool InitializeGV()
void UninitializeGV()
bool SetDataInt(String name, int _value)
int GetDataInt(String name)
bool SetDataLong(String name, long _value)
long GetDataLong(String name)
bool SetDataFloat(String name, float _value)
float GetDataFloat(String name)
bool SetDataDouble(String name, double _value)
double GetDataDouble(String name)
bool SetDataString(String name, String _value)
CString GetDataString(CString name)
, где name - имя переменной, _value - ее значение.
Максимальная длинна строки для значения _value функции SetDataString - 2048 символов.
В случае неудачной попытки получить значение какой-либо переменной возвращается максимальное значение
для текущего типа данных. Строковая функция возвращает пустую строку.


Аналоги из PowerLanguage:
GVGetNamedDouble
GVGetNamedInt
GVSetNamedDouble
GVSetNamedInt


Возможно применение и в других платформах.

Для 32-х битного МС понадобится изменить путь к COGlobalVariableWrapper.dll в функции _GVLibWrap_

Re: Механизм глобальных переменных для MCx32.

Posted: 29 Dec 2012
by tmc
В 64-битной версии не будет работать?

Re: Механизм глобальных переменных для MCx32.

Posted: 31 Dec 2012
by VanVan
Для х64 версия в разработке.

Re: Механизм глобальных переменных ( GlobalVariable )

Posted: 10 Jan 2013
by VanVan
Появилась версия для х64. Все инструкции в первом посте.

Re: Механизм глобальных переменных ( GlobalVariable )

Posted: 01 Feb 2013
by VanVan
Механизм глобальных переменных ( GlobalVariable ) для передачи данных из техники в технику как внутри одного инстанса MC .Net, так и
между разными инстансами MC .Net.
Также есть возможность передачи данных по сети.

В прикрепленном архиве есть примеры кода для MC .Net.

Настройки:
Распаковать архив, скопировать COGlobalVariableATL.exe в папку с МС.
Далее необходимо зарегистрировать COGlobalVariableATL.exe в Windows, для этого:
- Запустить консоль(cmd.exe) с правами администратора
- Выполнить команду COGlobalVariableATL.exe /RegServer с указанием полного пути к файлу COGlobalVariableATL.exe
(например, так c:\Temp\COGlobalVariableATL.exe /RegServer)
Если в консоль не вывелось никаких ошибок - значит регистрация прошла успешно.
Проверить можно запустив тест COGlobalVariableATL_TestDouble.exe - если программа отработала и завершилась без ошибок - значит все настроено.
Тест, также, может понадобиться если, вдруг, захочется настроить работу по сети.

Возможно использование как с MC .Net х32 так и с MC .Net х64

Для работы по сети необходимо настроить DCOM для "GlobalVariable Class".
Объект "GlobalVariable Class" появится в свойствах DCOM только после того как COGlobalVariableATL.exe хотя бы один раз
отработает с правами администратора.
Для этого и потребуется запустить тест с правами администратора.
Также необходимо добавить исключения в брандмауэр и в антивирус/фаервол для COGlobalVariableATL.exe, иначе соединение будет блокироваться.
Инструкций по настройке DCOM можно поискать в интернете, там их достаточно (например, вот http://www.aggsoft.ru/asdl-dcom-opc-config-4.htm)

Проверить работу по сети можно также тестом, после выполнения настроек DCOM. Процесс COGlobalVariableATL.exe должен запускаться только на указанном
в настройках DCOM компьютере, даже если тест запускается на другом компьютере.

COGlobalVariableATL.exe загружается автоматически. Выгружается тоже автоматически, когда все клиенты отключаются от этого компонента.
Если COGlobalVariableATL.exe не выгрузился, значит какие-либо клиенты еще работают с ним, либо отключение клиента было не нормальным
(программа аварийно завершила работу), в таком случае процесс можно завершить из диспетчера задач. Либо Windows "сама" закроет его через 10 минут.


Пока-что COGlobalVariableATL.exe может хранить в памяти и передавать до 10 переменных.