Leitura em leitores de código de barras com porta serial C#
Nesta postagem irei mostrar uma forma simples de realizar comunicação com leitor de código de barras através da porta serial.
Tanto a abertura de comunicação, quanto encerramento, além da leitura do código através da porta.
No caso eu utilizzei um leitor a laser fixo, esses bastante utilizados em mercado.
Primeiramente é necessário declarar a classe de portas seriais
public SerialPort PortaSerial { get; set; }
Com isso vou criar o método de abertura de comunicação (abertura de porta) para o meu aplicativo saber que existe comunicação com aquela porta e também que se trata de um leitor por exemplo
public bool AbreComunicacao(string portaSerial)
{
bool retorno = false;
try
{
portaSerial = portaSerial.AsString().Trim();
if (PortaSerial != null && PortaSerial.IsOpen)
{ EncerraComunicação(); }
PortaSerial = new SerialPort(portaSerial);
if (!PortaSerial.IsOpen)
{ PortaSerial.Open(); }
if (PortaSerial.IsOpen)
{ retorno = true; }
else
{ retorno = false; }
}
catch (Exception e)
{
//Exibir uma possível mensagem ou realizar algum tratamento de exceção
}
return retorno;
}
E para encerrar a comunicação o método é este
public bool EncerraComunicação()
{
bool retorno = false;
try
{
if (PortaSerial != null && PortaSerial.IsOpen)
PortaSerial.Dispose();
if (PortaSerial == null || !PortaSerial.IsOpen)
{ retorno = true; }
else
{ retorno = false; }
}
catch(Exception ex)
{
//Exibir uma possível mensagem ou realizar algum tratamento de exceção
}
return retorno;
}
Agora na leitura vou colocar um método que também retorna verdadeiro ou falso para saber se houve leitura e a leitura será retornado como out no parâmetro, mas poderia por exemplo ter o retorno direto da leitura e caso
não fosse possível ler retornar uma string vazia, são várias as possibilidades depende de como você deseja utilizar o método. Vamos à ele que é bastante simples.
public bool LePorta(out string leitura)
{
bool retorno = false;
leitura = "";
try
{
if (PortaSerial != null && PortaSerial.IsOpen)
{
leitura = PortaSerial.ReadExisting();
retorno = true;
}
else
{ retorno = false; }
}
catch(Exception ex)
{
//Exibir uma possível mensagem ou realizar algum tratamento de exceção
}
return retorno;
}
0 comentários:
Postar um comentário