public Robo(string id, IVisao <Img, VtoERobo, PlaceToDraw> visao, IEstrategia <VtoERobo, EtoCRobo, VtoEBola, VtoECampo> estrategia, IComunicacao <EtoCRobo> comunicacao) { this.id = id; infoEstrat = default(VtoERobo); infoExped = default(EtoCRobo); this.visao = visao; this.estrategia = estrategia; this.comunicacao = comunicacao; }
public void defineCustomRobo( string id, IVisao <Bitmap, InfoVtoERobo, PictureBox> visao, IEstrategia <InfoVtoERobo, InfoEtoCRobo, InfoVtoEBola, InfoVtoECampo> estrategia, IComunicacao <InfoEtoCRobo> comunicacao, ref PictureBox placeToDraw) { //visao.defineLugarDesenho(ref placeToDraw); controle.defineRobo(id, visao, estrategia, comunicacao); if (placeToDraw != null) { controle.defineLugarDesenhoRobo(id, ref placeToDraw); } }
public static string EnviaDados(IComunicacao Mensagem, string IP, int Porta = 27525) { TcpClient clientSocket = new TcpClient(); clientSocket.ReceiveBufferSize = 1000; clientSocket.Connect(IP, Porta); string ObjetoSerializado = ConverterObjeto.SerializaObjeto(Mensagem); NetworkStream serverStream = clientSocket.GetStream(); byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ObjetoSerializado); serverStream.Write(outStream, 0, outStream.Length); serverStream.Flush(); byte[] inStream = new byte[1000]; serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize); string returndata = System.Text.Encoding.ASCII.GetString(inStream); returndata = returndata.Substring(0, returndata.IndexOf("\0")); clientSocket.Close(); return(returndata); }
/// <summary> /// Cria um novo robô/Atualiza suas propriedades, também chama o método de conexão para estabelece-la /// </summary> /// <param name="id">Identificador único do robô</param> /// <param name="visao">Classe que processa Imagem</param> /// <param name="estrategia">Processa Estratégia</param> /// <param name="comunicacao">Comunicação sem fio</param> public void defineRobo( string id, IVisao <Img, VtoERobo, PlaceToDraw> visao, IEstrategia <VtoERobo, EtoCRobo, VtoEBola, VtoECampo> estrategia, IComunicacao <EtoCRobo> comunicacao) { foreach (var x in robos) { if (x.Value.Visao == visao || x.Value.Comunicacao == comunicacao || x.Value.Estrategia == estrategia) { throw new Exception("Componentes de Visão, Estratégia e Expedidor devem ser Instâncias Distintas"); } } var robo = new Robo <Img, VtoERobo, EtoCRobo, VtoEBola, VtoECampo, PlaceToDraw>(id, visao, estrategia, comunicacao); lock (robos) if (robos.ContainsKey(id)) { if (visao != null) { robos[id].Visao = visao; } if (estrategia != null) { robos[id].Estrategia = estrategia; } if (comunicacao != null) { robos[id].Comunicacao.desconectar(); robos[id].Comunicacao = comunicacao; robos[id].Comunicacao.conectar(); } } else { robos.Add(id, robo); robos[id].Comunicacao.conectar(); } }