Como desmontar uma String? - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T11:27:28Zhttps://labdegaragem.com/forum/topics/como-desmontar-uma-string?commentId=6223006%3AComment%3A613123&x=1&feed=yes&xn_auth=noES, no txt tem somente horas…tag:labdegaragem.com,2017-05-19:6223006:Comment:6131232017-05-19T21:41:13.811ZMarcio A. Pinheirohttps://labdegaragem.com/profile/MarcioAPinheiro
<p>ES, no txt tem somente horas no seguinte formato:<br/>01:00</p>
<p>02:00</p>
<p>03:00</p>
<p>...</p>
<p>e assim por diante.</p>
<p>Queria que ficasse assim:</p>
<p>hora_1 = 01:00</p>
<p>hora_2 = 02:00</p>
<p> e assim por diante, para poder comparar por exemplo</p>
<p>se hora_1 for == hora atual então dispara uma ação.</p>
<p>ES, no txt tem somente horas no seguinte formato:<br/>01:00</p>
<p>02:00</p>
<p>03:00</p>
<p>...</p>
<p>e assim por diante.</p>
<p>Queria que ficasse assim:</p>
<p>hora_1 = 01:00</p>
<p>hora_2 = 02:00</p>
<p> e assim por diante, para poder comparar por exemplo</p>
<p>se hora_1 for == hora atual então dispara uma ação.</p> MAP,
tudo bem?
No arquivo tx…tag:labdegaragem.com,2017-05-19:6223006:Comment:6131212017-05-19T21:33:50.801ZEdson E.S. (softelli)https://labdegaragem.com/profile/EdsonES
<p>MAP,</p>
<p>tudo bem?</p>
<p></p>
<p>No arquivo txt, há somente horas? (ou outros registros?)</p>
<p>um ou mais registros de horas?</p>
<p>no caso de vários registros, estão armazenados por linha?</p>
<p>qual o padrão/formato (Ex hh:mm:ss ou hh:mm, etc)</p>
<p></p>
<p>Acredito que vc possa colocar aqui um print do txt armazenado no cartão e das linhas da função que vc está utilizando para recuperá-lo.</p>
<p></p>
<p></p>
<p>MAP,</p>
<p>tudo bem?</p>
<p></p>
<p>No arquivo txt, há somente horas? (ou outros registros?)</p>
<p>um ou mais registros de horas?</p>
<p>no caso de vários registros, estão armazenados por linha?</p>
<p>qual o padrão/formato (Ex hh:mm:ss ou hh:mm, etc)</p>
<p></p>
<p>Acredito que vc possa colocar aqui um print do txt armazenado no cartão e das linhas da função que vc está utilizando para recuperá-lo.</p>
<p></p>
<p></p> Olá ES, como vai?
Cara precis…tag:labdegaragem.com,2017-05-19:6223006:Comment:6130352017-05-19T21:20:51.046ZMarcio A. Pinheirohttps://labdegaragem.com/profile/MarcioAPinheiro
<p>Olá ES, como vai?</p>
<p>Cara preciso algo parecido com isso mas não está dando certo.</p>
<p>Eu estou consultando um banco de dados onde tem horas cadastradas, pego esse resultado e armazeno em um cartão SD, apos isso eu precisaria interpretar essas horas no arduino. Então eu leio um arquivo txt no cartão, mas para comparar as horas que estão no cartao, preciso quebrar essa string e montar em uma variável do tipo Array para poder comparar, não estou conseguindo quebrar isso e depois…</p>
<p>Olá ES, como vai?</p>
<p>Cara preciso algo parecido com isso mas não está dando certo.</p>
<p>Eu estou consultando um banco de dados onde tem horas cadastradas, pego esse resultado e armazeno em um cartão SD, apos isso eu precisaria interpretar essas horas no arduino. Então eu leio um arquivo txt no cartão, mas para comparar as horas que estão no cartao, preciso quebrar essa string e montar em uma variável do tipo Array para poder comparar, não estou conseguindo quebrar isso e depois comparar.</p>
<p>Não sei se me entendeu direito, mas gostaria de sua ajuda!</p>
<p>Dês de já agradeço!</p> Algum progresso?tag:labdegaragem.com,2012-11-24:6223006:Comment:1855962012-11-24T12:18:24.854ZEdson E.S. (softelli)https://labdegaragem.com/profile/EdsonES
<p>Algum progresso?</p>
<p>Algum progresso?</p> Vou tentar realizar um vídeo …tag:labdegaragem.com,2012-11-23:6223006:Comment:1854542012-11-23T12:06:00.994ZLucas Fonsecahttps://labdegaragem.com/profile/LucasFoseca
<p>Vou tentar realizar um vídeo pois desta for vai ajudar outros garagistas que estejam com duvidas semelhantes.</p>
<p><br/>Hoje eu estou livre para o <span>"toma lá da cá" lá pelas 22h.<br/><br/>Att</span></p>
<p>Vou tentar realizar um vídeo pois desta for vai ajudar outros garagistas que estejam com duvidas semelhantes.</p>
<p><br/>Hoje eu estou livre para o <span>"toma lá da cá" lá pelas 22h.<br/><br/>Att</span></p> Problemas, Lucas.
1 - Não ten…tag:labdegaragem.com,2012-11-22:6223006:Comment:1854322012-11-22T22:44:37.416ZEdson E.S. (softelli)https://labdegaragem.com/profile/EdsonES
<p>Problemas, Lucas.</p>
<p>1 - Não tenho o LCD pra debugar seu código;</p>
<p>2 - O VirtualBreadBoard não está ajudando muito.</p>
<p></p>
<p>Entretanto, recomendo que faça duas coisas:</p>
<p>1a - Rode o programa com a a função "anima_display()" desativada (comenta a chamada dela que está dentro do "void loop()") ou </p>
<p>1b- dê um lcd.Clear();</p>
<p>2 -Dê uma somada nos seus "delay()".</p>
<p></p>
<p>Temos que combinar uma hora para um "toma lá da cá", talvez amanhã por volta de…</p>
<p>Problemas, Lucas.</p>
<p>1 - Não tenho o LCD pra debugar seu código;</p>
<p>2 - O VirtualBreadBoard não está ajudando muito.</p>
<p></p>
<p>Entretanto, recomendo que faça duas coisas:</p>
<p>1a - Rode o programa com a a função "anima_display()" desativada (comenta a chamada dela que está dentro do "void loop()") ou </p>
<p>1b- dê um lcd.Clear();</p>
<p>2 -Dê uma somada nos seus "delay()".</p>
<p></p>
<p>Temos que combinar uma hora para um "toma lá da cá", talvez amanhã por volta de 20hs.</p>
<p></p>
<p>Se eu tiver sucesso no VBB eu posto aqui... mas covenhamos que seu código é extenso... vamos refatorá-lo! rsrsrsr</p>
<p></p>
<p>Qualquer coisa, me dá um toque no facebook: softelli@click21.com.br</p>
<p></p> Porem esta dano um errinho e…tag:labdegaragem.com,2012-11-22:6223006:Comment:1851712012-11-22T17:44:19.017ZLucas Fonsecahttps://labdegaragem.com/profile/LucasFoseca
<p>Porem esta dano um errinho e to perdidinho pra achar onde esta o bug.</p>
<p>Eu envio #ID10#;27,90;94073;622;636;49,50;29,10;00/00/2012;10:22:48;1000; a cada 20 segundo.</p>
<p></p>
<p>*Conectado #ID10#<br></br>Temperatura 27,90<br></br>Pressao Atm 94073<br></br>Altitude 622<br></br>Altitude Real 636<br></br>UR 49,50<br></br>Temp AR 29,10<br></br>Data 00/00/2012<br></br>Hora 10:22:48<br></br>Sample Rate 1000</p>
<p>+ 27,9// Eco<br></br>*Conectado #ID10#<br></br>Temperatura 27,90<br></br>Pressao Atm 94073<br></br>Altitude 622<br></br>Altitude Real…</p>
<p>Porem esta dano um errinho e to perdidinho pra achar onde esta o bug.</p>
<p>Eu envio #ID10#;27,90;94073;622;636;49,50;29,10;00/00/2012;10:22:48;1000; a cada 20 segundo.</p>
<p></p>
<p>*Conectado #ID10#<br/>Temperatura 27,90<br/>Pressao Atm 94073<br/>Altitude 622<br/>Altitude Real 636<br/>UR 49,50<br/>Temp AR 29,10<br/>Data 00/00/2012<br/>Hora 10:22:48<br/>Sample Rate 1000</p>
<p>+ 27,9// Eco<br/>*Conectado #ID10#<br/>Temperatura 27,90<br/>Pressao Atm 94073<br/>Altitude 622<br/>Altitude Real 636<br/>UR 49,50<br/>Temp AR 29,10<br/>Data 00/00/2012<br/>Hora 10:22:48<br/>Sample Rate 1000<br/>Rate 1000 <strong>// Eco</strong><br/>10 27,// Eco</p>
<p>Sera que isso é referente ao delay para limpar a serial?</p>
<p><br/>Att</p>
<p></p> Olá, amigo.Muito obrigado pel…tag:labdegaragem.com,2012-11-22:6223006:Comment:1854042012-11-22T17:36:37.047ZLucas Fonsecahttps://labdegaragem.com/profile/LucasFoseca
<p>Olá, amigo.<br></br><br></br>Muito obrigado pela ajuda Segue o código adaptado para minha aplicação. <br></br><br></br></p>
<p>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br></br> //…</p>
<p>Olá, amigo.<br/><br/>Muito obrigado pela ajuda Segue o código adaptado para minha aplicação. <br/><br/></p>
<p>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br/> //<a href="http://labdegaragem.com/forum/topics/como-desmontar-uma-string?commentId=6223006%3AComment%3A180041&xg_source=msg_com_forum" target="_blank">http://labdegaragem.com/forum/topics/como-desmontar-uma-string?commentId=6223006%3AComment%3A180041&xg_source=msg_com_forum</a><br/> //by Edson E. Silva - softelli@gmail.com 08/11/12<br/> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br/> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br/> //Em desenvolvimento 09/11/12 a ...<br/> //by Lucas Fonseca - eletronicalmtec@gmail.com 08/11/12<br/> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br/> <br/> <br/> //Nova String<br/> //#ID10#;27,90;94073;622;636;49,50;29,10;00/00/2012;10:22:48;1000;<br/> // 60 caracteres</p>
<p>/*<br/> #define STATE<br/> #define VALOR_0<br/> #define VALOR_1<br/> #define VALOR_2<br/> #define VALOR_3<br/> #define VALOR_4<br/> #define VALOR_5<br/> #define VALOR_6<br/> #define VALOR_7<br/> #define VALOR_8<br/> #define VALOR_9<br/>*/ <br/> <br/> <br/> //esse código é do receptor:<br/> int str_valor;<br/> int str_dados;<br/> String new_str[10]; //array de 7 posições<br/> String tempString; //temporario<br/> char a; //para armazenar o caracter da serial<br/> String gardaserial;<br/> <br/> String listdados[10]={<br/> "*Conectado", <br/> "Temperatura ",<br/> "Pressao Atm", <br/> "Altitude", <br/> "Altitude Real", <br/> "UR", <br/> "Temp AR", <br/> "Data",<br/> "Hora",<br/> "Sample Rate"<br/> };<br/> /* <br/> char* listunidade[]={<br/> (char*)223, //º <br/> "C",<br/> "Pa", <br/> "Metros", <br/> "Metros", <br/> "%", <br/> "*C", <br/> "Data",<br/> "Hora",<br/> "Mili(s)"<br/> };<br/> <br/> char* params [] ={<br/> "###",<br/> <br/> */<br/> <br/> #include <LiquidCrystal.h><br/> LiquidCrystal lcd(7,6 , 5, 4, 3, 2);<br/> <br/> //#include <NewSoftSerial.h><br/> ///NewSoftSerial UbeeSerial(10,11);<br/> <br/> //#include <Wire.h><br/> //unsigned long time;<br/> <br/> <br/> void setup()<br/> {<br/> <br/> lcd.begin(16, 2);<br/> lcd.setCursor(0, 0);<br/> lcd.print("Terminal Remoto");<br/> lcd.setCursor(2, 1);<br/> lcd.print("Ubee Conexao");<br/> delay(1000);<br/> lcd.clear();<br/> <br/> <br/> Serial.begin(19200);<br/> // pinMode(13, OUTPUT);</p>
<p>}<br/> <br/> <br/> // int contador = 0;<br/> //int state;<br/> int sample_rate = 600;</p>
<p><br/> <br/> void loop(){<br/> <br/> <br/> anima_display();<br/> if (Serial.available()) {<br/> // wait a bit for the entire message to arrive<br/> delay(100);<br/> lcd.clear();<br/> <br/> while (Serial.available() > 0) {<br/> decoder();<br/> <br/> //delay(500);<br/> //telas();<br/> <br/> }<br/> }<br/>}<br/> <br/> <br/> <br/> void telas()<br/> {<br/> <br/> //delay(2000); // Para dar tempo de ler a porta serial<br/> decoder_0();<br/> delay(sample_rate);<br/> decoder_1();<br/> delay(sample_rate);<br/> decoder_2();<br/> delay(sample_rate);<br/> decoder_3();<br/> delay(sample_rate);<br/> decoder_4();<br/> delay(sample_rate);<br/> decoder_5();<br/> decoder_6();<br/> delay(sample_rate);<br/> decoder_7();<br/> delay(sample_rate);<br/> decoder_8();<br/> delay(sample_rate);<br/> decoder_9();<br/> delay(sample_rate);<br/> }<br/> <br/> <br/> <br/> <br/> <br/> /* void conta()<br/> { <br/> <br/> time = millis()/1000;<br/> //lcd.print(time);<br/> Serial.print(time);<br/> Serial.print(": ");<br/> }<br/> */ <br/> // Conectato<br/> void decoder_0()<br/> {<br/> <br/> lcd.clear();<br/> lcd.setCursor(4,0);<br/> lcd.print(new_str[0]);<br/> lcd.setCursor(3,1);<br/> lcd.print(listdados[0]);<br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Temperatura <br/> void decoder_1()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(2,0);<br/> lcd.print(listdados[1]);<br/> lcd.setCursor(3,1);<br/> lcd.print(new_str[1]);<br/> lcd.setCursor(11,1);<br/> lcd.print((char)223); // Faz o simbolo de Graus<br/> lcd.print("C");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Pressão Atm<br/> void decoder_2()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(2,0);<br/> lcd.print(listdados[2]);<br/> lcd.setCursor(2,1);<br/> lcd.print(new_str[2]);<br/> lcd.setCursor(11,1);<br/> lcd.print("Pa");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Altitude <br/> void decoder_3()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(4,0);<br/> lcd.print(listdados[3]);<br/> lcd.setCursor(3,1);<br/> lcd.print(new_str[3]);<br/> lcd.setCursor(8,1);<br/> lcd.print("Metros");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Altitude Real <br/> void decoder_4()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(1,0);<br/> lcd.print(listdados[4]);<br/> lcd.setCursor(3,1);<br/> lcd.print(new_str[4]);<br/> lcd.setCursor(8,1);<br/> lcd.print("Metros");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Umidade Relativa UR <br/> void decoder_5()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(3,0);<br/> lcd.print(listdados[5]);<br/> lcd.setCursor(0,1);<br/> lcd.print(new_str[5]);<br/> lcd.setCursor(6,1);<br/> lcd.print("%");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Temperatura do AR <br/> void decoder_6()<br/> {<br/> lcd.setCursor(8,0);<br/> lcd.print(listdados[6]);<br/> lcd.setCursor(8,1);<br/> lcd.print(new_str[6]);<br/> lcd.setCursor(13,1);<br/> lcd.print((char)223); // Faz o simbolo de Graus<br/> lcd.print("C");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Data <br/> void decoder_7()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(6,0);<br/> lcd.print(listdados[7]);<br/> lcd.setCursor(2,1);<br/> lcd.print(new_str[7]);<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Hora <br/> void decoder_8()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(6,0);<br/> lcd.print(listdados[8]);<br/> lcd.setCursor(3,1);<br/> lcd.print(new_str[8]);<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> // Sample rate<br/> void decoder_9()<br/> {<br/> lcd.clear();<br/> lcd.setCursor(2,0);<br/> lcd.print(listdados[9]);<br/> lcd.setCursor(1,1);<br/> lcd.print(new_str[9]);<br/> lcd.setCursor(9,1);<br/> lcd.print("Mili(s)");<br/> <br/> }<br/> ////////////////////////////////////////////////////////////////<br/> <br/> <br/> <br/> <br/> void decoder()<br/> {<br/> str_valor = 0;<br/> str_dados = 0;<br/> <br/> lcd.setCursor(7,0);<br/> lcd.print("OK"); <br/> delay(500);<br/> telas();<br/> lcd.clear(); <br/> while(Serial.available() > 0)<br/> <br/> {<br/> /*<br/> lcd.clear();<br/> lcd.setCursor(2,0);<br/> lcd.print("Atualizando");<br/> lcd.setCursor(5,1);<br/> lcd.print("Dados");<br/> */<br/> delay(50); //coloquei um retardo porque estava sujando minha serial<br/> tempString = " "; //Um espaço para esvaziar a string.<br/> while(true)<br/> {<br/> a = Serial.read(); //leia um caractere <br/> <br/> <br/> // falta adicionar um verificado de inicio e fim ### 23.1;25;34.6;100;1;0.5;3.765; ***<br/> <br/> if (a == ';') break ;//ser for ponto-e-virgula, sai do while<br/> else(tempString += a); //senao, adiciona na string temporaria<br/> <br/> }<br/> <br/> <br/> new_str[str_dados] = tempString; //armazeno no array de strings, se for necessario utilizar adiante<br/> <br/> Serial.println((listdados[str_dados]) + new_str[str_valor]); // mostra esse conteúdo na Serial para verificação, somente.<br/> <br/> str_dados++; //incremento o contador DADOS<br/> str_valor++; //incremento o contador VALOR<br/> //depois disso, é só capturar os valores dos índices 0 a 6 de new_str[] e convertê-lo em int, long ou float.<br/> //////////////////////////////////////////////////////////////////////////////////////////////////////////////<br/> }<br/> <br/> }<br/> <br/> <br/> void anima_display()<br/> { <br/> lcd.clear(); <br/> lcd.setCursor(3,0);<br/> lcd.print("Aguardando");<br/> lcd.setCursor(0, 1);<br/> lcd.print("((( Sinal )))");<br/> {<br/> delay(500);<br/> for (int positionCounter = 0; positionCounter < 5; positionCounter++) {<br/> lcd.scrollDisplayLeft(); <br/> delay(100);<br/> }<br/> for (int positionCounter = 0; positionCounter < 13; positionCounter++) {<br/> lcd.scrollDisplayRight(); <br/> delay(100);<br/> }<br/> for (int positionCounter = 0; positionCounter < 8; positionCounter++) {<br/> lcd.scrollDisplayLeft(); <br/> delay(100);<br/> } <br/> //delay(2500);<br/> }<br/> <br/> }</p> Desculpe a demora, Lucas.
O t…tag:labdegaragem.com,2012-11-10:6223006:Comment:1800412012-11-10T02:14:05.850ZEdson E.S. (softelli)https://labdegaragem.com/profile/EdsonES
<p>Desculpe a demora, Lucas.</p>
<p>O tempo tá escasso... segue um código que vai listar os valores recebidos</p>
<p>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p>
<p>#include <Serial.h><br></br>//by Edson E. Silva - softelli@gmail.com<br></br>//cole a linha abaixo no seu serial, <br></br>//como se tivesse sido transmitido pelo microcontrolador dos sensores<br></br>//23.1;25;34.6;100;1;0.5;3.765;<br></br><br></br>//esse código é do…</p>
<p>Desculpe a demora, Lucas.</p>
<p>O tempo tá escasso... segue um código que vai listar os valores recebidos</p>
<p>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p>
<p>#include <Serial.h><br/>//by Edson E. Silva - softelli@gmail.com<br/>//cole a linha abaixo no seu serial, <br/>//como se tivesse sido transmitido pelo microcontrolador dos sensores<br/>//23.1;25;34.6;100;1;0.5;3.765;<br/><br/>//esse código é do receptor:<br/>int index;<br/>String new_str[7]; //array de 7 posições<br/>String tempString; //temporario<br/>char a; //para armazenar o caracter da serial<br/><br/>void setup(){<br/> Serial.begin(9600);<br/>}<br/>void loop(){<br/> index = 0;<br/> while(Serial.available()){<br/> delay(100); //coloquei um retardo porque estava sujando minha serial<br/> tempString = " "; //Um espaço para esvaziar a string.<br/> while(true){<br/> a = Serial.read(); //leia um caractere<br/> if(a == ';') break; //ser for ponto-e-virgula, sai do while<br/> else tempString += a; //senao, adiciona na string temporaria<br/> }<br/> new_str[index] = tempString; //armazeno no array de strings, se for necessario utilizar adiante<br/> Serial.println(new_str[index]); // mostro esse conteúdo na Serial para verificação, somente.<br/> index++; //incremento o contador <br/> }<br/>}<br/>//depois disso, é só capturar os valores dos índices 0 a 6 de new_str[] e convertê-lo em int, long ou float.</p>
<p></p>
<p>//////////////////////////////////////////////////////////////////////////////////////////////////////////////</p>
<p></p>
<p>Roda aí e nos informe o resultado.</p>
<p></p>
<p>Abraços.</p> Edson muito obrigado pelas di…tag:labdegaragem.com,2012-11-09:6223006:Comment:1796702012-11-09T01:15:56.625ZLucas Fonsecahttps://labdegaragem.com/profile/LucasFoseca
<p>Edson muito obrigado pelas dicas, mais se estiver utilizando um valor flutuante e posso colocar nas String. pois os Valores A, B , C... é a leitura dos sensores de temperatura. <br/><br/>Ex:. 23,72 //O correto é converter isso para interior longo certo!<br/><br/><br/></p>
<p> </p>
<p> </p>
<p>Edson muito obrigado pelas dicas, mais se estiver utilizando um valor flutuante e posso colocar nas String. pois os Valores A, B , C... é a leitura dos sensores de temperatura. <br/><br/>Ex:. 23,72 //O correto é converter isso para interior longo certo!<br/><br/><br/></p>
<p> </p>
<p> </p>