Beispiel #1
0
 public void Constate2(int windowID)
 {
     if (GUI.Button(new Rect(10, 20, 150, 25), "OK"))
     {
         Debug.Log("TSB_Close");
         s = false;
         //isGet = false;
         if (myThread != null)
         {
             SocketApp.isRun = false;
             if (myThread.IsAlive)
             {
                 SocketApp.CloseAll();
                 //TCP_Handler.tcpClose();
                 //printall("no Loacal IP");
                 //SocketApp.acceptDone.Set();
             }
             Thread.Sleep(100);
             myThread.Abort();
             Debug.Log("Abort");
         }
         //if (SocketApp.transMode == (int)SocketApp.Transfer_Mode.M_UDP)
         //    SocketApp.CloseAll();
         stop         = false;
         sensornumber = "";
         SocketApp.TCP_clientList.Clear();
     }
     // Make the windows be draggable.
     GUI.DragWindow(new Rect(0, 0, 10000, 10000));
 }
Beispiel #2
0
        private void btnDescargar_Click(object sender, EventArgs e)
        {
            try
            {
                showSpinner(true);
                Usuarios usuario = new Usuarios();
                usuario.id = 3;
                SocketApp socketApp = new SocketApp(hostServidor, 5656, usuario);
                //para q actualize cuando envie todo
                //socketApp.dataGridViewArchivos = dataGridViewArchivos;
                //  socketApp.progresSpinnerLoad = ProgresSpinnerLoad;

                //archivoSElect.id = 79;
                //archivoSElect = LNArchivos.Instance.ListarId(archivoSElect);
                //Console.WriteLine(archivoSElect.nombre);
                socketApp.progresSpinnerLoad = ProgresSpinnerLoad;
                socketApp.descargarArchivo(archivoSelected.nombre, ubicacionSave);
                //activeBtnDetails(false);
            }
            catch (Exception ex)
            {
                showSpinner(false);
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #3
0
        public override void RunSocket()
        {
            try {
                SocketApp.Bind(IpEndPoint);
                Console.WriteLine("Server started. Connected..");

                while (true)
                {
                    StringBuilder builder  = new StringBuilder();
                    int           bytes    = 0;
                    byte[]        data     = new byte[256];
                    EndPoint      remoteIp = new IPEndPoint(IPAddress.Any, 0);

                    do
                    {
                        bytes = SocketApp.ReceiveFrom(data, ref remoteIp);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    } while (SocketApp.Available > 0);

                    IPEndPoint remoteFullIp = remoteIp as IPEndPoint;
                    Console.WriteLine("{0}:{1} - {2}", remoteFullIp.Address.ToString(),
                                      remoteFullIp.Port, builder.ToString());
                }
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
            finally {
                Close();
            }
        }
Beispiel #4
0
        public override void RunSocket()
        {
            try {
                SocketApp.Bind(IpEndPoint);
                SocketApp.Listen(10);
                Console.WriteLine("Server started. Connected..");

                while (true)
                {
                    Socket        handler = SocketApp.Accept();
                    StringBuilder builder = new StringBuilder();
                    int           bytes   = 0;
                    byte[]        data    = new byte[256];

                    do
                    {
                        bytes = handler.Receive(data);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    } while (handler.Available > 0);

                    Console.WriteLine(DateTime.Now.ToShortTimeString() + ": " + builder);

                    string messageResponse = "Meessage send.";
                    data = Encoding.Unicode.GetBytes(messageResponse);
                    handler.Send(data);
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
Beispiel #5
0
 public void AttachSocket(SocketApp socket)
 {
     if (!this.listSocketApp.Contains(socket))
     {
         this.listSocketApp.Add(socket);
     }
 }
Beispiel #6
0
        //selecciona el dirrectorio del archivo
        private void archivoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog openFile = new OpenFileDialog();
                showSpinner(true);
                if (openFile.ShowDialog() == DialogResult.OK)
                {//directorio del archivo a enviar
                    string nombreFile = CopyFile(openFile.FileName, openFile.SafeFileName);
                    Console.WriteLine(nombreFile);
                    SocketApp socketApp = new SocketApp(hostServidor, 5656, usuario);
                    //para q actualize cuando envie todo
                    socketApp.dataGridViewArchivos = dataGridViewArchivos;
                    socketApp.progresSpinnerLoad   = ProgresSpinnerLoad;
                    socketApp.InitSocketEnviar(nombreFile, usuario.id);
                    //InitSocket(nombreFile);

                    // CargarDatos(usuario);
                    // showSpinner(false);
                    activeBtnDetails(false);
                    ShowDetailsBorrar();
                }
                else
                {
                    showSpinner(false);
                }
            }
            catch (Exception ex)
            {
                showSpinner(false);
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #7
0
 public void DettachSocket(SocketApp socket)
 {
     if (this.listSocketApp.Contains(socket))
     {
         this.listSocketApp.Remove(socket);
     }
 }
Beispiel #8
0
    public void OFF()//關閉連線(OFF)
    {
        Debug.Log("TSB_Stop");
        string msg = "#stop$";

        SocketApp.SendAll(msg);// do things
        Debug.Log("send_stop");
        stop = true;
    }
Beispiel #9
0
        public Counter(Waiter waiter1, Waiter waiter2, SocketApp socket)
        {
            CommandeEnvoie = new List <CommandePaquet>();
            CommandeReçu   = new List <CommandePaquet>();
            materialEnvoie = new List <MaterialPaquet>();
            materialRecu   = new List <MaterialPaquet>();

            AttachServeur(waiter1);
            AttachServeur(waiter2);
            AttachSocket(socket);
        }
Beispiel #10
0
 public void Constate1(int windowID)
 {
     if (GUI.Button(new Rect(10, 20, 150, 25), "OK"))
     {
         s = true;
         Debug.Log("TSB_Activate");
         string msg = "#send$";
         SocketApp.SendAll(msg);                                       // do things
         Debug.Log("send_activate");
         open = false;
     }
     // Make the windows be draggable.
     GUI.DragWindow(new Rect(0, 0, 10000, 10000));
 }
Beispiel #11
0
    public static void Initial()
    {
        LocalIP = SocketApp.getLocalNetworkIP();
        if (LocalIP == "")
        {
            //MessageBox.Show("錯誤! 沒有取得任何IP!! 請檢查網路連線...");
            while (true)
            {
                ;
            }
        }
        //huangting
        //myForm.Invoke(new UpdateLableHandler(myForm.printIP), LocalIP);

        IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(LocalIP), PortNumber);

        Server            = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        SocketApp._Server = Server;
        //

        Server.Bind(localEndPoint);
        Server.Listen(10);     //指定最大連接數
        //to test if the client is disconnected
        //Server.IOControl(IOControlCode.KeepAliveValues, KeepAlive(1, 1000, 1000), null);

        while (isInitial)
        {
            try
            {
                //=============Asynchronous architecture===============================
                while (SocketApp.isRun)
                {
                    SocketApp.acceptDone.Reset();
                    showMsg = "Waiting for a connecting...\n";
                    //huangting
                    //myForm.Invoke(new UpdateLableHandler(myForm.printDialog), showMsg);
                    Server.BeginAccept(new AsyncCallback(AcceptCallback), Server);
                    SocketApp.acceptDone.WaitOne();
                }
            }
            catch (ThreadAbortException e)
            {
                //huangting
                //MessageBox.Show(e.ToString());
            }
            finally
            {
            }
        }
    }
Beispiel #12
0
        private void button1_Click(object sender, EventArgs e)
        {
            Usuarios usuario = new Usuarios();

            usuario.id = 3;
            SocketApp socketApp = new SocketApp("127.0.0.1", 5656, usuario);
            //para q actualize cuando envie todo
            //socketApp.dataGridViewArchivos = dataGridViewArchivos;
            //  socketApp.progresSpinnerLoad = ProgresSpinnerLoad;
            Archivos archivoSElect = new Archivos();

            archivoSElect.id = 79;
            archivoSElect    = LNArchivos.Instance.ListarId(archivoSElect);
            //Console.WriteLine(archivoSElect.nombre);
            // socketApp.descargarArchivo(archivoSElect.nombre);
        }
Beispiel #13
0
    public static void AcceptCallback(IAsyncResult ar)
    {
        // Get the socket that handles the client request.
        Socket listener = (Socket)ar.AsyncState;

        try
        {
            if (listener != null)
            {
                Socket client = listener.EndAccept(ar);
                client.ReceiveTimeout = 200;
                SocketApp.addClient(client);
                //clientList.Add(client);
                showMsg = "CONNECTED!\n";
                //huangting
                //myForm.Invoke(new UpdateLableHandler(myForm.printDialog), showMsg);
                showClientName();
                // Signal the main thread to continue.
                SocketApp.acceptDone.Set();

                // Create the state object.
                StateObject state = new StateObject();
                state.workSocket = client;
                client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                    out state.errorcode, new AsyncCallback(ReceiveCallback), state);
            }
        }
        catch (ObjectDisposedException e)
        {
            //do nothing
        }
        catch (Exception e)
        {
            //huangting
            //MessageBox.Show(e.ToString());
        }
    }
Beispiel #14
0
    void OnGUI()
    {
        //(x位置, y位置, x長度, y長度)
        ///////////////////////////////////////BUTTON///////////////////////////////////////
        GUI.Box(new Rect(10, 10, 200, 500), "Button");

        ///////////////////////////////連線部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(20, 30, 180, 100), "連線:");
        GUI.color = Color.white;
        if (GUI.Button(new Rect(40, 60, 70, 50), "ON"))//開始連線(ON)
        {
            Debug.Log("TSB_Open");
            FileInfo.loadSettingFile();
            Debug.Log("TSB_Start");
            myThread = new Thread(new ThreadStart(ServerProcess));
            myThread.IsBackground = true;
            myThread.Start();
            open = true;
        }
        if (SocketApp.TCP_clientList.Count == 3 && open == true)//確定3顆都連線
        {
            GUI.color = Color.green;
            windowCon = GUI.Window(0, windowCon, Constate1, "System Connected!");
            GUI.color = Color.white;
            //StartCoroutine("Activate");//註解比較穩定
        }
        if (GUI.Button(new Rect(115, 60, 70, 50), "OFF"))//關閉連線(OFF)
        {
            Debug.Log("TSB_Stop");
            string msg = "#stop$";
            SocketApp.SendAll(msg);// do things
            Debug.Log("send_stop");
            stop = true;
        }
        if (stop == true)
        {
            GUI.color = Color.red;
            windowCon = GUI.Window(0, windowCon, Constate2, "System Disconnected?");
            GUI.color = Color.white;
        }


        ///////////////////////////////讀存檔部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(20, 140, 180, 70), "軌跡紀錄:");
        GUI.color = Color.white;
        if (GUI.Button(new Rect(55, 170, 50, 20), "Save"))//存檔
        {
            savedataflag = true;
            datastate    = "Save";
            Debug.Log("save data!!");
        }
        if (GUI.Button(new Rect(110, 170, 50, 20), "Load"))//讀檔
        {
            loaddataflag = true;
            datastate    = "Load";
            Debug.Log("load data!!");
        }

        ///////////////////////////////遊戲部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(20, 220, 180, 90), "遊戲模式:");
        GUI.color = Color.white;
        if (GUI.Button(new Rect(30, 250, 50, 20), "Mode1"))//模式1
        {
            Time.timeScale = 1;
            mode_flag      = 1;
            time_b         = true;
            time_f         = 0;
        }
        if (GUI.Button(new Rect(85, 250, 50, 20), "Mode2"))//模式2
        {
            Time.timeScale = 2;
            mode_flag      = 2;
            time_b         = true;
            time_f         = 0;
        }
        if (GUI.Button(new Rect(140, 250, 50, 20), "Mode3"))//模式3
        {
            Time.timeScale = 3;
            mode_flag      = 3;
            time_b         = true;
            time_f         = 0;
        }
        if (gameState == GameState.lost)
        {
            GUI.color = Color.red;
            windowWon = GUI.Window(0, windowWon, Gamestate, "You Lost!");
            GUI.color = Color.white;
        }
        if (gameState == GameState.won)
        {
            GUI.color  = Color.green;
            windowLost = GUI.Window(1, windowLost, Gamestate, "You Won!");
            GUI.color  = Color.white;
        }

        ///////////////////////////////系統部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(20, 320, 180, 90), "系統相關:");
        GUI.color = Color.white;
        if (GUI.Button(new Rect(40, 350, 70, 20), "Play"))//開始
        {
            StartCoroutine(down());
        }
        if (GUI.Button(new Rect(115, 350, 70, 20), "Pause"))//暫停
        {
            Time.timeScale = 0;
        }
        if (GUI.Button(new Rect(40, 380, 70, 20), "Continue"))//繼續
        {
            Time.timeScale = 1;
        }
        if (GUI.Button(new Rect(115, 380, 70, 20), "Restart"))//重整
        {
            Debug.Log("Restart");
            SocketApp.TCP_clientList.Clear();
            Application.LoadLevel(Application.loadedLevel);
        }


        ///////////////////////////////////////DATA///////////////////////////////////////
        GUI.Box(new Rect(Screen.width - 110, 10, 100, 500), "Data");

        ///////////////////////////////系統部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Label(new Rect(Screen.width - 100, 30, 50, 20), "時間:");
        GUI.color = Color.white;
        switch (mode_flag)
        {
        case 1:
            GUI.TextField(new Rect(Screen.width - 100, 50, 85, 20), "Times: " + (int)time_f / 60 + "m" + (int)time_f % 60 + "s");
            break;

        case 2:
            GUI.TextField(new Rect(Screen.width - 100, 50, 85, 20), "Times: " + (int)time_f / 2 / 60 + "m" + (int)time_f / 2 % 60 + "s");
            break;

        case 3:
            GUI.TextField(new Rect(Screen.width - 100, 50, 85, 20), "Times: " + (int)time_f / 3 / 60 + "m" + (int)time_f / 3 % 60 + "s");
            break;
        }
        GUI.color = Color.green;
        GUI.Label(new Rect(Screen.width - 100, 70, 50, 20), "角度:");
        GUI.color = Color.white;
        GUI.TextField(new Rect(Screen.width - 100, 90, 85, 20), "Pitch: " + TCP_Handler.pitch.ToString("0.000"));
        GUI.TextField(new Rect(Screen.width - 100, 110, 85, 20), "Roll: " + TCP_Handler.roll.ToString("0.000"));
        GUI.TextField(new Rect(Screen.width - 100, 130, 85, 20), "Yaw: " + TCP_Handler.yaw.ToString("0.000"));

        ///////////////////////////////連線部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(Screen.width - 105, 160, 90, 110), "連線狀況:");
        GUI.color = Color.white;
        GUI.Label(new Rect(Screen.width - 95, 180, 85, 20), "Sensors:");
        if (TCP_Handler.SID_List.Count > 0)
        {
            foreach (int ID in TCP_Handler.SID_List)
            {
                //Debug.Log("sensor ID: " + ID);
                sensornumber += ID.ToString();
                sensornumber += " ";
            }
            TCP_Handler.SID_List.Clear();
        }
        GUI.TextField(new Rect(Screen.width - 102, 200, 85, 20), sensornumber);
        GUI.Label(new Rect(Screen.width - 95, 220, 85, 20), "Numbers:");
        GUI.TextField(new Rect(Screen.width - 102, 240, 85, 20), SocketApp.TCP_clientList.Count.ToString());
        if (TCP_Handler.sensor_num_ID.Count > 0 && s == true)//activate後傳值的數量
        {
            foreach (int ID in TCP_Handler.sensor_num_ID)
            {
                Debug.Log("sensor ID: " + ID);
            }
        }

        ///////////////////////////////讀存檔部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(Screen.width - 105, 280, 90, 60), "檔案結果:");
        GUI.color = Color.white;
        GUI.TextField(new Rect(Screen.width - 102, 310, 85, 20), datastate);

        ///////////////////////////////遊戲部分///////////////////////////////
        GUI.color = Color.green;
        GUI.Box(new Rect(Screen.width - 105, 350, 90, 80), "遊戲分數:");
        GUI.color = Color.white;
        GUI.Label(new Rect(Screen.width - 100, 370, 85, 20), "Found gems:");
        GUI.TextField(new Rect(Screen.width - 102, 390, 85, 20), foundGems + "/" + totalGems);
        guiNumber.fontSize         = 200;
        guiNumber.normal.textColor = Color.red;
        if (countdownText != "")
        {
            GUI.Label(new Rect((Screen.width - 100) / 2 - 100, (Screen.height - 30) / 2, 100, 30), countdownText, guiNumber);
        }
    }
Beispiel #15
0
        public RoomModel()
        {
            SocketApp socket = new SocketApp();



            personnel = new List <Sprite>();
            objects   = new List <Sprite>();

            //Instanciation des objects de la salle et affecté à une liste pour la vue



            //Instanciation du personnel de la salle et affecté à une liste pour la vue
            Waiter     serveur1;
            Waiter     serveur2;
            HostMaster maitreHotel;

            chefRang1 = new RankLeader();
            chefRang2 = new RankLeader();
            this.CreationTable();


            serveur1 = new Waiter(Carre1, Carre2);
            serveur2 = new Waiter(Carre1, Carre2);

            maitreHotel = new HostMaster(chefRang1, chefRang2, Carre1, Carre2);
            this.CreationMenu();
            counter = new Counter(serveur1, serveur2, socket);
            SocketListener.Counter = counter;
            RankLeader.Counter     = counter;
            Waiter.Counter         = counter;

            personnel.Add(maitreHotel.Sprite);
            personnel.Add(serveur1.Sprite);
            personnel.Add(serveur2.Sprite);
            personnel.Add(chefRang1.Sprite);
            personnel.Add(chefRang2.Sprite);
            Thread.Sleep(1000);
            Console.WriteLine("Le nombre de personel est de :" + personnel.Count);
            Console.WriteLine("Instanciation du Model sans problèmes \n \n");



            Thread.Sleep(2000);


            ListGroupe = new List <GroupClient>();


            Thread.Sleep(2000);



            Thread GenGrpClient = new Thread(() => RdmGenClient(maitreHotel, serveur1, serveur2));

            GenGrpClient.Start();



            // this.CreateCustomers();
            //    Thread th = new Thread(() => test(serveur2, maitreHotel));
            //    th.Start();
            //}

            //public void test(Waiter serveur2, HostMaster maitreHotel)
            //{
            //    serveur2.Sprite.Move(maitreHotel.Sprite.PositionX, maitreHotel.Sprite.PositionY);
        }
Beispiel #16
0
        public KitchenModel()
        {
            personnel = new List <Sprite>();
            objects   = new List <Sprite>();

            Desk                 kitchenDesk            = new Desk();
            Sink                 kitchenSink            = new Sink();
            HeatingPlate         plaque1                = new HeatingPlate();
            HeatingPlate         plaque2                = new HeatingPlate();
            HeatingPlate         plaque3                = new HeatingPlate();
            Dishwasher           laveVaisselle          = new Dishwasher();
            LaundryMachine       laveLinge              = new LaundryMachine();
            DishesStock          stockVaisselle         = new DishesStock();
            DirtyDishesStock     stockVaiselleSale      = new DirtyDishesStock();
            Fridge               kitchenFridge          = new Fridge();
            KitchenMaterialStock kitchenMaterialStock   = new KitchenMaterialStock();
            IngredientStock      kitchenIngredientStock = new IngredientStock();

            objects.Add(kitchenDesk.Sprite);
            objects.Add(kitchenSink.Sprite);
            objects.Add(plaque1.Sprite);
            objects.Add(plaque2.Sprite);
            objects.Add(plaque3.Sprite);
            objects.Add(laveVaisselle.Sprite);
            objects.Add(laveLinge.Sprite);
            objects.Add(stockVaisselle.Sprite);
            objects.Add(stockVaiselleSale.Sprite);
            objects.Add(kitchenFridge.Sprite);
            objects.Add(kitchenMaterialStock.Sprite);
            objects.Add(kitchenIngredientStock.Sprite);


            Plunger plongeur   = new Plunger(kitchenDesk, stockVaiselleSale, stockVaisselle, laveVaisselle, laveLinge, kitchenSink);
            Clerk   commis1    = new Clerk(kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, kitchenSink, "GabinCuisto");
            Clerk   commis2    = new Clerk(kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, kitchenSink, "MaxCuisto");
            Cooker  cuisinier1 = new Cooker(commis1, commis2, kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, "BenjaminCuisto");
            Cooker  cuisinier2 = new Cooker(commis1, commis2, kitchenMaterialStock, kitchenIngredientStock, kitchenFridge, "PirminCuisto");
            Chef    chef       = new Chef(cuisinier1, cuisinier2, kitchenDesk);


            personnel.Add(chef.Sprite);
            personnel.Add(cuisinier1.Sprite);
            personnel.Add(cuisinier2.Sprite);
            personnel.Add(commis1.Sprite);
            personnel.Add(commis2.Sprite);
            personnel.Add(plongeur.Sprite);


            socket = new SocketApp();

            SocketListener.kitchenDesk = kitchenDesk;

            // Ajouter des abonnés observer à l'observable Comptoir
            kitchenDesk.AttachChef(chef);
            kitchenDesk.AttachPlunger(plongeur);
            kitchenDesk.AttachSocket(socket);



            //// Créations des Ingrédients
            //Ingredient steak = new Ingredient("Steak", "Viande");
            //Ingredient poulet = new Ingredient("Poulet", "Viande");
            //Ingredient poisson = new Ingredient("Poisson", "Poisson");
            //Ingredient pain = new Ingredient("Pain", "Pain");
            //Ingredient salade = new Ingredient("Salade", "Vegetables");
            //Ingredient tomate = new Ingredient("Tomate", "Vegetables");
            //Ingredient oignon = new Ingredient("Oignon", "Vegetables");
            //Ingredient cheddar = new Ingredient("Cheddar", "Frommage");
            //Ingredient raclette = new Ingredient("Raclette", "Fromage");
            //Ingredient sauce = new Ingredient("Sauce", "Sauce");

            //// Instanciation Object Cuisine Material
            //KitchenKnife kitchenKnife = new KitchenKnife();
            //Pans kitchenCasserolle = new Pans();
            //Stove kitchenPoêle = new Stove();
            //WoodenSpoon kitchenCuillière = new WoodenSpoon();
            //SaladBowl kitchenBolSalade = new SaladBowl();


            //// Creation des etapes des recettes
            //RecipeStep prepareSteak = new RecipeStep("Cuire le Steak", 10);
            //prepareSteak.IngredientQuantities.Add(new IngredientQuantity(1, steak));
            //prepareSteak.ListUstencils.Add(kitchenPoêle);

            //RecipeStep preparePoulet = new RecipeStep("Cuire le Poulet", 10);
            //preparePoulet.IngredientQuantities.Add(new IngredientQuantity(1, poulet));
            //preparePoulet.ListUstencils.Add(kitchenPoêle);

            //RecipeStep preparePoisson = new RecipeStep("Cuire le Poisson", 10);
            //preparePoisson.IngredientQuantities.Add(new IngredientQuantity(1, poisson));
            //preparePoisson.ListUstencils.Add(kitchenPoêle);

            //RecipeStep prepareVegetables = new RecipeStep("Preparer les légumes", 5);
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(1, salade));
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(2, tomate));
            //prepareVegetables.IngredientQuantities.Add(new IngredientQuantity(1, oignon));
            //prepareVegetables.ListUstencils.Add(kitchenBolSalade);
            //prepareVegetables.ListUstencils.Add(kitchenCuillière);
            //prepareVegetables.ListUstencils.Add(kitchenKnife);

            //RecipeStep prepareRaclette = new RecipeStep("Préparer le frommage à Raclette", 5);
            //prepareRaclette.IngredientQuantities.Add(new IngredientQuantity(2, raclette));
            //prepareRaclette.ListUstencils.Add(kitchenKnife);

            //RecipeStep prepareCheddar = new RecipeStep("Préparer le Cheddar", 5);
            //prepareCheddar.IngredientQuantities.Add(new IngredientQuantity(2, cheddar));
            //prepareCheddar.ListUstencils.Add(kitchenKnife);

            //RecipeStep assemblerBurger = new RecipeStep("Assembler le Burger", 5);
            //assemblerBurger.IngredientQuantities.Add(new IngredientQuantity(1, pain));
            //assemblerBurger.IngredientQuantities.Add(new IngredientQuantity(1, sauce));


            //// Creations des plats
            //Dish burgerClassic = new Dish(1, "Burger Classique");
            //burgerClassic.Recipe.Add(prepareSteak);
            //burgerClassic.Recipe.Add(prepareVegetables);
            //burgerClassic.Recipe.Add(prepareCheddar);
            //burgerClassic.Recipe.Add(assemblerBurger);

            //Dish burgerChicken = new Dish(2, "Burger Poulet");
            //burgerChicken.Recipe.Add(preparePoulet);
            //burgerChicken.Recipe.Add(prepareVegetables);
            //burgerChicken.Recipe.Add(prepareCheddar);
            //burgerChicken.Recipe.Add(assemblerBurger);

            //Dish burgerMountain = new Dish(3, "Burger Montagnard");
            //burgerMountain.Recipe.Add(prepareSteak);
            //burgerMountain.Recipe.Add(prepareVegetables);
            //burgerMountain.Recipe.Add(prepareCheddar);
            //burgerMountain.Recipe.Add(assemblerBurger);

            //Dish burgerVegan = new Dish(4, "Burger Vegan");
            //burgerVegan.Recipe.Add(preparePoisson);
            //burgerVegan.Recipe.Add(prepareVegetables);
            //burgerVegan.Recipe.Add(prepareCheddar);
            //burgerVegan.Recipe.Add(prepareRaclette);
            //burgerVegan.Recipe.Add(assemblerBurger);

            DomainApp domainApp = new DomainApp();

            Console.WriteLine("Instanciation du Controller sans problèmes");
        }
Beispiel #17
0
    void OnGUI()
    {
        GUILayout.Label("pitch: " + TCP_Handler.pitch.ToString("0.00"));
        GUILayout.Label("roll: " + TCP_Handler.roll.ToString("0.00"));
        GUILayout.Label("yaw: " + TCP_Handler.yaw.ToString("0.00"));
        GUILayout.Label("Times: " + (int)time_f / 60 + "m" + (int)time_f % 60 + "s");
        GUILayout.Label("connected number: " + SocketApp.TCP_clientList.Count);

        /*if (GUILayout.Button(TSB_Open, GUILayout.Height(50), GUILayout.Width(50)))//測試按鍵改成圖片用
         *      {
         *              Debug.Log("TSB_Open");
         *  FileInfo.loadSettingFile();
         * }*/

        if (GUILayout.Button("TSB_Open"))//開啟
        {
            Debug.Log("TSB_Open");
            FileInfo.loadSettingFile();
        }

        if (GUILayout.Button("TSB_Start"))//開始
        {
            Debug.Log("TSB_Start");
            myThread = new Thread(new ThreadStart(ServerProcess));
            myThread.IsBackground = true;
            myThread.Start();
        }

        GUI.color = Color.gray;
        if (GUILayout.Button("TSB_CLose"))//關閉
        {
            s = false;
            //isGet = false;
            if (myThread != null)
            {
                SocketApp.isRun = false;
                if (myThread.IsAlive)
                {
                    SocketApp.CloseAll();
                    TCP_Handler.tcpClose();
                    //printall("no Loacal IP");
                    SocketApp.acceptDone.Set();
                }
                Thread.Sleep(100);
                myThread.Abort();
            }
            if (SocketApp.transMode == (int)SocketApp.Transfer_Mode.M_UDP)
            {
                SocketApp.CloseAll();
            }
        }
        GUI.color = Color.white;

        if (GUILayout.Button("TSB_Activate"))//啟動連線
        {
            s = true;
            Debug.Log("TSB_Activate");
            string msg = "#send$";
            SocketApp.SendAll(msg);                                       // do things
            Debug.Log("send_activate");
            //StartCoroutine("Activate");//註解比較穩定
        }

        GUI.color = Color.gray;
        if (GUILayout.Button("TSB_Stop"))//暫停
        {
            s = false;
            Debug.Log("TSB_Stop");
            string msg = "#stop$";
            SocketApp.SendAll(msg);                                       // do things
            Debug.Log("send_stop");
        }

        if (GUILayout.Button("Restart"))        //整個專案重新開始
        {
            Debug.Log("Restart");
            SocketApp.TCP_clientList.Clear();
            Application.LoadLevel(Application.loadedLevel);
        }
        GUI.color = Color.white;

        GUILayout.Label("");
        GUILayout.Label("connected sensors: ");
        if (TCP_Handler.SID_List.Count > 0)
        {
            foreach (int ID in TCP_Handler.SID_List)
            {
                //Debug.Log("sensor ID: " + ID);
                sensornumber += ID.ToString();
                sensornumber += " ";
            }
            TCP_Handler.SID_List.Clear();
        }
        GUILayout.Label(sensornumber);                        //目前連線的sensor
        if (TCP_Handler.sensor_num_ID.Count > 0 && s == true) //activate後傳值的數量
        {
            foreach (int ID in TCP_Handler.sensor_num_ID)
            {
                Debug.Log("sensor ID: " + ID);
            }
        }
    }
Beispiel #18
0
    public static void ReceiveCallback(IAsyncResult ar)
    {
        String      Gimbal_content = String.Empty;
        String      content        = String.Empty;
        List <byte> data           = new List <byte>();

        double[] data_f = new double[9];
        double[] data_9axis = new double[9];
        double[] acc = new double[3];
        double[] gyr = new double[3];
        double[] mag = new double[3];
        int      deviceID, SN;

        // Retrieve the state object and the handler socket
        // from the asynchronous state object.
        StateObject state = (StateObject)ar.AsyncState;

        Socket handler = state.workSocket;



        try
        {
            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);


            if (bytesRead > 0)
            {
                for (int i = 0; i <= bytesRead - 27; i++)
                {
                    if (state.buffer[i] == 35 && state.buffer[i + 1] == 222 && state.buffer[i + 2] == 233 &&
                        state.buffer[i + 24] == 233 && state.buffer[i + 25] == 222 && state.buffer[i + 26] == 36)
                    {
                        //Get the data from packet
                        for (int index = i + 3; index <= i + 23; index++)
                        {
                            data.Add(state.buffer[index]);
                        }

                        if (!state.IDchecked)
                        {
                            deviceID = data[0];
                            SID_List.Add(deviceID);
                            sensor_num_ID.Add(deviceID);
                            state.IDchecked   = true;
                            Sensors[deviceID] = new IMU();
                            //System.Diagnostics.Debug.Print("idchecked");
                        }
                        else
                        {
                            count++;
                            //myForm.Invoke(new UpdateLableHandler(myForm.printRemsg), count.ToString());
                            //System.Diagnostics.Debug.Print("Thread ID: ");
                            //System.Diagnostics.Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString());

                            deviceID = data[0];    //packetData[3]

                            SN = (data[1] << 8 | data[2]);
                            //Gyro
                            gyr[0] = (short)(data[3] << 8 | data[4]);
                            gyr[1] = (short)(data[5] << 8 | data[6]);
                            gyr[2] = (short)(data[7] << 8 | data[8]);
                            //Acc
                            acc[0] = (short)(data[9] << 8 | data[10]);
                            acc[1] = (short)(data[11] << 8 | data[12]);
                            acc[2] = (short)(data[13] << 8 | data[14]);
                            //Mag
                            mag[0] = (short)(data[15] << 8 | data[16]);
                            mag[1] = (short)(data[17] << 8 | data[18]);
                            mag[2] = (short)(data[19] << 8 | data[20]);

                            // (""+ gyr[0]+" " +gyr[1]+" "+ gyr[2]);
                            // TCP_Handler.pitch = acc[0];
                            // TCP_Handler.roll = acc[1];
                            // TCP_Handler.yaw = acc[2];
                            double degree = 0;
                            double temp   = 0;
                            int    range  = 0;
                            if (count == 1)
                            {
                                Gimbaloffset_flag_Y = true;
                                Gimbaloffset_flag_R = true;
                                Gimbaloffset_flag_P = true;
                            }
                            switch (deviceID)   //看哪個sensor
                            {
                            case 11:            //yaw
                                temp  = acc[0]; //磁角值(原本是加速度值,但韌體封包改成是磁角值,因為磁角的值只有一個)
                                range = 1006;   //0`1006(理論上0~3.3V,值為0~1023,但可變電阻是人工的,無法精準,所以可能調到0~3.2V,值為0~1006,每顆都不一樣)
                                count_yaw++;
                                yaw_status = count_yaw;
                                if (Gimbaloffset_flag_Y)
                                {
                                    yawoffset           = temp / range * 360; //初始值
                                    Gimbaloffset_flag_Y = false;              //設立flag使他只讀一次
                                }
                                degree = temp / range * 360 - yawoffset;
                                if (degree >= 180)    //限制在-180~180度
                                {
                                    degree -= 360;
                                }
                                else if (degree < -180)
                                {
                                    degree += 360;
                                }
                                TCP_Handler.yaw = Math.Abs(degree) > 1 ? degree : 0;

                                break;

                            case 12:      //roll
                                temp  = acc[0];
                                range = 1013;
                                count_roll++;
                                roll_status = count_roll;
                                if (Gimbaloffset_flag_R)
                                {
                                    rolloffset          = temp / range * 360;
                                    Gimbaloffset_flag_R = false;
                                }
                                degree = temp / range * 360 - rolloffset;
                                if (degree >= 180)
                                {
                                    degree -= 360;
                                }
                                else if (degree < -180)
                                {
                                    degree += 360;
                                }
                                TCP_Handler.roll = Math.Abs(degree) > 1 ? degree : 0;
                                break;

                            case 13:      //pitch
                                temp  = acc[0];
                                range = 1005;
                                count_pitch++;
                                pitch_status = count_pitch;
                                if (Gimbaloffset_flag_P)
                                {
                                    pitchoffset         = temp / range * 360;
                                    Gimbaloffset_flag_P = false;
                                }
                                degree = temp / range * 360 - pitchoffset;
                                if (degree >= 180)
                                {
                                    degree -= 360;
                                }
                                else if (degree < -180)
                                {
                                    degree += 360;
                                }
                                TCP_Handler.pitch = Math.Abs(degree) > 1 ? degree : 0;
                                break;
                            }



                            //System.Diagnostics.Debug.Print(gyr[0].ToString() + " " + gyr[1].ToString() + " " + gyr[2].ToString());
                            //System.Diagnostics.Debug.Print(acc[0].ToString() + " " + acc[1].ToString() + " " + acc[2].ToString());
                            //System.Diagnostics.Debug.Print(mag[0].ToString() + " " + mag[1].ToString() + " " + mag[2].ToString());
                            //System.Diagnostics.Debug.Print("========");
                            //Raw data tranformation (calculate the ture value)

                            /*******************/
                            // n = mag.Length
                            // for (int i = 0 ;i< n;i++)
                            /*******************/

                            Sensors[deviceID].SN = SN;

                            //System.Diagnostics.Debug.Print("SN: " + SN.ToString());
                            // Write the data to file
                            //data_f = Sensors[deviceID].data_f;

                            //content += SN + "\t";
                            //content += deviceID + "\t";
                            Gimbal_content += SN + "\t";
                            Gimbal_content += deviceID + "\t";
                            Gimbal_content += degree + "\t";

                            //Debug.Print("my parameter G:{0},Q:{1},A:{2}", IMU.gyr_gf[0, 0], IMU.Q[0, 0], IMU.acc_gf[0, 0]);
                            string       filename = foldername + "Sensor" + deviceID.ToString() + ".txt";
                            StreamWriter sw       = new StreamWriter(filename, true);
                            sw.WriteLine(Gimbal_content);
                            sw.Close();
                        }
                    }
                    else
                    {
                        content        = "";
                        Gimbal_content = "";
                        //WritetoFile(content, 1);
                        data.Clear();
                    }
                }
                #region original method to get the data
                //for (int i = bytesRead - 1; i >= 26; i--)
                //    {
                //        //Decode the packet received from client
                //        if (state.buffer[i] == 36 && state.buffer[i - 1] == 222 && state.buffer[i - 2] == 233 &&
                //            state.buffer[i - 24] == 233 && state.buffer[i - 25] == 222 && state.buffer[i - 26] == 35)
                //        {
                //            //Get the data from packet
                //            for (int index = i - 23; index <= i - 3; index++)
                //                data.Add(state.buffer[index]);

                //            if (!state.IDchecked)
                //            {
                //                deviceID = data[0];
                //                MR_Term.SID_List.Add(deviceID);
                //                state.IDchecked = true;
                //                MR_Term.Sensors[deviceID] = new IMU();
                //                System.Diagnostics.Debug.Print("idchecked");
                //            }
                //            else
                //            {

                //                count++;
                //                //myForm.Invoke(new UpdateLableHandler(myForm.printRemsg), count.ToString());
                //                //System.Diagnostics.Debug.Print("Thread ID: ");
                //                //System.Diagnostics.Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString());

                //                deviceID = data[0];
                //                SN = (data[1] << 8 | data[2]);
                //                //Gyro
                //                gyr[0] = (short)(data[3] << 8 | data[4]);
                //                gyr[1] = (short)(data[5] << 8 | data[6]);
                //                gyr[2] = (short)(data[7] << 8 | data[8]);
                //                //Acc
                //                acc[0] = (short)(data[9] << 8 | data[10]);
                //                acc[1] = (short)(data[11] << 8 | data[12]);
                //                acc[2] = (short)(data[13] << 8 | data[14]);
                //                //Mag
                //                mag[0] = (short)(data[15] << 8 | data[16]);
                //                mag[1] = (short)(data[17] << 8 | data[18]);
                //                mag[2] = (short)(data[19] << 8 | data[20]);

                //                //Raw data tranformation (calculate the ture value)
                //                for (int n = 0; n < 3; n++)
                //                {
                //                    acc[n] = MR_Term.Sensors[deviceID].calcAcc(acc[n]);
                //                    gyr[n] = MR_Term.Sensors[deviceID].calcGyro(gyr[n]);
                //                    mag[n] = MR_Term.Sensors[deviceID].calcMag(mag[n]);
                //                }

                //                for (int n = 0; n < 3; n++)
                //                {
                //                    MR_Term.Sensors[deviceID].data_9axis[n] = acc[n];
                //                    MR_Term.Sensors[deviceID].data_9axis[n + 3] = gyr[n];
                //                    MR_Term.Sensors[deviceID].data_9axis[n + 6] = mag[n];
                //                }


                //                ++MR_Term.Sensors[deviceID].indexInChart;
                //                MR_Term.Sensors[deviceID].SN = SN;
                //                MR_Term.Sensors[deviceID].data_f = MR_Term.Sensors[deviceID].MovingAverage_life(acc, gyr, mag);

                //                switch (MR_Term.Mode)
                //                {
                //                    case MR_Term.Operation_Mode.M_Demo:
                //                        //====================Demo Mode==========================
                //                        #region Demo mode
                //                        if (MR_Term.Sensors[deviceID].indexInChart < 10)
                //                        {
                //                            for (int t = 0; t < 9; t++)
                //                                MR_Term.Sensors[deviceID].data4IniAtt[t].Add(MR_Term.Sensors[deviceID].data_f[t]);
                //                            System.Diagnostics.Debug.Print("Att1");
                //                        }
                //                        else if (MR_Term.Sensors[deviceID].indexInChart == 10)
                //                        {
                //                            for (int t = 0; t < 9; t++)
                //                                MR_Term.Sensors[deviceID].DataAve[t] = IMU.mean(MR_Term.Sensors[deviceID].data4IniAtt[t]);

                //                            MR_Term.Sensors[deviceID].q = MR_Term.Sensors[deviceID].initial_attitude(MR_Term.Sensors[deviceID].DataAve);
                //                            MR_Term.Sensors[deviceID].mag_ref[0] = MR_Term.Sensors[deviceID].DataAve[6];
                //                            MR_Term.Sensors[deviceID].mag_ref[1] = MR_Term.Sensors[deviceID].DataAve[7];
                //                            MR_Term.Sensors[deviceID].mag_ref[2] = MR_Term.Sensors[deviceID].DataAve[8];
                //                            //System.Diagnostics.Debug.Print(MR_Term.Sensors[deviceID].q[0].ToString() + " " + MR_Term.Sensors[deviceID].q[1].ToString() + " " + MR_Term.Sensors[deviceID].q[2].ToString() + " " + MR_Term.Sensors[deviceID].q[3].ToString());
                //                            //System.Diagnostics.Debug.Print("Att2");


                //                        }
                //                        else
                //                        {
                //                            MR_Term.Sensors[deviceID].q = MR_Term.Sensors[deviceID].EKF_cal(MR_Term.Sensors[deviceID].data_f, 0.02);
                //                            MR_Term.Sensors[deviceID].eul = MR_Term.Sensors[deviceID].getEular(MR_Term.Sensors[deviceID].q);
                //                            MR_Term.Sensors[deviceID].q_out = MR_Term.Sensors[deviceID].getQout(MR_Term.Sensors[deviceID].eul);

                //                            //MR_Term.Sensors[deviceID].eul = MR_Term.Sensors[deviceID].qua2eul(MR_Term.Sensors[deviceID].q);
                //                            //System.Diagnostics.Debug.Print(deviceID.ToString() + ": " + MR_Term.Sensors[deviceID].eul[0].ToString() + " " + MR_Term.Sensors[deviceID].eul[1].ToString() + " " + MR_Term.Sensors[deviceID].eul[2].ToString());
                //                            //System.Diagnostics.Debug.Print("Att3");
                //                        }
                //                        #endregion

                //                        break;
                //                    case MR_Term.Operation_Mode.M_Record:
                //                        //====================Record Mode==========================
                //                        #region Record Mode

                //                        #endregion
                //                        break;
                //                    case MR_Term.Operation_Mode.M_Calibartion:
                //                        //====================Calibration Mode==========================
                //                        #region

                //                        #endregion
                //                        break;
                //                }


                //                //StopTime = DateTime.Now;
                //                //ts = StopTime - StartTime;
                //                //myForm.Invoke(new UpdateLableHandler(myForm.printTime), ts.ToString());
                //                if (deviceID == MR_Term.n_SID)
                //                    MR_Term.isGet = true;

                //                // Write the data to file
                //                data_f = MR_Term.Sensors[deviceID].data_f;
                //                content += SN + "\t";
                //                content += deviceID + "\t";

                //                foreach (double d in data_f)
                //                {
                //                    content += Math.Round(d, 4) + "\t";
                //                }
                //                foreach (double e in MR_Term.Sensors[deviceID].eul)
                //                {
                //                    content += Math.Round(e, 2) + "\t";
                //                }

                //                string filename = foldername + "tdata" + deviceID.ToString() + ".txt";
                //                StreamWriter sw = new StreamWriter(filename, true);
                //                sw.WriteLine(content);

                //                sw.Close();
                //            }
                //        }
                //        else
                //        {
                //            content = "";
                //            //WritetoFile(content, 1);
                //            data.Clear();
                //        }
                //    }
                #endregion
                #region another receive method
                //for (int i = 0; i < bytesRead; i++)
                //{
                //    switch(state.buffer[i])
                //    {
                //        case 35:    //'#'
                //            start_flag = true;
                //            break;
                //        case 36:    //'$'
                //            count++;
                //            if (start_flag == true && data.Count == 21)
                //            {
                //                deviceID = data[0];
                //                SN = (short)(data[1] << 8 | data[2]);
                //                Acc_x = (short)(data[3] << 8 | data[4]);
                //                Acc_y = (short)(data[5] << 8 | data[6]);
                //                Acc_z = (short)(data[7] << 8 | data[8]);
                //                Gyro_x = (short)(data[9] << 8 | data[10]);
                //                Gyro_y = (short)(data[11] << 8 | data[12]);
                //                Gyro_z = (short)(data[13] << 8 | data[14]);
                //                Mag_x = (short)(data[15] << 8 | data[16]);
                //                Mag_y = (short)(data[17] << 8 | data[18]);
                //                Mag_z = (short)(data[19] << 8 | data[20]);
                //                content = deviceID + "\t" + SN + "\t" + Acc_x + "\t" + Acc_y + "\t" + Acc_z + "\t" + Gyro_x + "\t" +
                //                          Gyro_y + "\t" + Gyro_z + "\t" + Mag_x + "\t" + Mag_y + "\t" + Mag_z;

                //                //WritetoFile(content, deviceID);
                //                string filename = foldername + "tdata" + deviceID.ToString() + ".txt";
                //                StreamWriter sww = new StreamWriter(filename, true);
                //                sww.WriteLine(content);
                //                //sww.Flush();
                //                sww.Close();
                //            }
                //            else
                //            {
                //                start_flag = false;
                //                content = "";
                //                //WritetoFile(content);
                //                data.Clear();
                //            }
                //            myForm.Invoke( new UpdateLableHandler(myForm.printRemsg), count.ToString() );
                //            break;
                //        default:
                //            if (start_flag == true)
                //                data.Add(state.buffer[i]);
                //            break;
                //    }
                //}
                #endregion
            }
            //continue to receive next data
            if (SocketApp.isRun)
            {
                handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                     out state.errorcode, new AsyncCallback(ReceiveCallback), state);
            }
        }
        catch (ObjectDisposedException e)
        {
            //MessageBox.Show(e.ToString());
            //do nothing
        }
        catch (SocketException e)
        {
            if (SocketApp.isRun)
            {
                SocketApp.removeClient(handler.RemoteEndPoint);
                showClientName();
            }
            handler.Disconnect(true);
            //handler.Shutdown(SocketShutdown.Both);
            //handler.Close();
        }
        finally
        {
        }
    }