criaçao de menus

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor Red Neck Guy » 29 Set 2010 10:54

É que acabei de me queimar tomando mate...
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor cristian » 29 Set 2010 11:09

Código: Selecionar todos

typedef struct{
  const char *string_opcao;
}sMenu;

#define NUM_OPCOES_MENU  4

const sMenu menuFuleiro[NUM_OPCOES_MENU] =
{
  {"Opcao 01"},  {"Opcao 02"},   {"Opcao 03"}

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd(menuFuleiro[1].string_opcao);
}


da erro dizendo q
217 383 Illegal pointer conversion ....

ja tentei de tudo maluco

agora se colocar assim

Código: Selecionar todos
declarado assim :
char *texto1="fr efeito fiscal -";

e chamado asism
writelcd(texto1);

ele vai normal
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor fabim » 29 Set 2010 11:25

[quote="cristian"]
Código: Selecionar todos

typedef struct{
  const char *string_opcao;
}sMenu;

#define NUM_OPCOES_MENU  3

const sMenu menuFuleiro[NUM_OPCOES_MENU] =
{
  {"Opcao 01"},  {"Opcao 02"},   {"Opcao 03"}

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd((void *)menuFuleiro[1]);
}



Seguinte, a rotina de LCD da mikroE é mio doida, tem hora que da pau com const e dinamic. Se você passar um tipo de dado, para o outro sem avisar pro compilador da pau.
Nesse seu caso, ele retorna um ponteiro de flash.
Quando for assim, mande a IDE ir se danar, colocando o (void *) antes do retfie do dado, assim a IDE se vira pra acertar as coisas.
Quer ver pau lascado com isso, é na FAT que eu arrumei para o KEIL. VPPQP..

Faz o teste proC ver.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor ivan » 29 Set 2010 11:39

Maluco2 para maluco 1.. Kâmbio!

Põe um casting na writelcd, como a seguir q funci!

writelcd((char*)menuFuleiro[1].string_opcao);

Quando for assim, mande a IDE ir se danar, colocando o (void *) antes do retfie do dado, assim a IDE se vira pra acertar as coisas.
Quer ver pau lascado com isso, é na FAT que eu arrumei para o KEIL. VPPQP..


Isso é problema da BIOS e não da IDE! Rsrsrsrss....
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor cristian » 29 Set 2010 12:06

ta faltando mais alguma coisa ...

o erro sumiu , mas nao imprime nada pra ter certeza q nao é o lcd mandei tb pela serial e nada

tanto o void como o char resolveu o problema , mas nao imprime é como se as strings nao tivesse la

Código: Selecionar todos
Lcd_out(2,2,(void*)menuFuleiro[0].string_opcao);
UART1_Write_Text((void*)menuFuleiro[0].string_opcao);
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor Djalma Toledo Rodrigues » 29 Set 2010 12:14

Maluco 3 para Maluco 2:

Maluco 1 colocou msg sem tomar conhecimento da sua

rsrsrs
DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor cristian » 29 Set 2010 12:19

simulando no proteus da pra ver q nao criou nenhuma string com os nomes opçoes 1 2 3 ... ja aquela do *texto1 criou

fala ai Aquino , ja que vc é o dono do codigo- o q esta dando errado ???



meu tempo ja a cabou vou ter q contornar o problema e criar string e chamar na tora mesmo tipo

char *texto = " agora f***";
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor jonowsky » 29 Set 2010 12:33

Para quê tantas milongas? Qual a necessidade daquele typedef sMenu? De que tamanho que ficaria a string_opcao?

eu faria mais ou menos assim:

Código: Selecionar todos

#define NUM_OPCOES_MENU  4

char menuFuleiro[NUM_OPCOES_MENU][9] =
{
  "Opcao 01",  "Opcao 02",   "Opcao 03"

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd(menuFuleiro[1].string_opcao);
}
Avatar do usuário
jonowsky
Byte
 
Mensagens: 148
Registrado em: 26 Mai 2009 15:18
Localização: Rio Grande do Sul

Mensagempor fabim » 29 Set 2010 12:38

jonowsky escreveu:Para quê tantas milongas? Qual a necessidade daquele typedef sMenu? De que tamanho que ficaria a string_opcao?

eu faria mais ou menos assim:

Código: Selecionar todos

#define NUM_OPCOES_MENU  4

char menuFuleiro[NUM_OPCOES_MENU][9] =
{
  "Opcao 01",  "Opcao 02",   "Opcao 03"

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd(menuFuleiro[1].string_opcao);
}


