Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 6.18 Получение значение переменных Python через чтение памяти его процесса

Страниц (1): [1]
 

1. Kibor - 10 Ноября, 2023 - 05:24:56 - перейти к сообщению
readvarpython позволяет быстро получить значение переменной Python.

Получать можно только значение первого элемента созданного строкового списка. Но этого вполне достаточно что бы быстро обменяться данными с Python в Кибор, не используя команду print
работает там где невозможно получить данные с помощью pipe канала.

Список необходимо создавать таким образом:
Обязательно инициализировать какими нибудь данными
CODE:
__python_sync
A=['w']
__end_python


После этого с помощью функции
CODE:
readvarpython("A")

либо (второй параметр указывает номер процесса Многопроцессорность Python. Запуск нескольких процессов Python, работающих одновременно и незавивисимо друг от друга)
CODE:
readvarpython("A", 0)


мы в любой момент можем прочитать что находится в
CODE:
A[0]



После создания списка надо обязательно вызвать функцию readvarpython для получения адреса списка
Потому что при первом запуске readvarpython обменивается с Python через pipe канал


Пример:

 Цитата:
enableconsolepython(1, 1, 50, 50, 400, 600);
if (runpython())//Запустили интерпретатор
{

__python_sync
import time
A=['w']
__end_python

/*
После создания списка надо обязательно вызвать функцию readvarpython для получения адреса списка
Потому что при первом запуске readvarpython обменивается с Python через pipe канал
*/
readvarpython("A");

//Python работает в асинхронном режиме постоянно перезаписывая в A[0]
__python
while 1:
(4 пробела)A[0]=A[0]+'w'
(4 пробела)time.sleep(0.5)

__end_python

//В данный момент pipe канал с Python заблокирован, но мы в любой момент узнаем значение нужной нам переменной
loop()
{
messagebox (readvarpython("A"));// В любой момент получаем что записано в первый элемент списка A[0]
}

closepython();//Завершили работу с интерпретатором
}
2. Kibor - 10 Ноября, 2023 - 19:50:59 - перейти к сообщению
Еще наглядный пример:

 Цитата:
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];

pos_size_button0[0][0]=136; pos_size_button0[0][1]=36; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Закрыть";

//////////

int pos_size_edit0[1][4];
string text_edit0[1];

pos_size_edit0[0][0]=6; pos_size_edit0[0][1]=7; pos_size_edit0[0][2]=231; pos_size_edit0[0][3]=20;
text_edit0[0]="";

//////////

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
//////////

showdialog(0, "Диалог", 835, 390, 250, 94, 1, 1);
//////////




enableconsolepython(1, 1, 50, 50, 400, 600);
if (runpython())//Запустили интерпретатор
{

__python_sync
import time
A=['w']
__end_python

/*
После создания списка надо обязательно вызвать функцию readvarpython для получения адреса списка
Потому что при первом запуске readvarpython обменивается с Python через pipe канал
*/
readvarpython("A");

//Python работает в асинхронном режиме постоянно перезаписывая в A[0]
__python
while 1:
(4 пробела)A[0]=A[0]+'w'
(4 пробела)time.sleep(0.3)
(4 пробела)if len(A[0])>15:
(8 пробелов)A[0]=''

__end_python

//В данный момент pipe канал с Python заблокирован, но мы в любой момент узнаем значение нужной нам переменной
loop()
{
text_edit0[0]=readvarpython("A");// В любой момент получаем что записано в первый элемент списка A[0]
sleep(100);
if (flag_button0[0]==1)
{
flag_button0[0]=0;
break;
}
}

closepython();//Завершили работу с интерпретатором
}

Powered by ExBB FM 1.0 Final