LusoRobótica - Robótica em Português

Robótica => Discussão geral sobre robótica => Tópico iniciado por: Wolfz em 01 de Agosto de 2012, 17:07

Título: Duvida sobre ciclo
Enviado por: Wolfz em 01 de Agosto de 2012, 17:07
Boas pessoal, estou a elaborar um programa para o arduino, porem esse programa é "muito grande" pois eu utilizo varias vezes uma determinada parte do código.

Primeiro pensei em fazer uma espécie de ciclo onde o chamava cada vez que quisesse executar aquela parte do código, o meu problema é que preciso de enviar enviar informação pela Ethernet logo preciso de "abrir a porta" em todos os ciclos o que acabava por não diminuir o código.

Depois pensei em criar uma variável do tipo String onde lhe atribua "a parte do código" que preciso, mas também não funciona.

Alguma diga?

Cumprimentos,
Wolfz
Título: Re: Duvida sobre ciclo
Enviado por: senso em 01 de Agosto de 2012, 17:12
Usar funções, é para isso que as funções existem, para chamar pedaços de código repetitivo ao longo de um programa.
Título: Re: Duvida sobre ciclo
Enviado por: Wolfz em 01 de Agosto de 2012, 17:42
Devo estar a perceber mal. Qual a função que devo usar?
Título: Re: Duvida sobre ciclo
Enviado por: Marvin em 01 de Agosto de 2012, 17:45
Deves de criar a tua propria função a qual irás chamar ao longo do codigo, para não repetires constantemente todas as instruções que tens de fazer.
Título: Re: Duvida sobre ciclo
Enviado por: senso em 01 de Agosto de 2012, 17:45
Crias uma função com o teu código, presumo que não tenhas qualquer experiencia de programação, certo?
Título: Re: Duvida sobre ciclo
Enviado por: Wolfz em 01 de Agosto de 2012, 18:13
Ahhh!!! Lol, já percebi. Eu é que me expliquei mal xD
O que eu criei não foi ciclos xD foi mesmo função. Confundi-me.

O problema é que em todas as funções tenho que colocar esta linha de código e isso faz com não poupe espaço nenhum:
Código: [Seleccione]
EthernetClient client = server.available();

  if (client) {

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    String vars;
    boolean sentHeader = false;

    while (client.connected()) {
      if (client.available()) {

        if(!sentHeader){
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }

        char c = client.read();
        vars.concat(c);
        Serial.println(vars);
Título: Re: Duvida sobre ciclo
Enviado por: senso em 01 de Agosto de 2012, 18:16
Mete esse código dentro de uma função então.
Título: Re: Duvida sobre ciclo
Enviado por: Kcidade em 14 de Agosto de 2012, 18:27
Boas, eu ando com uma duvida do genero. eu queria fazer uma funçao do genero:


Código: [Seleccione]
void checkForClient(){
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        if(!sentHeader){
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }
        char c = client.read();
        vars.concat(c);
           
            //  Login 
            if(vars.endsWith("\n")){
              client.println();
              client.println("<img src='http://alojaimagens.com/images/f7sb151hmcjjahyupaz0.jpg' style=\"position:fixed;left:3px;top:3px;width:397px;height:361px;z-index:1;padding:0;\">");
              client.println("<form method=get name=LED>");
              client.println("<input type=text name=C  style=\"position:fixed;left:39px;top:170px;width:313px;height:28px;z-index:1;padding:0;\">");
              client.println("<input type=""password"" name=C  style=\"position:fixed;left:39px;top:231px;width:313px;height:28px;z-index:1;padding:0;\">");
              client.println("<input type=submit value=submit style=\"position:fixed;left:250px;top:300px;width:118px;height:29px;z-index:1;padding:0;\"></form>");
              delay(1);
              client.stop();}
      }
    }
  }
}

Basicamente queria em vez de por a parte do login dentro de um ciclo mas para isso preciso do codigo anterior.

Alguma sugestão?