3

matlab を使用して uci プロトコルでチェス エンジンと通信する方法を探しています。チェス エンジンは rybka で、その exe ファイルです。rybka.exe を実行すると、dos コマンド プロンプト経由で通信できますが、matlab 経由で通信したいと考えています。streampipe と stdin と stdout を使用する必要があると思いますが、使用方法がわかりません。

Python でこのコードを見つけましたが、問題なく動作しますが、matlab バージョンを探しています。

import subprocess, time

engine = subprocess.Popen(
    'a.exe',
    universal_newlines=True,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
)

def put(command):
    print('\nyou:\n\t'+command)
    engine.stdin.write(command+'\n')

def get():
    # using the 'isready' command (engine has to answer 'readyok')
    # to indicate current last line of stdout
    engine.stdin.write('isready\n')
    print('\nengine:')
    while True:
        text = engine.stdout.readline().strip()
        if text == 'readyok':
            break
        if text !='':
            print('\t'+text)
4

1 に答える 1

0

exe ファイルを使用して出力をキャプチャするだけの場合は、systemコマンドを使用して出力をキャプチャできます。たとえばdir、次の方法でシステムのコマンドを実行できます。

>> [~, output] = system('dir')

output =

ant      ant.cmd  antRun.bat  antenv.cmd           envset.cmd  runant.pl
ant.bat  antRun   antRun.pl   complete-ant-cmd.pl  lcp.bat     runant.py

ドキュメント: http://www.mathworks.com/help/matlab/ref/system.html

参照: Matlab から C プログラムの実行可能ファイルを実行し、出力を取得する

于 2013-05-24T13:12:03.370 に答える