Pages: [1]   Go Down
Author Topic: Comunicação L2C entre dois arduinos com dados variáveis  (Read 1225 times)
0 Members and 1 Guest are viewing this topic.
Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 310
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estou tentando fazer uma comunicação entre dois arduinos através de L2C.
Eles se comunicam, o Mestre envia o comando o escravo recebe e consigo requisitar os dados do escravo pelo mestre.
A dúvida é o seguinte.
Os dados retornados pelo escravo não são fixos, a resposta do escravo pode variar, de 2 a 50 caracteres.
Como a função wire.request precisa da quantidade de caracteres a serem recebidos, estou colocando um comando que ira indicar que o mestre quer
saber quantos caracteres serão recebidos, o escravo responde e depois com uma nova wire.request do mestre o escravo retornaria os dados.
Mas não achei uma maneira de criar um char que fosse dinâmico, então quando no mestre eu usar o wire,avalaible() eu precisava armazenar o retorno em uma váriavel.
Alguém chegou a implementar algo parecido ou vou ter que declarar um char de 255 e tratar o comprimento dos dados recebidos através do número de caracteres recebidos do escravo pelo mestre?
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3097
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se eu compreendi bem, tu não queres ter 50 e tal bytes perdidos em memória sem saber se vais usá-los ou não. Queres definir o tamanho dum vector em "real time", após saberes qual o tamanho que vais precisar, é isso?

Já viste o malloc(), realloc() e free()??

http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga4996af830ebe744d9678e5251dfd3ebd
http://www.nongnu.org/avr-libc/user-manual/malloc.html
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 310
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se eu compreendi bem, tu não queres ter 50 e tal bytes perdidos em memória sem saber se vais usá-los ou não. Queres definir o tamanho dum vector em "real time", após saberes qual o tamanho que vais precisar, é isso?
...
Havia me esquecido dessa abordagem.
Vou tentar com isso em vez da forma atual que é com String.











Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3097
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Havia me esquecido dessa abordagem.
Vou tentar com isso em vez da forma atual que é com String.

String... blarghhh.
Não me leves a mal, mas a implementacão da String não é para microcontroladores. Ela ocupa imensa memória e processamento apenas para "poupar" umas linhas de C e apontadores.











[/quote]
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 310
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


String... blarghhh.
Não me leves a mal, mas a implementacão da String não é para microcontroladores. Ela ocupa imensa memória e processamento apenas para "poupar" umas linhas de C e apontadores.

Ha ha ha ha ha, estou tentando, mas o downgrade para microcontroladores é bem difícil para quem está acostumado como PHP e DELPHI, a verdade, nem precisaria ser dinâmico, pois sempre posso controlar a transferência das informações em "BLOCOS" como meu controle não precisará controlar em milésimos de segundos as ações a serem tomadas, posso perder alguns ciclos enviando em partes. Era mesmo para saber se existiria algo no meio termo entre a família xxxloc (maloc, freeloc etc) e as Strings.
Pois achei a implementação da biblioteca I2C meio fraca (pois para passar um int tem q transformar em char antes) e todos as implementações que vi na internet parecem superficiais...
PS. Espero estar equivocado quanto a biblioteca I2C
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


0
Offline Offline
Full Member
***
Karma: 2
Posts: 123
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entre ficar com "leveza" do reference do arduino e decifrar o datasheet do ATmega, esse cara que faz parte do forum, aborda de forma simples e clara esse assunto:
http://www.gammon.com.au/forum/?id=10896
  



Aqui aborda mais coisas:
http://www.gammon.com.au/forum/bbshowpost.php?bbtopic_id=123    

EDIT: busque por "Broadcasting" na primeira pag que ele aborda a questão do int sendo enviado. 
« Last Edit: June 19, 2012, 03:01:34 pm by fabiohbm007 » Logged

Pages: [1]   Go Up
Jump to: