예제 #1
0
        /// <summary>
        /// 思考エンジンに接続する。
        /// </summary>
        /// <param name="data"></param>
        public void Connect(ProcessNegotiatorData data)
        {
            Disconnect(); // 前の接続があるなら切断する。

            Log.Write(LogInfoType.UsiServer, $"思考エンジンに接続 , ExeFilePath = {data.ExeFilePath}");

            try
            {
                negotiator = new ProcessNegotiator();
                negotiator.Connect(data);
                negotiator.CommandReceived += UsiCommandHandler;
                // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、
                // この形で書いても、最初のメッセージを取りこぼすことはない。

                ChangeState(UsiEngineState.Connected);
            }
            catch (Exception ex)
            {
                // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる
                ChangeState(UsiEngineState.ConnectionFailed);

                Exception = new Exception("思考エンジンへの接続に失敗しました。\r\nファイル名 : " + data.ExeFilePath +
                                          "\r\n" + ex.Pretty());
            }
        }
예제 #2
0
        public void Start(string exePath)
        {
            Engine.AddPropertyChangedHandler("State", StateChanged);

            var data = new ProcessNegotiatorData(exePath)
            {
                IsLowPriority = true
            };

            Engine.Connect(data);
            // 接続できているものとする。
        }
예제 #3
0
        public UsiEnginePlayer()
        {
            Initializing = true;

            engine = new UsiEngine();
            engine.AddPropertyChangedHandler("State", StateChanged);

            var data = new ProcessNegotiatorData("engine/gpsfish/gpsfish.exe");

            engine.Connect(data);
            // 接続できているものとする。
        }
예제 #4
0
        /// <summary>
        /// 思考エンジンに接続する。
        /// </summary>
        /// <param name="data"></param>
        public void Connect(ProcessNegotiatorData data)
        {
            Disconnect(); // 前の接続があるなら切断する。

            try
            {
                negotiator = new ProcessNegotiator();
                negotiator.Connect(data);
                negotiator.CommandReceived += UsiCommandHandler;
                // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、
                // この形で書いても、最初のメッセージを取りこぼすことはない。

                ChangeState(UsiEngineState.Connected);
            }
            catch
            {
                // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる
                ChangeState(UsiEngineState.ConnectionFailed);
            }
        }
예제 #5
0
        /// <summary>
        /// 思考エンジンに接続する。
        /// </summary>
        /// <param name="data"></param>
        public void Connect(ProcessNegotiatorData data)
        {
            Disconnect(); // 前の接続があるなら切断する。

            try
            {
                negotiator = new ProcessNegotiator();
                negotiator.Connect(data);
                negotiator.CommandReceived += UsiCommandHandler;
                // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、
                // この形で書いても、最初のメッセージを取りこぼすことはない。

                ChangeState(UsiEngineState.Connected);
            }
            catch (Exception ex)
            {
                // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる
                ChangeState(UsiEngineState.ConnectionFailed);

                Exception = new Exception("思考エンジンへの接続に失敗しました。\nファイル名 : " + data.ExeFilePath +
                                          "\n詳細情報 : " + ex.Message);
            }
        }