cara, dxo explicar uma coisa.
Aqui neste forum, você tem que só ir e tentar resolver da forma que foi primeiramente postado. Existem N maneiras, mais se sair fora do escopo os cabras caem matando encima....
Ou seja, eles vão achar que você ta querendo se mostrar, e vão começar a te agredir, etc etc..
Tipo uma dica da hora, ajude 1,2 vezes. Nem tente a terceira senão vão te encher o cocu.

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabim » 29 Set 2010 12:42

ivan escreveu:Maluco2 para maluco 1.. Kâmbio!

Põe um casting na writelcd, como a seguir q funci!

writelcd((char*)menuFuleiro[1].string_opcao);

Quando for assim, mande a IDE ir se danar, colocando o (void *) antes do retfie do dado, assim a IDE se vira pra acertar as coisas.
Quer ver pau lascado com isso, é na FAT que eu arrumei para o KEIL. VPPQP..


Isso é problema da BIOS e não da IDE! Rsrsrsrss....


maluco 1 para maluco 2.
typedef struct{
const char *string_opcao;
}sMenu;

char...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Djalma Toledo Rodrigues » 29 Set 2010 12:50

Cristian Display só aceita Texto em ASCII

0 ---> 30H
1 ---> 31h
A ---> 41H
B----> 42H ...

O tal "Char" do antipático "C" .

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor jonowsky » 29 Set 2010 12:54

fabim escreveu:
jonowsky escreveu:Para quê tantas milongas? Qual a necessidade daquele typedef sMenu? De que tamanho que ficaria a string_opcao?

eu faria mais ou menos assim:

Código: Selecionar todos

#define NUM_OPCOES_MENU  4

char menuFuleiro[NUM_OPCOES_MENU][9] =
{
  "Opcao 01",  "Opcao 02",   "Opcao 03"

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd(menuFuleiro[1].string_opcao);
}


cara, dxo explicar uma coisa.
Aqui neste forum, você tem que só ir e tentar resolver da forma que foi primeiramente postado. Existem N maneiras, mais se sair fora do escopo os cabras caem matando encima....
Ou seja, eles vão achar que você ta querendo se mostrar, e vão começar a te agredir, etc etc..
Tipo uma dica da hora, ajude 1,2 vezes. Nem tente a terceira senão vão te encher o cocu.

Abraços


fabim,

De maneira nenhuma estou pensando em me "mostrar", idéia é simplesmente resolver o problema do amigo...

E esta é a primeira postagem que coloco nesta discução, então ainda posso tentar ajudar mais uma vez, certo?

Abraço fabim
Avatar do usuário
jonowsky
Byte
 
Mensagens: 148
Registrado em: 26 Mai 2009 15:18
Localização: Rio Grande do Sul

Mensagempor jonowsky » 29 Set 2010 12:56

fabim escreveu:
jonowsky escreveu:Para quê tantas milongas? Qual a necessidade daquele typedef sMenu? De que tamanho que ficaria a string_opcao?

eu faria mais ou menos assim:

Código: Selecionar todos

#define NUM_OPCOES_MENU  4

char menuFuleiro[NUM_OPCOES_MENU][9] =
{
  "Opcao 01",  "Opcao 02",   "Opcao 03"

};

///-----------------------------------------

void  writelcd(char *s1)
  {
  while(*s1)
  {
 Lcd_Chr_CP(*s1++);
  }

  }

//----------------------------------------------
if(btnBPress)
{
btnBPress=0; // com esta funçao habilita a repetiçao do botao

writelcd(menuFuleiro[1].string_opcao);
}


cara, dxo explicar uma coisa.
Aqui neste forum, você tem que só ir e tentar resolver da forma que foi primeiramente postado. Existem N maneiras, mais se sair fora do escopo os cabras caem matando encima....
Ou seja, eles vão achar que você ta querendo se mostrar, e vão começar a te agredir, etc etc..
Tipo uma dica da hora, ajude 1,2 vezes. Nem tente a terceira senão vão te encher o cocu.

Abraços


fabim,

De maneira nenhuma estou pensando em me "mostrar", a idéia é simplesmente resolver o problema do amigo...

E esta é a primeira postagem que coloco nesta discução, então ainda posso tentar ajudar mais uma vez, certo?



Abraço fabim
Avatar do usuário
jonowsky
Byte
 
Mensagens: 148
Registrado em: 26 Mai 2009 15:18
Localização: Rio Grande do Sul

Mensagempor Red Neck Guy » 29 Set 2010 13:31

Eu faria com laranjas.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor cristian » 29 Set 2010 14:40

parece q nao tem soluçao ...

eu queria enteder este codigo , ou melhor ver funcionar ...

mas é o jeito buscar outras soluçoes
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

AnteriorPróximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x