Boa tarde galera,

Estou trabalhando em um código que precisa receber valores na casa de centenas, dezenas e unidades (ex: 134, 3, 56...), apos o usuário inserir os valores, gostaria que os valores apenas entrasse na lógica, após pressionar um botão ENTER.

A minha dúvida inicial está em como poderia ler mais de um numero pelo Keypad, hoje eu só consigo ler unidade.

A segunda dúvida, é como poderia implementar essa função de ENTER em um determinado botão do Keypad, para enviar os números para a lógica seguinte?

Sou grato pela ajuda.

Obrigado 

Exibições: 2256

Responder esta

Respostas a este tópico

Olá André.

Para facilitar você pode depois dizer qual o  modelo do Keypad está usando.

Geralmente eles possuem as teclas: "*" e "#" além dos números. Você poderia estar utilizando uma destas teclas para ser a função "Enter".

Pensando no funcionamento:

1) Aparentemente você necessita de 3 dígitos, mesmo que seja abaixo de 100 você digitaria o zero antes, ex.: 010. Então você digitaria um número, e depois o # (enter).

2) Caso fosse o número errado, você pode fazer uma espécie de "reset" ou "backspace" com o * , para ou reiniciar o processo com os 3 dígitos ou apenas deletar o ultimo dígito inserido.

3) Assim pode-se repetir este processo para todos os dígitos, digitar o número e apertar # para o enter.

No seu código, para o conjunto de dígitos você poderá criar um array de bytes para armazenar o número inserido. Por exemplo:

unsigned char senha[3]; (ou byte, ou int, etc...)

E cada indice deste array será o seu ponteiro para cada dígito do número,  por exemplo: entramos primeiro com as centenas, então ele pode ir no indice zero:  

senha[0] = FuncaoQueRetornaNumeroPressionado();

Depois a dezena, incrementando o índice.

senha[1] = FuncaoQueRetornaNumeroPressionado();

E assim por diante.

Para facilitar você pode colocar a varredura em um laço "for" para ir incrementando um ponteiro, dai faria:

for(int i=0;i<NumeroDigitos;i++)

{

  senha[i] =FuncaoQueRetornaNumeroPressionado();

}

E depois é fazer o que precisa com o número...setar uma variável de controle, ou verificar uma senha..etc.

Depois procure pelo conceito de "máquinas de estado". Irão facilitar sua vida no controle de etapas em uma programação.

Espero ter ajudado.

T++. ^^

Olá Daniel, como vai?

O teclado que uso é este Keypad. Os pontos 1, 2 e 3 são exatamente o procedimento que procuro. Ainda não conheço sobre Arrays, mas vou começar a estudar já. Pelo que percebi não é tão complexo assim, a minha dúvida sobre este procedimento, é que os números digitais ficarão na variável array Senha (por exemplo)?

Vou tentar fazer algo do tipo, e posto aqui.

Blz. ^^

Na verdade a criação dos arrays é esta linha que coloquei acima:

unsigned char senha[3];

E sim, os números ficarão contidos neste array.

Imagine os arrays como se fossem uma "fileira" de bytes agrupadas. Por exemplo, como declarei o tipo de variável como "unsigned char", eu sei que esta variável poderá ter valores que vão de 0 a 255.

Como coloquei que preciso de [3] bytes, imagine que terei 3 bytes um do lado do outro, e que cada um pode ter qualquer valor. Por exemplo, os dígitos "359", no array existirá os valores: [3,5,9].

Para estudos eu indico esse livro "C Completo e Total".

Bons estudos. ^^

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço