3

Python を使用して動的シミュレーション ソフトウェア (Vensim) とやり取りしようとしています。このソフトウェアには、使用できるようにしたいヘッダー ファイル vendll.h があります。

これについて ctypes モジュールを調べてきましたが、何も見つかりませんでした。cython の使用も避けたいと思いますが、これがどうなるか見ていきます。このファイルを matlab で使用する方法について、ソフトウェアに付属しているファイルの例を次に示します。おそらく、私が Python で複製できるようにしたいものの要点を多かれ少なかれ理解できるでしょう。

clear all
%*********************LOAD THE MODEL *************************

if not(libisloaded('VenDLL32'))
    hfile = ['C:\Users\Public\Vensim\dll\vendll.h'];
    loadlibrary('VenDLL32',hfile);
end

% Display Vensim DDL function calls and signatures
libfunctionsview VenDLL32

%% *********************EXECUTE SIMULATION *************************
% check calllib returns to verify initiation

str=['SPECIAL>LOADMODEL|RABFOX.vpm'];
calllib('VenDLL32','vensim_check_status')
calllib('VenDLL32','vensim_command',str) 
str=['MENU>RUN|o'];
calllib('VenDLL32','vensim_command',str)


%% *********************RETRIEVE DATA *************************
% retrieve data from the post simulation execution

tnum = 201;
timepts = int32(tnum);

mytime = zeros(1,tnum);
mytimePtr1 = libpointer('singlePtr', mytime);

myrabpop = zeros(1,tnum);
myrabpopPtr1 = libpointer('singlePtr', myrabpop);

% vensim get data command
[int32_status, cstring_vdf, cstring_var1, cstring_var2, singlePtr_var1, ... 
    singlePtr_var2] = calllib('VenDLL32','vensim_get_data','CURRENT.vdf', ...
    'Rabbit Population','time',myrabpopPtr1(1),mytimePtr1(1),timepts);

myrabpopPtr1(1).Value'
mytimePtr1(1).Value'

%% ******************** UNLOAD VENSIM DLL ********************
% unload the library 

unloadlibrary VenDLL32

matlabでは簡単に思えるので、Pythonでは簡単にできるはずですよね?

ヘッダー ファイルを読み込んで、Python 経由でその内容にアクセスするにはどうすればよいですか?

vendll32.lib という名前の同等の静的リンク ライブラリ (.lib) ファイル (.dll は表示されません) もあります。ヘッダー ファイルを利用できない場合、このファイルを同様の方法で利用する方法はありますか?

4

0 に答える 0