Continuo com esse problema:
Como fazer pra ler o Serial.print() e Serial.println() ?
Tentei:
if(Serial.available() > 0){
mas só imprime o que é digitado no topo do serial monitor.
e também tentei:
if(Serial.println(){
mas só imprime "branco" / nada;
Preciso pegar todo o log do serial monitor e colocar em uma variável String,
para enviar para um txt ou html.
Sei que poderia fazer isso em cada "Serial.print e Serial.println" que tenho,
mas seria muito trabalhoso e consumiria muito da ram (meu código tem umas
2000 linhas.
Estou enviando o código junto com html e js, caso alguém possa me ajudar...
desde já agradeço.
PS: O código é para IDE Arduino, estou usando o ESP8266 (Wemos D1 R2).
Tags:
Quando tem dados a serem lidos no buffer, você detecta com Serial.available(). No loop você deve fazer algo como:
while (Serial.available()){
char valor = Serial.read();
}
Isso vai ler byte a byte até esvaziar o buffer. Se estiver enviando, por exemplo, line feed ('\n'), pode usar a função readUntil.
Na documentação você encontra todas as funções disponíveis.
https://www.arduino.cc/reference/en/language/functions/communicatio...
Eu particularmente prefiro ler byte a byte e armazenar em um array. No meu blog tem centenas de artigos que podem lhe ajudar.
Olá Djames...
Eu já havia feito algo parecido com isso, mas o que preciso é pegar tudo que já esta no serial monitor...
tipo: o que chegou via Serial.print e Serial.println e colocar tudo em uma String pra enviar para um txt ou html.
Dessa maneira que vc citou consigo pegar somente o que foi digitado lá no topo do monitor serial.
Tenho pouco conhecimento em arduino / Esp8266, mas preciso muito disso (guardar tudo que passa pelo Serial monitor)
Quando uso:
if(Serial.available() > 0){
Somente o que é digitado no topo do serial monitor consigo armazenar.
Quando uso:
if(Serial.println()){
a variável fica vazia, e o serial monitor fica movimentando....
Desculpa meu pouco conhecimento no assunto, pra resumir: quero armazenar tudo que passa pela tela do serial monitor, pra fazer um SERIAL MONITOR REMOTO, via html...é essa a idéia.
Uma função pode ou não ter retorno e o retorno não precisa ser o mesmo tipo que manipula. Você "tem" que armazenar previamente em uma variável antes de imprimir na serial.
Na documentação tem uma parte chamada Returns. O print está descrito assim:
print()
returns the number of bytes written, though reading that number is optional. Data type: size_t
.
Ou seja, o retorno da função é o número de bytes escritos e o tratamento do retorno é opcional.
O que for digitado no terminal serial e enviado com Enter deve ser lido com Serial.read() ou outra função semelhante que lê do buffer.
LEIA a documentação, você precisa de conceitos. O if que você está fazendo vai sempre retornar verdadeiro, porque sempre vai ser maior que 0, já que que println imprime LF.
Esse vídeo é sobre "outro" tema, mas tem um exemplo claro de comunicação Serial.
https://youtu.be/6kqDglc9aPk
Bom dia...
obrigado pelas dicas, vou tentar aqui ok.
conseguindo posto aqui.
Boa noite,
Acho que esse código possa ser útil:
https://github.com/bitluni/UsbMidiHostTests
Já usei parte desse código para capturar os dados da Serial1 e enviar para a outra Serial (USB) de um mesmo Arduino Pro Micro. Esse Arduino Pro Micro tem duas portas seriais. Uma serial de comunicação direta com a USB e uma outra Serial usando os pinos TX e RX.
https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide
https://blog.eletrogate.com/gamepad-de-pc-arduino-pro-micro/
Esse outro tutorial é sobre ESP8266 :
https://randomnerdtutorials.com/sending-data-from-an-arduino-to-the...
Bom dia..
vou ler o material recomendado e tentar, qualquer novidade posto aqui ok.
Muito obrigado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por