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)