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
-
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
-
Usar funções, é para isso que as funções existem, para chamar pedaços de código repetitivo ao longo de um programa.
-
Devo estar a perceber mal. Qual a função que devo usar?
-
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.
-
Crias uma função com o teu código, presumo que não tenhas qualquer experiencia de programação, certo?
-
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:
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);
-
Mete esse código dentro de uma função então.
-
Boas, eu ando com uma duvida do genero. eu queria fazer uma funçao do genero:
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?