Autor Tópico: Trabalhar com Menu com microcontrolador  (Lida 3936 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Trabalhar com Menu com microcontrolador
« Online: 18 de Março de 2010, 20:15 »
Boa noite a todos!!

Estou com um problema na criação de menus em uma IHM que preciso fazer.
Imagino que seja simples, mas não está funcionando, genericamente é assim

menu_10  - comando_11
              - comando_12

menu_20  -  comando_21
              -  comando_22
              -  comando_23

Imagino que é possível fazer a escolha do "menu" e "comando" com switch case, porém não sei como finalizar os comandos e (como um OK) confirmar a ação desejada na IHM.
Alguém pode me dar uma ajuda?
Qualquer comentário pertinente ao assunto do tópico será muito bem vindo

Abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Trabalhar com Menu com microcontrolador
« Resposta #1 Online: 18 de Março de 2010, 23:22 »
Blackmore,

Boa noite a todos!!

Estou com um problema na criação de menus em uma IHM que preciso fazer.
Imagino que seja simples, mas não está funcionando, genericamente é assim

menu_10  - comando_11
              - comando_12

menu_20  -  comando_21
              -  comando_22
              -  comando_23

Imagino que é possível fazer a escolha do "menu" e "comando" com switch case, porém não sei como finalizar os comandos e (como um OK) confirmar a ação desejada na IHM.
Alguém pode me dar uma ajuda?
Qualquer comentário pertinente ao assunto do tópico será muito bem vindo

Abrax!

Com microcontroladores, já fiz menus usando assembly e C. Em C, seria assim:

int main( void )
{
    char op;

    while( 1 ) // Loop infinito - ler teclado e executar funcao respectiva
    {
         op = getch();                    // Ler opcao do teclado
         
         printf("Opcao: %c", op );     // Mostrar opcao no display LCD

         switch( op )
         {
            case '1':
               funcao_1();
               break;

            case '2':
               funcao_2();
               break;

             case '3':
                funcao_3();
                break;
         }

    }   
}

int funcao_1( void )
{
}

int funcao_2( void )
{
}

int funcao_1( void )
{
}


Não entendi o OK...
« Última modificação: 18 de Março de 2010, 23:24 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Trabalhar com Menu com microcontrolador
« Resposta #2 Online: 19 de Março de 2010, 00:25 »
minilathe

Pelo menos meu raciocínio está certo nesta parte!!
Veja o que fiz ...


if ( menu != menu_ant )
   {
      menu_ant = menu;

   switch ( menu )
      {
         case 1:
            lcd_escreve ('\f');  // apaga o display
            lcd_pos_xy(1,1);
            printf (lcd_escreve,"Menu 1");
            lcd_pos_xy(1,2);
            printf (lcd_escreve,"valor BRG");
         break;
         case 2:
            lcd_escreve ('\f');  // apaga o display
            lcd_pos_xy(1,1);
            printf (lcd_escreve,"Menu 2");
            lcd_pos_xy(1,2);
            printf (lcd_escreve,"valor TMR0");

         break;
         case 3:
            lcd_escreve ('\f');  // apaga o display
            lcd_pos_xy(1,1);
            printf (lcd_escreve,"Menu 3");
            lcd_pos_xy(1,2);
            printf (lcd_escreve,"SET PWM");
         break;
         case 4:
            lcd_escreve ('\f');  // apaga o display
            lcd_pos_xy(1,1);
            printf (lcd_escreve,"Menu 4");
            lcd_pos_xy(1,2);
            printf (lcd_escreve,"USB on");
         break;
      } // fim switch
   }// fim if


Como o que estou fazendo é um IHM ... em alguns momentos eu irei escolher um valor X e outro momento um valor Y dentro das funções ... e indicar para o IHM que este valor escolhido será utilizado com o OK que vc não entendeu ... algo igual no windows quando vc faz uma modificação, entendeu?
Agradeço sua ajuda ...

Abrax!
« Última modificação: 19 de Março de 2010, 02:43 por Blackmore »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Trabalhar com Menu com microcontrolador
« Resposta #3 Online: 19 de Março de 2010, 02:45 »
tava aqui pensando ... uma possibilidade é o comando goto , não é mesmo? tenho apenas q tomar cuidado para não entrar em loop e travar o funcionamento!

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Trabalhar com Menu com microcontrolador
« Resposta #4 Online: 19 de Março de 2010, 03:27 »
Blackmore,

Acho que voce se enganou com os printf, não? Tentando consertar e simplificar um pouquinho:


if ( menu != menu_ant )
   {
      menu_ant = menu;

   lcd_escreve ("\f");  // apaga o display

   switch ( menu )
      {
         case 1:
            lcd_pos_xy(1,1);
            lcd_escreve ("Menu 1");
            lcd_pos_xy(1,2);
            lcd_escreve ("valor BRG");
         break;

         case 2:
            lcd_pos_xy(1,1);
            lcd_escreve("Menu 2");
            lcd_pos_xy(1,2);
            lcd_escreve("valor TMR0");
         break;

         case 3:
            lcd_pos_xy(1,1);
            lcd_escreve("Menu 3");
            lcd_pos_xy(1,2);
            lcd_escreve("SET PWM");
         break;

         case 4:
            lcd_pos_xy(1,1);
            lcd_escreve("Menu 4");
            lcd_pos_xy(1,2);
            lcd_escreve("USB on");
         break;

      } // fim switch
   }// fim if


Não gosto do "go to" em C, pode originar um código confuso e levar a erros. Acho "go to" mais apropriado para assembly, onde não há outra opção para desvios.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Trabalhar com Menu com microcontrolador
« Resposta #5 Online: 19 de Março de 2010, 03:40 »
minilathe

Acho que voce se enganou com os printf, não?
não me enganei não ... se não tiver o printf não é impresso no display o conteúdo dentro de (" aqui ")  ...

Não gosto do "go to" em C, pode originar um código confuso e levar a erros
também não sou fã ... mas é ainda não encontrei alguma outra forma que me atenda.
Mas também é assim, se o programa der certo não tem pq não utilizar este recurso não é mesmo?

abrax!

lucasi

  • Visitante
Re: Trabalhar com Menu com microcontrolador
« Resposta #6 Online: 19 de Março de 2010, 09:54 »
minilathe, blackmore...

Eu sempre quis saber como fazia esses menus e vcs acabaram me dando o caminho das pedras...

Vlw!@!!

Abs
Lucasi

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Trabalhar com Menu com microcontrolador
« Resposta #7 Online: 19 de Março de 2010, 13:21 »
Menu eu tb nunca utilizei, tinha noção de como fazê-lo ... agora houve a necessidade de fazer ... e aprender  :)

abrax!

 

/** * */