Categorias
c??digo de barras

Ler c??digo de barras atrav??s de um leitor ??ptico com ASP.NET

N??o h?? nenhum segredo ou driver espec??fico para realizar a leitura. Basicamente o leitor ??ptico l?? o c??digo de barras, converte para string e retorna para o buffer de entrada do computador. Ou seja, ?? como se fosse digitar no teclado! Acabou o mist??rio…
H?? v??rias formas de codifica????o do c??digo de barras e quem ?? respons??vel por essa codifica????o/decofica????o pode ser tanto a leitora quanto a aplica????o. Irei considerar em nosso exemplo que o que a leitora l?? e irei utilizar n??o me importando o que seja. Supondo e para fins ilustrativos que nosso c??digo de barras seja essa a?? de cima, o valor de entrada seria 3805565154 (frisando novamente, apenas supondo). A leitora ir?? passar para nossa aplica????o a seguinte entrada 3805565154 ENTER. A maioria das leitoras j?? facilitam sua vida for??ando o ENTER ao terminar de ler o conte??do. Ent??o fica f??cil! Vamos por a m??o na massa.
Crie uma tela com apenas um TextBox. Criei essa bonitinha aqui:

Selecione o TextBox, v?? na guia Properties e clique no ??cone de Events. Adicione um evento em KeyDown conforme a figura abaixo:

Com isso, ao digitar qualquer valor no TextBox, ir?? disparar esse evento. Mas como queremos ler apenas o valor completo, adicionamos uma determinada condi????o para come??ar a analisar apenas quando pressionar/entrar o ENTER, logo nosso c??digo ficaria da seguinte forma:
private void txtNumero_KeyDown(object sender, KeyEventArgs e)

{
        if (e.KeyCode == Keys.Enter)
        {
                string entrada = txtNumero.Text;
                txtNumero.Text = “”;
        }
}
 

Ou seja, a cada entrada de caracteres, ativo o evento mas s?? iniciarei a an??lise quando a entrada for um ENTER. Ao final, zero o conte??do do TextBox para que possa dar uma nova entrada. Da?? voc?? pode adicionar outras instru????es no meio para fazer o que quiser. Eu complementei a aplica????o fazendo uma consulta em um banco de dados e analisando se existe ou n??o um determinado cupom. Vamos aos testes…
A leitora que usei ?? plugada diretamente na entrada PS/2 do teclado. A depender de sua leitora pode ser na USB, na PS/2 ou utilizar algum adaptador espec??fico. Depois de conectado, inicie sua aplica????o. Posicione o leitor sobre o c??digo de barras e pressione o bot??o para realizar a leitura e voil??… Sua aplica????o ir?? ler a entrada e realizar o processo que desejar.
Minha aplica????o leu um cupom cujo n??mero codificado era 1000909. Bem f??cil e ??til… 
Quem quiser saber mais informa????es como tipos de codifica????es, como gerar/codificar/decodificar strings para c??digo de barras no Access, acessem esse artigo da MSDN que ?? bem interessante e explicativo.

17 respostas em “Ler c??digo de barras atrav??s de um leitor ??ptico com ASP.NET”

N??o ?? preciso de DLL para a leitura. A maioria dos leitores hoje s??o conectadas diretamente na porta PS/2 do teclado ou na USB. Ent??o quando h?? a leitura ?? como se fosse digitado, ou seja, ?? como se voc?? estivesse teclado a informa????o e presisonado ENTER logo em seguida. Mas avalie qual leitora esteja usando pois o comportamento de cada uma pode distinguir a depender do modelo / marca.

Estou com uma pequena d??vida…
Tenho uma aplica????o de controle de vendas onde coloquei um leitor ??tico para reconheciimento de c??digo do banco, para puxar o produto correspondente.
Por??m, quando o leitor ??tico l?? o produto ele insere seu c??digo + nn.Ou seja minha aplica????o n??o consegue deixar fixo o valor lido pelo leito no meu inputText. Estas quebras de linha faz com que a aplica????o avance um passo…
Teria como eu deixar com que o leitor n??o quebrasse estas duas linhas ao ler um c??digo de produto???!!!

Fico no aguardo…
Valeuu,
Abs,

O nn inserido pela leitora ap??s a leitura do c??digo corresponde a dois ENTERS caso fosse pelo teclado. Como voc?? quer manter no campo, TextBox, o c??digo sem a quebra voc?? pode usar o seguinte artif??cio quando estiver lendo: capture o campo, limpe o TextBox, remova o nn da string capturada e reinsira apenas a string com o c??digo. Se voc?? estiver usando o c??digo acima ou uma varia????o dela, veja abaixo como poderia ser:

if (e.KeyCode == Keys.Enter)
{
string entrada = txtNumero.Text.Replace("n", "");
txtNumero.Text = entrada;
}

Voc?? pode adicionar um evento Atributtes para o textbox:

txtEntrada.Atributtes.Add("onkeypress", "javascript:ValidaEntrada()");

Ent??o voc?? cria um JS da seguinte forma:

function ValidaEntrada() {
if (e.KeyCode == 13)
__doPostBack('Process','');
}

Ent??o no Page_Load coloca:

if (Request.Form["__EVENTTARGET"] == "Process")
// Executa o processo

Seria algo do tipo…

Basta usar o evento no TextBox conforme o c??digo abaixo:

private void txtNumero_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string entrada = txtNumero.Text;
// Consulta no banco de dados
DataSet ds = RetornaDS("SELECT * FROM Produtos WHERE codigo = " + entrada);
}
}

Isso ?? apenas uma sugest??o do c??digo bastando adequar ?? sua necessidade.

Ol?? Thiago, o que n??o est?? compreens??vel nesse post, ?? como o valor escaneado pelo aparelho, passa do buffer para o campo txtNumero.

Ele automaticamente efetua a a????o de "colar" o valor escaneado depois do evento disparo pelo ENTER?

Poderia dar mais detalhar por gentileza?

Obrigado.

Marcio,
Quando o aplicativo est?? em execu????o, o cursor fica em foco no campo texto. Ent??o qualquer entrada de texto via teclado ser?? efetuada nesse campo. O leitor funciona como um teclado. O modelo que usei l?? o conte??do do c??digo de barras e d?? um ENTER no final. Ent??o, se o c??digo for "123", o leitor dar?? uma entrada "123ENTER". E no campo texto configuro um evento para ler o ENTER e assim pegar o conte??do para manipula????o. Veja se ficou claro e me avise qualquer coisa. Abs

Ol?? Thiago, tudo bem? Artigo do leitor ficou muito bom! Para gerar um c??digo de barra, em seguida armazenar no banco e imprimir, j?? deixando dispon??vel para leitor. Seria algo muito complicado? Voc?? pode d?? algumas dicas. Obrigado Robson Nascimento

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *