Example #1
0
        /// <summary>
        /// bServerと接続
        /// 同期
        /// </summary>
        /// <returns></returns>
        public bool Connect_bServer(string _bServerAddr, int bServerPort = VRSetting.bServerIPPort)
        {
            // 接続中なら切断
            if (TCP_IsConnected())
            {
                objTCPSC.Dispose();
                objTCPSC = null;

                // 少し待つ
                System.Threading.Thread.Sleep(100);
            }

            // 通信接続
            objTCPSC = new TCPClient(_bServerAddr, bServerPort);

            // 接続開始(同期)
            return(objTCPSC.Start());
        }
        /// <summary>
        /// BoxPcと接続
        /// </summary>
        /// <returns></returns>
        public void ConnectBoxPC_Async()
        {
            if (TCP_IsConnected())
            {
                objTCPSC.Dispose();
                // 少し待つ
                System.Threading.Thread.Sleep(100);
            }

            // 通信接続
            objTCPSC = null;

            objTCPSC = new TCPClient(bServerAddr, bServerPort);
            // 回線オープン
            objTCPSC.StartAsync();

            bServerEmu = false;

            return;
        }
Example #3
0
        /// <summary>
        /// 終了
        /// </summary>
        public void Disconnect()
        {
            // 停止コマンド送信
            SendCommand_Stop();

            // USB SH制御解除
            if (null != UsbMotorDriveIO)
            {
                UsbMotorDriveIO.Close();
            }

            // bServer切断
            if (null != objTCPSC)
            {
                objTCPSC.Dispose();
                objTCPSC = null;
            }

            // エミュレータ終了
            if (null != processEmuSim && !processEmuSim.HasExited)
            {
                processEmuSim.Kill();
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public void ConnectBoxPC_Emulator()
        {
            // セルシオ エミュレータ起動

            /*
             * if (null == processEmuSim || processEmuSim.HasExited)
             * {
             *  processEmuSim = Process.Start(@"..\..\..\CersioSim\bin\CersioSim.exe");
             *
             *  //アイドル状態になるまで待機
             *  //processEmuSim.WaitForInputIdle();
             * }
             */

            // 通信接続
            if (null != objTCPSC)
            {
                if (TCP_IsConnected())
                {
                    SendCommand_Stop();

                    objTCPSC.Dispose();
                    // 少し待つ
                    System.Threading.Thread.Sleep(100);
                }
            }

            bServerEmu = true;
            objTCPSC   = null;

            objTCPSC = new TCPClient(bServerEmuAddr, bServerPort);
            // 回線オープン
            objTCPSC.Start();

            return;
        }
Example #5
0
        /// <summary>
        /// 終了
        /// </summary>
        public void Disconnect()
        {
            // 停止コマンド送信
            SendCommand_Stop();

            // USB SH制御解除
            if (null != UsbMotorDriveIO)
            {
                UsbMotorDriveIO.Close();
            }

            // bServer切断
            if (null != objTCPSC)
            {
                objTCPSC.Dispose();
                objTCPSC = null;
            }

            // エミュレータ終了
            if (null != processEmuSim && !processEmuSim.HasExited)
            {
                processEmuSim.Kill();
            }
        }
Example #6
0
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public void ConnectBoxPC_Emulator()
        {
            // セルシオ エミュレータ起動
            /*
            if (null == processEmuSim || processEmuSim.HasExited)
            {
                processEmuSim = Process.Start(@"..\..\..\CersioSim\bin\CersioSim.exe");

                //アイドル状態になるまで待機
                //processEmuSim.WaitForInputIdle();
            }
            */

            // 通信接続
            if (null != objTCPSC)
            {
                if (TCP_IsConnected())
                {
                    SendCommand_Stop();

                    objTCPSC.Dispose();
                    // 少し待つ
                    System.Threading.Thread.Sleep(100);
                }
            }

            bServerEmu = true;
            objTCPSC = null;

            objTCPSC = new TCPClient(bServerEmuAddr, bServerPort);
            // 回線オープン
            objTCPSC.Start();

            return;
        }
Example #7
0
        /// <summary>
        /// BoxPcと接続
        /// </summary>
        /// <returns></returns>
        public void ConnectBoxPC_Async()
        {
            if (TCP_IsConnected())
            {
                objTCPSC.Dispose();
                // 少し待つ
                System.Threading.Thread.Sleep(100);
            }

            // 通信接続
            objTCPSC = null;

            objTCPSC = new TCPClient(bServerAddr, bServerPort);
            // 回線オープン
            objTCPSC.StartAsync();

            bServerEmu = false;

            return;
        }
Example #8
0
        /// <summary>
        /// コマンド送信
        /// </summary>
        static void TCP_SendCommand(TCPClient objTCPSC, string comStr)
        {
            if (null == objTCPSC) return;

            System.Net.Sockets.NetworkStream objStm = objTCPSC.MyProperty;

            if (objStm != null)
            {
                try
                {
                    Byte[] dat = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes(comStr);

                    objStm.Write(dat, 0, dat.GetLength(0));
                }
                catch (Exception e)
                {
                    // 接続エラー
                    Console.WriteLine("TCP_SendCommand() 送信失敗 / 送信文字:" + comStr);
                    Console.WriteLine(e.Message);
                }
            }
        }
Example #9
0
        /// <summary>
        /// コマンド受信
        /// </summary>
        /// <returns></returns>
        static string TCP_ReciveCommand(TCPClient objTCPSC)
        {
            if (null == objTCPSC) return "";

            string resiveStr = "";

            try
            {
                System.Net.Sockets.TcpClient objSck = objTCPSC.SckProperty;
                System.Net.Sockets.NetworkStream objStm = objTCPSC.MyProperty;

                if (objStm != null && objSck != null)
                {
                    // ソケット受信
                    if (objSck.Available > 0 && objStm.DataAvailable)
                    {
                        Byte[] dat = new Byte[objSck.Available];

                        if (0 == objStm.Read(dat, 0, dat.GetLength(0)))
                        {
                            // 切断を検知
                            objTCPSC.Dispose();
                            return "";
                        }
                        string readStr = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat);
                        resiveStr += readStr;
                    }

                }
            }
            catch (Exception e)
            {
                // 接続エラー
                Console.WriteLine("TCP_ReciveCommand() 受信失敗");
                Console.WriteLine(e.Message);
            }

            return resiveStr;
        }
Example #10
0
        /// <summary>
        /// BoxPCとの通信状態をかえす
        /// </summary>
        /// <returns></returns>
        static bool TCP_IsConnected(TCPClient objTCPSC)
        {
            if (null == objTCPSC) return false;

            System.Net.Sockets.TcpClient objSck = objTCPSC.SckProperty;
            System.Net.Sockets.NetworkStream objStm = objTCPSC.MyProperty;

            if (objStm != null && objSck != null)
            {
                return true;
            }
            return false;
        }
Example #11
0
        static void Main(string[] args)
        {
            /// <summary>
            /// bServer通信ソケット
            /// </summary>
            TCPClient objTCPSC = null;

            // 接続情報
            string bServerAddr = "192.168.1.101";
            //string bServerAddr = "127.0.0.1"; // for Simurator

            /// <summary>
            /// bServer ポートNo
            /// </summary>
            int bServerPort = 50001;

            // 更新タイミング MS
            const int sleepMS = 20;

            bool loopFlg = true;

            // パラメータ取得
            if (args.Length >= 1)
            {
                bServerAddr = args[0];
            }
            if (args.Length >= 2)
            {
                bServerPort = int.Parse(args[1]);
            }

            Console.WriteLine("bServer Communication -Interface Ver0.10");
            Console.WriteLine("");

            // 終了イベント
            Console.CancelKeyPress += (sender, e) =>
            {
                Console.Clear();
                Console.WriteLine("終了....");

                loopFlg = false;
                // trueにすると、プログラムを終了させない
                e.Cancel = true;

                // bServer切断
                if (null != objTCPSC)
                {
                    objTCPSC.Dispose();
                    objTCPSC = null;
                }
            };

            Console.WriteLine("Connect ... IP:" + bServerAddr + " port:" + bServerPort.ToString());

            objTCPSC = null;
            objTCPSC = new TCPClient(bServerAddr, bServerPort);
            objTCPSC.Start();
            if (TCP_IsConnected(objTCPSC))
            {
                Console.WriteLine("接続OK!");
            }

            Console.WriteLine("");
            Console.WriteLine("***** Start *****");
            Console.WriteLine("CTRL+Cで、アプリを終了します。");
            Console.WriteLine("Command List");
            Console.WriteLine("A1 ... RE パルス取得");
            Console.WriteLine("A2 ... 地磁気取得");
            Console.WriteLine("A3 ... GPS 取得");
            Console.WriteLine("A4 ... RE プロット座標取得");
            Console.WriteLine("");
            Console.WriteLine("AC,ハンドル,アクセル");
            Console.WriteLine("AL,LED番号");
            Console.WriteLine("AD,プロット座標X 変更,プロット座標Y 変更");
            Console.WriteLine("AR,プロット向き 変更");
            Console.WriteLine("ES,左1回転パルス値,右1回転パルス値");
            Console.WriteLine("");

            // 現在のカーソル行取得
            int curStartRow = Console.CursorTop;

            while (loopFlg)
            {
                try
                {
                    // 通信できるか?
                    if (!TCP_IsConnected(objTCPSC))
                    {
                        Console.WriteLine("接続開始...");

                        // 再接続
                        objTCPSC.Dispose();
                        // 少し待つ
                        System.Threading.Thread.Sleep(100);

                        // 通信接続
                        objTCPSC = null;
                        objTCPSC = new TCPClient(bServerAddr, bServerPort);

                        objTCPSC.Start();

                        if (TCP_IsConnected(objTCPSC))
                        {
                            Console.WriteLine("接続OK!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("接続 Error!");
                    Console.WriteLine(ex.Message);
                    break;
                }

                // コンソール表示
                {
                    string resiveStr = TCP_ReciveCommand(objTCPSC);

                    if (!string.IsNullOrEmpty(resiveStr))
                    {
                        Console.WriteLine("Resive:" + resiveStr);
                    }
                }

                if (Console.KeyAvailable)
                {
                    // キー入力があれば、受付
                    string sendStr = Console.ReadLine();

                    if (!string.IsNullOrEmpty(sendStr))
                    {
                        TCP_SendCommand(objTCPSC, sendStr+"\n");

                        Console.WriteLine("Send:" + sendStr);
                    }
                }

                // カーソル位置を初期化
                //Console.SetCursorPosition(0, curStartRow);

                // 処理を休止
                System.Threading.Thread.Sleep(sleepMS);
            }

            if (null != objTCPSC)
            {
                objTCPSC.Dispose();
                objTCPSC = null;
            }
        }