我正在寻找一种使用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)
答案 0 :(得分: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
另请参阅:Running C program's executable from Matlab and getting the output