[resolvido] Ajuda com codigo, parse dados - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-28T11:12:20Zhttps://labdegaragem.com/forum/topics/ajuda-com-codigo-parse-dados?commentId=6223006%3AComment%3A589663&feed=yes&xn_auth=noPessoal estou precisando de u…tag:labdegaragem.com,2017-01-10:6223006:Comment:5896632017-01-10T21:56:32.183ZAngelo Marcelo Kochakihttps://labdegaragem.com/profile/AngeloMarceloKochaki
<p>Pessoal estou precisando de uma ajuda na programacao do arduino. Com ele conectado na ethernet eu preciso pegar uma informacao digitada no browser exemplo 192.168.0,200:8090/1 isso seria o ip do arduino depois a porta e o nr 1 apos a barra 'e a informacao que eu preciso extrair, como poderia fazer isso?</p>
<p>Pessoal estou precisando de uma ajuda na programacao do arduino. Com ele conectado na ethernet eu preciso pegar uma informacao digitada no browser exemplo 192.168.0,200:8090/1 isso seria o ip do arduino depois a porta e o nr 1 apos a barra 'e a informacao que eu preciso extrair, como poderia fazer isso?</p> [RESULTADO FINAL]
Padrão de…tag:labdegaragem.com,2015-02-25:6223006:Comment:4206062015-02-25T17:51:00.682ZRogerio A. Filhohttps://labdegaragem.com/profile/RogerioFilho
<p>[RESULTADO FINAL]</p>
<p></p>
<p>Padrão de entrada</p>
<p> "y1,22,3333,4444"</p>
<p></p>
<p>if (Serial.find("y")) {<br></br> <br></br> <br></br> int firstParams = Serial.parseInt();<br></br> int secondParams = Serial.parseInt();<br></br> int thirdParams = Serial.parseInt(); <br></br> int fourthParams = Serial.parseInt();<br></br> <br></br> envia[0] = firstParams;<br></br> envia[1] = secondParams;<br></br> envia[2] = thirdParams;<br></br> envia[3] = fourthParams;<br></br> <br></br> Serial.print(envia[0]);<br></br> Serial.print(envia[1]);…<br></br></p>
<p>[RESULTADO FINAL]</p>
<p></p>
<p>Padrão de entrada</p>
<p> "y1,22,3333,4444"</p>
<p></p>
<p>if (Serial.find("y")) {<br/> <br/> <br/> int firstParams = Serial.parseInt();<br/> int secondParams = Serial.parseInt();<br/> int thirdParams = Serial.parseInt(); <br/> int fourthParams = Serial.parseInt();<br/> <br/> envia[0] = firstParams;<br/> envia[1] = secondParams;<br/> envia[2] = thirdParams;<br/> envia[3] = fourthParams;<br/> <br/> Serial.print(envia[0]);<br/> Serial.print(envia[1]);<br/> Serial.print(envia[2]);<br/> Serial.print(envia[3]);</p>
<p>}</p> Obrigado pela dica, ficou exc…tag:labdegaragem.com,2015-02-25:6223006:Comment:4203672015-02-25T17:48:42.809ZRogerio A. Filhohttps://labdegaragem.com/profile/RogerioFilho
<p>Obrigado pela dica, ficou excelente!</p>
<p>Obrigado pela dica, ficou excelente!</p> não tem como saber o que pode…tag:labdegaragem.com,2015-02-25:6223006:Comment:4204622015-02-25T16:23:11.912Zimhugohttps://labdegaragem.com/profile/imhugo
<p>não tem como saber o que pode estar causando essa lentidão sem olhar teu código, mas talvez seja isso:</p>
<p>certifique-se de que vc não esteja "parseando" a string a cada loop do sketch. Isso consome recursos e pode estar aí teu problema.</p>
<p>Veja se não seria o caso de vc armazenar as informações vindas da serial numa string, acumulando (concatenando) caracter a caracter e só depois de finalizada a string txtParams, aí sim vc manda "parsear"</p>
<p></p>
<p>vc tentou usar a dica do…</p>
<p>não tem como saber o que pode estar causando essa lentidão sem olhar teu código, mas talvez seja isso:</p>
<p>certifique-se de que vc não esteja "parseando" a string a cada loop do sketch. Isso consome recursos e pode estar aí teu problema.</p>
<p>Veja se não seria o caso de vc armazenar as informações vindas da serial numa string, acumulando (concatenando) caracter a caracter e só depois de finalizada a string txtParams, aí sim vc manda "parsear"</p>
<p></p>
<p>vc tentou usar a dica do colega Victor sobre parseInt()??? Veja que a dica dele funciona bem se vc garantir que precisará "parsear" apenas Int. Do jeito que eu te propus, dá pra "parsear" qualquer coisa</p> Cara, pode me ajudar com uma…tag:labdegaragem.com,2015-02-25:6223006:Comment:4204322015-02-25T06:54:59.216ZRogerio A. Filhohttps://labdegaragem.com/profile/RogerioFilho
<p>Cara, pode me ajudar com uma coisa.. o codigo ficou lento!</p>
<p></p>
<p>acho que esse String txtParams = Serial.readString();</p>
<p>trava, ou sei la. ele demora 1 a 2 segundos p ler o comando..</p>
<p></p>
<p></p>
<p>Cara, pode me ajudar com uma coisa.. o codigo ficou lento!</p>
<p></p>
<p>acho que esse String txtParams = Serial.readString();</p>
<p>trava, ou sei la. ele demora 1 a 2 segundos p ler o comando..</p>
<p></p>
<p></p> Com Arduino, só utilizar pars…tag:labdegaragem.com,2015-02-25:6223006:Comment:4201962015-02-25T02:38:47.305ZVictor Panitz Magalhãeshttps://labdegaragem.com/profile/VictorPanitzMagalhaes
<p>Com Arduino, só utilizar parseInt().</p>
<p></p>
<p>Com Arduino, só utilizar parseInt().</p>
<p></p> é como te falei... se tua sub…tag:labdegaragem.com,2015-02-24:6223006:Comment:4204202015-02-24T23:29:39.789Zimhugohttps://labdegaragem.com/profile/imhugo
<p>é como te falei... se tua substring for de um caracter, vc não conseguirá capturá-la pois vc estará deslocando muito a busca, pra além do comprimento da substring</p>
<p></p>
<p>se funcionou do jeito que vc fez, é porque a terceira substring é maior que 1 caracter e a quarta substring é maior que 2 caracteres</p>
<p></p>
<p>de qualquer forma, recomendo adicionar sempre +1 porque dessa forma vc garantirá sucesso em qualquer situação e evitará erros caso sua substring se encaixe nos casos…</p>
<p>é como te falei... se tua substring for de um caracter, vc não conseguirá capturá-la pois vc estará deslocando muito a busca, pra além do comprimento da substring</p>
<p></p>
<p>se funcionou do jeito que vc fez, é porque a terceira substring é maior que 1 caracter e a quarta substring é maior que 2 caracteres</p>
<p></p>
<p>de qualquer forma, recomendo adicionar sempre +1 porque dessa forma vc garantirá sucesso em qualquer situação e evitará erros caso sua substring se encaixe nos casos citados</p> Interessante é que das duas m…tag:labdegaragem.com,2015-02-24:6223006:Comment:4204182015-02-24T22:48:17.480ZRogerio A. Filhohttps://labdegaragem.com/profile/RogerioFilho
<p>Interessante é que das duas maneiras funciona, so que fica lento..</p>
<p> mas funciona os 2</p>
<p>Interessante é que das duas maneiras funciona, so que fica lento..</p>
<p> mas funciona os 2</p> isso não está errado não??? v…tag:labdegaragem.com,2015-02-24:6223006:Comment:4201922015-02-24T22:45:04.981Zimhugohttps://labdegaragem.com/profile/imhugo
<p>isso não está errado não??? veja:</p>
<blockquote><p>int _3ndSeparator = txtParams.indexOf(',', _2ndSeparator + 2); // pega a posição da 3ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima<br></br>int _4ndSeparator = txtParams.indexOf(',', _3ndSeparator + 3); // pega a posição da 4ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima</p>
</blockquote>
<p></p>
<p>deveria ser:</p>
<p></p>
<blockquote><p>int _3ndSeparator =…</p>
</blockquote>
<p>isso não está errado não??? veja:</p>
<blockquote><p>int _3ndSeparator = txtParams.indexOf(',', _2ndSeparator + 2); // pega a posição da 3ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima<br/>int _4ndSeparator = txtParams.indexOf(',', _3ndSeparator + 3); // pega a posição da 4ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima</p>
</blockquote>
<p></p>
<p>deveria ser:</p>
<p></p>
<blockquote><p>int _3ndSeparator = txtParams.indexOf(',', _2ndSeparator + 1); // pega a posição da 3ª virgula, ou seja, a primeira ocorrência de vírgula após a 2ª vírgula encontrada acima<br/>int _4ndSeparator = txtParams.indexOf(',', _3ndSeparator + 1); // pega a posição da 4ª virgula, ou seja, a primeira ocorrência de vírgula após a 3ª vírgula encontrada acima</p>
</blockquote>
<p></p>
<p>se vc somar 2 ou 3 casas, vai dar zica caso a substring seja curta (1 ou 2 caracteres por exemplo). Mas se vc garante que a substring é maior que isso, vai funcionar sim</p> Agradeço a ajuda!
resultado…tag:labdegaragem.com,2015-02-24:6223006:Comment:4203222015-02-24T21:43:03.480ZRogerio A. Filhohttps://labdegaragem.com/profile/RogerioFilho
<p>Agradeço a ajuda!</p>
<p></p>
<p>resultado ficou:</p>
<p></p>
<blockquote><p><br></br> void setup() {<br></br> Serial.begin(9600);<br></br>
}</p>
<p>void loop() {<br></br> receiveData();<br></br> }</p>
<p>// Valor de entrada na serial<br></br> // first,second,third,fourth<br></br> void receiveData() {</p>
<p>if (Serial.available() > 0) {<br></br> <br></br> String txtParams = Serial.readString();</p>
<p>int _1stSeparator = txtParams.indexOf(','); // pega posição da 1ª virgula<br></br> int _2ndSeparator = txtParams.indexOf(',',…</p>
</blockquote>
<p>Agradeço a ajuda!</p>
<p></p>
<p>resultado ficou:</p>
<p></p>
<blockquote><p><br/> void setup() {<br/>
Serial.begin(9600);<br/>
}</p>
<p>void loop() {<br/> receiveData();<br/>
}</p>
<p>// Valor de entrada na serial<br/> // first,second,third,fourth<br/>
void receiveData() {</p>
<p>if (Serial.available() > 0) {<br/> <br/>
String txtParams = Serial.readString();</p>
<p>int _1stSeparator = txtParams.indexOf(','); // pega posição da 1ª virgula<br/> int _2ndSeparator = txtParams.indexOf(',', _1stSeparator + 1); // pega a posição da 2ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima<br/>
int _3ndSeparator = txtParams.indexOf(',', _2ndSeparator + 2); // pega a posição da 3ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima<br/>
int _4ndSeparator = txtParams.indexOf(',', _3ndSeparator + 3); // pega a posição da 4ª virgula, ou seja, a primeira ocorrência de vírgula após a 1ª vírgula encontrada acima<br/>
<br/>
String firstParams = txtParams.substring(0, _1stSeparator); // obtém a 1ª substring<br/>
String secondParams = txtParams.substring(_1stSeparator + 1, _2ndSeparator); // obtém a 2ª substring<br/>
String thirdParams = txtParams.substring(_2ndSeparator + 1, _3ndSeparator); // obtém a 3ª substring<br/>
String fourthParams = txtParams.substring(_3ndSeparator + 1, _4ndSeparator); // obtém a 4ª substring<br/>
<br/>
<br/>
Serial.println(firstParams);<br/>
Serial.println(secondParams);<br/>
Serial.println(thirdParams);<br/>
Serial.println(fourthParams);<br/>
}<br/>
}</p>
</blockquote>