Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2011 15:32:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

2rei
WindowsError: exception: access violation reading 0x00000064
см пост выше - посмотрите сколько вам памти надо в указателях
например сделайте
d1=np.zeros(500000,dtype='d')
А лучше всего гляньте сишным отладчиком где оно валится.



Отредактировано (Дек. 25, 2011 15:33:57)

Офлайн

#2 Дек. 25, 2011 16:43:41

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

вот нашел автор подключаеться к данному длл через какой то софт и берет значения и возвращает
#import “NeuroSolutionsAdapter.dll”
int CalcNeuralNet(string dllPath, string weightsPath, double& inputs, double& outputs);
#import
//+——————————————————————+
class CNeuroSolutionsNeuralNet
{
private:
string dllPath; // Путь к DLL-нейрости, созданной в NeuroSolutions
string weightsPath; // Путь к файлу весов сети
public:
double in; // Входы сети - OHLC 5 баров
double out; // Выход сети - Close текущего бара

CNeuroSolutionsNeuralNet();
bool Calc();
};
//+——————————————————————+
void CNeuroSolutionsNeuralNet::CNeuroSolutionsNeuralNet()
{
string terminal = TerminalInfoString(TERMINAL_PATH);
dllPath = terminal + “\\MQL5\\Files\\NeuroSolutions\\WeekPattern.dll”;
weightsPath = terminal + “\\MQL5\\Files\\NeuroSolutions\\WeekPattern.nsw”;
}
//+——————————————————————+
bool CNeuroSolutionsNeuralNet::Calc()
{
// Получим текущие котировки для нейросети
MqlRates rates, rate;
CopyRates(Symbol(), Period(), 0, 6, rates);
ArraySetAsSeries(rates, true);

// Заполним массив входных данных нейросети
double zlevel=0;
for (int bar=0; bar<=5; bar++)
{
rate = rates;
// 0-й бар на вход сети не идет
if (bar==0) zlevel=rate.open; // уровень отсчета цен
// 1-5 бары идут на вход сети
else
{
int i=(bar-1)*4; // номер входа
in = rate.open -zlevel;
in = rate.high -zlevel;
in = rate.low -zlevel;
in = rate.close-zlevel;
}
}

// Проведем расчет сети в DLL NeuroSolutions (через DLL-переходник)
int res = CalcNeuralNet(dllPath, weightsPath, in, out);
switch (res)



Офлайн

#3 Дек. 25, 2011 16:54:02

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

все я вообщем извиняюсь я не до конца понял структура этого длл все разобрался щас расскажу как что у меня поучаеться теоретически мне нужно задать в этот длл dllpath и weightsPath тоесть пути до моих файлов .
дальше тут есть строчка
CalcNeuralNet(dllPath, weightsPath, in, out);
где сооотвестенно вызываютсья все эти функции, можно же в ней задать все свою параметры и она подгрузить сразу, где dllPath путь до длл которую подгружать, weightsPath путь до весо которые подгружать , in те значения которые можно будеь прогнать на ней (пока зададим какой нить число или патом массив сделаем нада понять как она будеть прогонять), out выход тоесть значение которе буде получено после прогонаи оно должно быть возвращено я пока не понял как это сделать
тоесть мне по сути нада вызвать из длл одну функцию а не подгружать каждую изменять
которая вернеть мне значение out/
но при попытке вызыва CalcNeuralNet
тоесть в длл написано extern “C” __declspec(dllexport) int __stdcall CalcNeuralNet(
LPCWSTR dllPath_u, LPCWSTR weightsPath_u,
double* inputs, double* outputs)
по идеи функци подлежить вызовы извне
но при попытки вызова проста без параметров он срау пишет что не может найти
from ctypes import *
lib=cdll.DLLM
lib.CalcNeuralNet
AttributeError: function ‘CalcNeuralNet’ not found



Офлайн

#4 Дек. 25, 2011 17:14:28

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

ххехехе пишу
AD=windll.NeuroSolutionsAdapter
AD.CalcNeuralNet
<_FuncPtr object at 0x03090A80>
ларчик открылся походу щас буду пробовать=))))))



Офлайн

#5 Дек. 25, 2011 17:34:26

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

пришел к следующему

from ctypes import *
AD=windll.NeuroSolutionsAdapter
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(500000,dtype='d')
d2=np.zeros(500000,dtype='d')
d3=np.zeros(500000,dtype='int16')
d4=np.zeros(500000,dtype='int32')
out=0
inp=0.01
AD.CalcNeuralNet(dllpath,weightsPath, inp,out, d1.ctypes.data,d2.ctypes.data,d3.ctypes.data,d4.ctypes.data)
ArgumentError: argument 3: <type ‘exceptions.TypeError’>: Don't know how to convert parameter 3
Уважаемы питонеры посмторите где та я наврал не то задал



Офлайн

#6 Дек. 25, 2011 17:38:27

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

in по идеи значения скалярные с запятой out тоже



Офлайн

#7 Дек. 25, 2011 17:50:13

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

AD.CalcNeuralNet(dllpath,weightsPath,inp,out,d1.ctypes.data,d2.ctypes.data ,d3.ctypes.data, d4.ctypes.data)
исправил точки запятые все равно выдает
ArgumentError: argument 3: <type ‘exceptions.TypeError’>: Don't know how to convert parameter 3



Офлайн

#8 Дек. 25, 2011 18:21:30

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

from ctypes import *
AD=windll.NeuroSolutionsAdapter
x=“C:\Python27\DLL1\DLLM.nsw”
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5000000,dtype='d')
d2=np.zeros(5000000,dtype='d')
d3=np.zeros(5000000,dtype='int16')
d4=np.zeros(5000000,dtype='int16')
out='0'
inp='0.01,0.02'
AD.CalcNeuralNet(dllpath,weightsPath,inp,out)
написал так вроде ошибок не выдал =)))))) без data.types
теперь нада вернуть значение out чтоб проверить работает функция или нет ===)))))



Офлайн

#9 Дек. 25, 2011 19:21:08

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

from ctypes import *
AD=windll.NeuroSolutionsAdapter
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5000000,dtype='d')
d2=np.zeros(5000000,dtype='d')
d3=np.zeros(5000000,dtype='int16')
d4=np.zeros(5000000,dtype='int16')
out='0'
inp='0.05'
print “inp vxod” + inp
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
res =AD.CalcNeuralNet(dllpath,weightsPath,inp,out)
print “out=” +out ,“inp=” +inp
результат
inp vxod0.05
out=P inp=0.05
подаем на вход 0.05 на выходе буква Проста крута!!!!!
наверна это из за того что типы не указаны ? жду комментариев!

inp vxod1,1
out= точка какаято inp=1,1


беда она вообще не работает!!!!!!! беда!!



Отредактировано (Дек. 25, 2011 19:30:03)

Офлайн

#10 Дек. 25, 2011 20:51:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

:)

2rei
жду комментариев!
2rei
беда она вообще не работает!!!!!!! беда!!
Кажется вам не в форум надо писать а снять фильм ужасов - борьба с питоном - он меня душит.
Напишите прототип на c++, судя по описанию проблемам это сильно вам поможет. Потом сделаете на питоне тоже но другими словами.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version