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)); }
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); } }
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(); } }
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); } }
public void AttachSocket(SocketApp socket) { if (!this.listSocketApp.Contains(socket)) { this.listSocketApp.Add(socket); } }
//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); } }
public void DettachSocket(SocketApp socket) { if (this.listSocketApp.Contains(socket)) { this.listSocketApp.Remove(socket); } }
public void OFF()//關閉連線(OFF) { Debug.Log("TSB_Stop"); string msg = "#stop$"; SocketApp.SendAll(msg);// do things Debug.Log("send_stop"); stop = true; }
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); }
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)); }
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 { } } }
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); }
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()); } }
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); } }
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); }
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"); }
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); } } }
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 { } }