Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Мммм... можно сказать, что решилось.
1. Отсылаю команду №1
2. Читаю ответ
3. Отсылаю команду №2
4. Жду 0,5 сек.
5. Читаю ответ

Так ответы получаются разные. Но тоже не совсем гладко. Второй ответ включает в себя и первый тоже. Таким образом, возникает проблема разбора. Вот если бы предыдущий ответ удалялся...
К счастью, протокол GTP предусматривает нумерацию запросов и ответов, т.ч. здесь всё-таки можно что-то придумать.

"Окончательный" код

Код: Выделить весь код
#include <Constants.au3>

AutoItSetOption("ProvideRunStdout", 1)
AutoItSetOption("ProvideRunStdin", 1)

$PID = Run("gnugo.exe --mode gtp", '', @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
Sleep(1000)  ; даём время на запуск
StdinWrite($PID, "1 version" & @CRLF)  ; передаём первую команду

$line = StdoutRead($PID, 1) ; читаем ответ
MsgBox(0,0, $line)


StdinWrite($PID, "2 showboard" & @CRLF) ; передаём вторую команду
Sleep(500) ; выжидаем

$line = StdoutRead($PID, 1) ; читаем ответ
MsgBox(0,0, $line)

Отправлено: 19:40, 19-04-2011 | #10