Receber string pela serial e separá-la em duas partes(não consigo)

Olá pessoal,

Eu estou começando a trabalhar com o Arduino agora e estou tendo dificuldades em alguns aspectos como manipular strings. O meu problema é o seguinte:

Minha aplicação envia para o Arduino uma série de strings com este formato: "xxx;yyyyyyyyy", onde o y pode variar de tamanho. Preciso receber esta string e separá-la em duas partes. No caso eu preciso colocar "xxx" em um variável e "yyyyyyyyy" em outra onde eu vou enviá-las separadamente para uma outra função. Faço isso brincando com as funções do php e javascript, mas no Arduino estou apanhando demais e gostaria da ajuda dos colegas para resolver esta questão. Grato

O ideal é separar as strings a enviar com outro caracter. Um "\n\r", por exemplo, e depois ir recebendo os caracteres e quando receberes o caracter de newline, sabes que recebeste uma string.

Olá bubulindo,

Teria como postar algum exemplo de código?

Grato

Eu dei o exemplo "\n\r" porque é o equivalente em C para a tecla "enter". No caso de teres um método que lesse ou escrevesse linhas (delimitadas pelo "\n\r") tornava-se mais simples.

Entretanto dei uma vista de olhos na linguagem do Arduino e não me parece que haja um método desses e no PHP também não, logo esses caracteres (nota que \n é um caracter e \r é outro) podem ser substituidos por quaisquer outros. Como exemplo numa aplicação que fiz há uns anos atrás, tinha uma mensagem composta desta forma:

xxx:yyyyyyyyyyy:zzz$

xxx era o cabeçalho onde eu informava qual era o tipo de informação que estava a enviar. Ou seja, medição de temperatura "ttt", medição de humidade "hhh", etc, etc...

yyyy era o valor a enviar. Não tinha tamanho definido.

zzz era o checksum da mensagem (para detectar erros de transmissão) mas não te precisas de preocupar.

">" indicava o inicio duma mensagem

"$" indicava o fim da mensagem.

":" eram valores delimitadores. Se quiseres podes usar outros caracteres e não precisam de ser sempre iguais.

Que exemplo de código queres? O Arduino é um pouco estranho no que toca a receber dados pela porta série e para ser sincero, eu nem uso a linguagem do Arduino, mas se fores mais específico no que não percebes posso tentar fazer algo.

Olá bubulindo,

Obgrigado pela explicação. Consegui criar um padrão semelhante ao que explicou para a troca de dados com o Arduino.

Grato,