Como separar uma string (de tamanho variável), em várias substrings de tamanho 20 caracteres?

Olá.

Tenho um projeto, em que informo ao arduino um texto(de tamanho variável) e o arduino envia para outro arduino através de um NRF24L01. Para enviar, desenvolvi um protocolo que já está funcionando. Neste protocolo, é necessário informar a mensagem a ser enviada, que comporta no máximo 20 caracteres. A dúvida é: Para informar uma mensagem com mais caracteres, seria necessário "quebrar" a string da mensagem em outras de 20 caracteres. Como eu faria isso?

Exibições: 82

Responder esta

Respostas a este tópico

Boa tarde MSG, (se não gosta que te chame pelas iniciais, avise),

na biblioteca básica da IDE do arduino existem várias funções de tratamento de strings,

https://www.arduino.cc/reference/en/language/variables/data-types/s...

Você primeiro precisa determinar o tamanho da string da mensagem:

use a função   tamanho = myString.length();

em seguida cria várias strings de tamanho 20 começando  por 0.

  use a função myString.substring(from, to)

    uma =  myString.substring(0, 19);

    duas = myString.substring(20, 39);

    tres  = myString.substring(40, tamanho);

   Depois envia as strings uma, duas, tres......

RV

Ok. Entendi.

Obrigado. mais não teria uma forma de não utilizar as variáveis uma, duas ,tres. Para que seja possível enviar um numero 'variável' de caracteres e não um valor fixo, por exemplo se colocar as três variáveis, com 20 caracteres cada, daria no máximo para enviar uma mensagem com no máximo 60 caracteres. 

Bom dia Sr. MSG, (se não gosta que te chame pelas iniciais, avise),

sugiro que use um for (),  criando variáveis temporárias com o índice do for().

RV

Fiz um código para ajudar você:


https://pastebin.com/ZtvdkWEB

Estude bem a lógica, é um pouco complexo.

-Pode ser usado para qualquer tamanho de texto (Desde caiba na memória hehe)

-O tamanho a ser usado na divisão da string pode ser alterado na constante TAMANHO_ENVIO

- A função ceil(), Retorna o menor inteiro que é maior ou igual a um número. (Ou seja, se a divisão do tamanho for 4.1, vai se tornar 5 para que todas os caracteres sejam enviados independe do tamanho final)

RSS

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço