usando o controle mscomm no visual basic

19
Usando o controle MSComm no Visual Basic Neste artigo vamos mostrar como usar controle MSComm da Microsoft e como detectar as portas COM disponíveis. Cada computador possui portas seriais denominadas sucessivamente : COM1 , COM2 , etc. Geralmente o mouse usa a porta COM1 o modem a porta COM2 o scanner a COM3 e assim por diante. Assim as portas seriais possibilitam um canal de transmissão de dados a partir destes dispositivos. Se você tentar verificar a disponibilidade das portas COM de sua máquina provavelmente você irá obter o erro 8002 - Número de porta Inválida . Entretanto você pode fazer o feitiço virar contra o feiticeiro usando este erro para detectar quais portas estão disponíveis e exibir somente as portas realmente disponíveis. Vamos então mostrar um projeto que pode ser usado para detectar as portas COM disponíveis ( deve funcionar bem no Win95/98 e NT) 1- Inicie um novo projeto no Visual Basic e no formulário padrão - form1 - insira um botão de comando - command1 , uma label - Portas COM disponíveis , e um controle ComboBox conforme abaixo: 2- Inclua um módulo no seu projeto e a seguir insira o seguinte código no módulo: Type DCB DCBlength As Long BaudRate As Long fBitFields As Long wReserved As Integer XonLim As Integer XoffLim As Integer ByteSize As Byte Parity As Byte StopBits As Byte XonChar As Byte XoffChar As Byte

Upload: laercio-lima

Post on 29-Nov-2015

337 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Usando o Controle MSComm No Visual Basic

Usando o controle MSComm no Visual Basic

Neste artigo vamos mostrar como usar controle MSComm da Microsoft e como detectar as portas COM disponíveis.

Cada computador possui portas seriais denominadas sucessivamente : COM1 , COM2 , etc. Geralmente o mouse usa a porta COM1 o modem a porta COM2 o scanner a COM3 e assim por diante. Assim as portas seriais possibilitam um canal de transmissão de dados a partir destes dispositivos.

Se você tentar verificar a disponibilidade das portas COM de sua máquina provavelmente você irá obter o erro 8002 - Número de porta Inválida . Entretanto você pode fazer o feitiço virar contra o feiticeiro usando este erro para detectar quais portas estão disponíveis e exibir somente as portas realmente disponíveis.

Vamos então mostrar um projeto que pode ser usado para detectar as portas COM disponíveis ( deve funcionar bem no Win95/98 e NT)

1- Inicie um novo projeto no Visual Basic e no formulário padrão - form1 - insira um botão de comando - command1 , uma label - Portas COM disponíveis , e um controle ComboBox conforme abaixo:

2- Inclua um módulo no seu projeto e a seguir insira o seguinte código no módulo:

Type DCB DCBlength As Long BaudRate As Long fBitFields As Long wReserved As Integer XonLim As Integer XoffLim As Integer ByteSize As Byte Parity As Byte StopBits As Byte XonChar As Byte XoffChar As Byte ErrorChar As Byte EofChar As Byte EvtChar As Byte wReserved1 As IntegerEnd Type

Type COMMCONFIG dwSize As Long

Page 2: Usando o Controle MSComm No Visual Basic

wVersion As Integer wReserved As Integer dcbx As DCB dwProviderSubType As Long dwProviderOffset As Long dwProviderSize As Long wcProviderData As ByteEnd Type'Declare Function GetDefaultCommConfig Lib "kernel32" _Alias "GetDefaultCommConfigA" (ByVal lpszName As String, _lpCC As COMMCONFIG, lpdwSize As Long) As Long

3- Ainda no módulo insira o seguinte código para a função DetectaPortaCOM :

Public Function DetectaPortaCOM(port As Integer) As Long'retorna zero se a porta com não existirDim cc As COMMCONFIG, ccsize As Long

ccsize = LenB(cc)

DetectaPortaCOM = GetDefaultCommConfig("COM" + Trim(Str(port)) + Chr(0), cc, ccsize)

End Function

4- Inclua o código abaixo no evento click do botão de comando - command1 :

Private Sub Command1_Click()Dim i As Integer

Combo1.ClearFor i = 1 To 16 If DetectaPortaCOM(i) <> 0 Then Combo1.AddItem "COM" & i End IfNextCombo1.ListIndex = 0End Sub

Ao executar o projeto e clicar no botão para detectar as portas a combobox irá exibir as portas disponíveis. Ver figura acima.

Usando o Controle MSComm - Propriedades

A primeira coisa a fazer para usar o controle MSComm em seu projeto e incluir o componente no seu formulário. Clique em Project | Components e selecione : Microsoft Comm Control 6.0

Obs: Este controle somente esta disponível na versão Professional do VB.

O controle MSComm fornece a interface para um conjunto de comandos de comunicação padrão : conectar com uma porta serial , conectar com outro

Page 3: Usando o Controle MSComm No Visual Basic

dispositivo de comunicação , trocar dados , monitar e responder a vários eventos durante uma comunicação serial. Podemos usar o controle para realizar as seguintes tarefas:

1. Discar um número de telefone

2. Monitarar a porta serial para entrada de dados

3. Criar sistemas de comunicação

Ao lado temos o controle MSComm sendo incluido no formulário e as propriedades que podemos configurar.

Uma das primeiras propriedades que podemos configurar é a propriedade Settings. Esta propriedades permite configurar :

A Baud Rate - ( a velocidade máxima da porta COM ) o padrão é 9600 Paridade - É usada na validação de dados. O padrão é usar "N" Data Bits - define o número de bits que representa um pacote de dados. Stop Bit - indique quando um pacote de dados foi recebido

O formato da propriedade Settings é : "BBBB,P,D,S"

Onde :

BBBB - é a Baud Rate P é a paridade D é o número de Data bits S é o número de stop bits

Os valores padrão para esta propriedade é : "9600,N,8,1"

Page 4: Usando o Controle MSComm No Visual Basic

Se a propriedade for configurada com valores inválidos , ao tentar abrir uma porta COM iremos obter o erro : 380 - Invalid Property value

Para usar o controle MSComm e estabelecer uma comunicação com uma porta serial usamos as seguintes propriedades:

Propriedade Descrição

CommPort Define e retorna o número a porta de comunicação

Settings Define e retorna : baud rate, parity, data bits, e stop bits como uma string

PortOpen Define e retorna o estado da porta de comunicação. Também abre e fecha a porta.

Vejamos um exemplo de código para realizar esta tarefa:

'Abre a porta serialMSComm1.CommPort = 2MSComm1.Settings = "9600,N,8,1"MSComm1.PortOpen = True

Como funciona:

a. A propriedade CommPort define qual porta serial vai ser aberta . O número 2 indica que abrimos a porta COM2. Podemos usar valores entre 1 e 16. O valor padrão é 1.

b. A propriedade Settings permite definir as propriedades discutidas acima : baud rate, parity, data bits, e stop bits

c. A propriedade PortOpen para estabelecer a conexão . Ela retorna um valor Verdadeiro (True) ou Falso ( False)

Podemos configura estas propriedades em tempo de projeto clicando em Custom na janela de propriedades do controle e definindo os valores na janela Property Pages .

Usando um Modem

Podemos usar o controle MSComm com um modem através dos comandos compatíveis com o padrão Hayes; tanto para discar um número de telefone como para efetuar uma conexão com outro modem.

Apos definir as propriedades CommPort, Settings e PortOpen para estabelecer a conexão , usamos a propriedade Output para ativar e interagir com o modem. Exemplo:

MSComm1.Output = "ATDT 235-4545" & vbCr

Page 5: Usando o Controle MSComm No Visual Basic

Onde :

AT - inicia a conexão D - disca o número T - define se usamos Tom ou Pulso.

Nota: Os comandos Hayes são padronizados e permitem que o programa de comunicação controle as funções do modem. Porém, nem todos os modems compatíveis com o padrão Hayes (hoje, maioria absoluta) aceitam todos os comandos, e alguns possuem comandos especiais. O manual do modem deve conter essas informações e também os valores default (pré-configurados na fábrica). 

Os comandos são dados a partir do programa de comunicação, em modo terminal, ou já estão embutidos no próprio soft de comunicação. Normalmente, começam com os caracteres AT, que fazem o modem prestar atenção ao que é comandado a seguir, podem ter (conforme o modem) de 40 a 255 caracteres na linha de comando e terminam, como qualquer comando em computador, com o sinal <CR> (Carriage Return - sinal obtido quando se pressiona a tecla [Enter] ou [Return] - em código <CR> equivale a usar CHR$(13) ou vbcr)

Lista de comandos Hayes

Os comandos Hayes são enviados na forma AT[primeiro comando] [segundo comando] [terceiro comando etc.] [Enter/Return].

AT é o código de atenção, usado no início de cada linha de comando, tenha ela um ou mais comandos Hayes. Apenas o comando [A/] não usa o código de atenção, e serve para repetir o último comando executado. A seguir uma lista dos principais comandos Hayes :

Comando Hayes

Descrição

A conecta em modo de resposta

Dx Discar (Dial) ; onde x pode assumir P(Pulso) , T(Tom) , R (modo de resposta) , W (espera por tom de discar)

Ex Ecoa ou não os caracteres para o micro em modo local , onde o x pode assumir : 0 ( retira o eco) ou 1 (inclui o eco)

Hx Controla a conexão do modem. O x pode assumir: 0 (desconecta) ou 1 (conecta)

Vx Formato de resposta, onde x pode ser : 0 (formato numérico) ou 1 (formato texto)

Z Reseta o modem.

Ex: ATZ - reseta o modem , ATA - coloca o modem em estado de resposta , ATH0 - Desconecta o modem.

Alocação do Buffer de Memória

Page 6: Usando o Controle MSComm No Visual Basic

Quando uma porta é aberta , são criados buffers para transmitir e receber dados. Para gerenciar estes buffers podemos usar a janela de Property Pages clicando em Custom na janela de propriedades do controle.

As propriedades InBufferSize e OutBufferSize definem quanto de memória é alocado para receber e transmitir buffers. ( armazenam os dados de chegada e de saida). Quanto maior o valor usado , menor a memória disponível para sua aplicação. Se o valor for muito pequeno você corre o risco de um transbordamento de buffer a menos que você use Handshaking. Atualmente , devido a quantidade de memória dos computadores , podemos usar valores maiores para alocar memória.

As propriedades RThreshold e SThreshold

As propriedades RThreshold e SThreshold ajustam ou retornam o número de caracteres que são recebidos nos buffers de transmissão e recepção antes que o evento OnComm seja disparado.

O evento OnComm é usado para monitorar e responder ás mudanças no estado da comunicação. Se cada propriedade for definida com o valor 0 ( este é o padrão ) evita que o evento OnComm seja disparado. Qualquer outro valor diferente de zero fará com que o evento OnComm seja disparado sempre que um caractere for recebido no buffer.

As propriedades InputLen e EOFEnable

Definir a propriedade InputLen com o valor 0 faz com que o controle leia todo o conteúdo do buffer de recepção quando usamos a propriedade Input . Ao ler dados de uma máquina cuja saída esta formatada para blocos de dados de tamanho de comprimento fixo podemos ajustar o valor desta propriedade de forma correta.

A propriedade EOFEnable é usada para indicar quando um caracter de fim de arquivo ( End of File) for encontrado duranta uma entrada de dados. Definir esta propriedade como True faz com que a entrada de dados pare e o evento OnComm seja disparado para informar a condição acabou de ocorrer.

Gerenciando os buffers de transmissão e recepção

Quando uma porta é aberta os buffers de transmissão e recepção de dados são criados . Eles são usados para receber os dados que chegam e transmitir os dados que saem. O controle MSComm permite gerenciar estes buffers através de propriedades que permitem receber e transmitir dados , determinar o tamanho de cada buffer e manipular dados do tipo teto e dados do tipo binário.

O buffer de recepção

Page 7: Usando o Controle MSComm No Visual Basic

A propriedade Input é usada para armazenar e retornar dados de um buffer de recepção. Assim se você que receber dados de um buffer de recepção e exibí-los em uma caixa de texto ( text1.text ) pode usar o seguinte código:

Text1.text = MSComm1.Input

Se quiser receber e exibir todo o conteúdo do buffer deve definir a propriedade InputLen com valor 0 .

Para receber dados no formato Texto ou Binario você deve definir a propriedade InputMode para um dos seguintes valores : comInputModeText (dados no formato ANSI) ou comInputModeBinary(dados que contenham caracteres de controles , Nulls ,etc..)

Cada byte de dados recebido é movido para o buffer de recepção e a propriedade InBufferCount é incrementada de um ; assim podemos usar a propriedade InBufferCount para retornar o numero total de bytes no buffer de recepção. Para limpar o buffer de recepção definimos o valor desta propriedade para o valor igual a 0.

O buffer de transmissão

A propriedade Output é usada para enviar comandos e dados para o buffer de transmissão.

Da mesma forma que a propriedade Input , os dados podem ser enviados no formato Texto ou Binário. Podemos enviar comandos , tetos , ou uma matriz de dados : Veja o código exemplo a seguir:

Dim Out as byte' Envia um comando AT MSComm1.Output = "ATDT 555-5555"

' Envia uma string MsComm1.Output = "Estou enviando uma string"

' Enviando uma matriz de dadosMSComm1.Output = OutAo final de uma linha de dados devemos usar o caracter de retorno - vbCr .

Para monitorar o buffer de transmissão usamos a propriedade OutBufferCount. Definindo o valor desta propriedade como igual a zero limparemos o buffer de transmissão.

Agora um exemplo prático

Vamos aplicar toda a teoria vista acima em um exemplo prático. Vamos criar um projeto para discar um número telefônico usando um modem.

1- Inicie um novo projeto no VB e no formulário padrão insira uma caixa de texto - text1.text

2- Faça uma referência ao componente MSComm - MSComm1 - no seu projeto - Microsoft Comm Control 6.0 ( MSCOMM32.ocx)

Page 8: Usando o Controle MSComm No Visual Basic

3- Inicialmente vamos configurar as seguintes propriedades do controle MSComm1 :

Propriedade ValorRThreshold 1SThreshold 1InputLen 0ComPort A porta do seu modem

A primeira a fazer e abrir a porta COM , para isto usamos a propriedade - PortOpen .

Depois enviamos um comando a porta . Como queremos discar um número vai modem vamos usar os comandos Hayes - ATDT

AT diz ao modem que um comando esta chegando DT informa para discar o número usando a discagem de tom. Veja

abaixo o código:

Private Sub Command1_Click()

MSComm1.PortOpen = TrueMSComm1.Output = "ATDT" & text1.Text & Chr$(13)

End Sub

Obs: precisamos incluir o codigo de controle CHR$(13) depois do comando. O número a ser discado deverá ser informado na caixa de texto - text1.text.

Como vamos ter certeza de que a discagem ocorreu com sucesso ??? Para isto vamos usar o evento OnComm.

Usamos o evento OnComm para verificar se os dados estão sendo recebidos. Para receber os dados checamos a propriedade Input , ocorre que os dados ficam por pouco segundos na propriedade Input. Aí é que entra o evento OnComm .

Para disparar o evento configuramos as propriedades RThreshold e SThreshold com valor igual a 1. Para obter o resultado de um comando enviado para o modem vamos usar o seguinte código no evento OnComm:

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent 'mensagens dos eventos Case comEvReceive Text1.Text = Text1.Text & StrConv(MSComm1.Input, vbUnicode) End SelectEnd Sub

Este código verifica qual evento ocorreu e se o for o evento Receive o conteúdo da propriedade Input é adicionada ao final da caixa de texto:

Podemos usar o evento OnComm também para monitorar erros durante a comunicação. Vejamos a seguir uma tabela com as constantes que podem ocorrer quando o evento OnComm ocorre.

Constante Valor Descrição

Page 9: Usando o Controle MSComm No Visual Basic

comEvSend 1 Numeros de caracteres no buffer de transmissão menor que RThreshold.

comEvReceive 2 Recebendo RThreshold número de caracteres.

comEvCTS 3 Alteraçao em Clear To Send line.

comEvDSR 4 Alteração na linha Data Set Ready.

comEvCD 5 Alteração em Carrier Detect line.

comEvRing 6 Chamado detectado. Alguns UARTs (universal asynchronous receiver-transmitters) podem não suportar este evento.

comEvEOF 7 Fim de arquivo (ASCII character 26)

Para encerrar o artigo vamos mostrar um projeto onde usamos as propriedades e eventos do controle MSComm discutidas.

1-) inicie um novo projeto no VB e no formulário padrão insira os controles conforme o layout abaixo:

Private Sub Form_Load()Dim i As IntegerDim sSettings As StringsSettings = MSComm1.SettingscboBaubRate.Text = Left$(sSettings, 4)cboParity.Text = Mid$(sSettings, 6, 1)cboDataBits.Text = Mid$(sSettings, 8, 1)cboStopBits.Text = Mid$(sSettings, 10, 1)cboCommand.ListIndex = 0

'// obtem porta comShowDoEventsListaPortasCom

End Sub

Como podemos ver na carga do formulário , no evento Load , obtemos os valores da propriedade Settings e preenchemos as caixas de combinação extraindo os valores pertinentes a cada propriedade.

A seguir usamos a função ListaPortasCom para detectar e listar as portas COM disponíveis. A função é exibida a seguir:

Private Sub ListaPortasCom()Dim i As Integer

cboComm.ClearSetStatus "Verificando as portas disponíveis...", True

Page 10: Usando o Controle MSComm No Visual Basic

For i = 1 To 16 If DetectaPortaCOM(i) Then cboComm.AddItem i SetStatus "COM" & i & " encontrada", False End IfNextcboComm.ListIndex = 0End Sub

Abaixo a tela de exibição do projeto:

A função DetectaPortaCOM foi discutida no inicio do artigo. O resto do código é trivial. Para fazer o download do projeto clique aqui :  Exemplo de utilização do MSComm - Mscom.zip

Exemplo Avançado

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

POSTADO POR THIAGO MARÇAL ON SEGUNDA-FEIRA, 21 DE JUNHO DE 2010 / MARCADORES: CÓDIGO DE

BARRAS

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...

Page 11: Usando o Controle MSComm No Visual Basic

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:

Page 12: Usando o Controle MSComm No Visual Basic

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

Page 13: Usando o Controle MSComm No Visual Basic

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.

1 3 c o m e n t á r i o s :

Anônimo disse...

Será necessário instalar alguma dll do leitor de código de barras para que o asp.net

identifique o leitor ?

5 de agosto de 2010 09:32

Thiago Marçal disse...

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.

5 de agosto de 2010 14:27

Anônimo disse...

Page 14: Usando o Controle MSComm No Visual Basic

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 + \n\n.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,

28 de agosto de 2010 19:45

Thiago Marçal disse...

O \n\n 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 \n\n 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; 

}

29 de agosto de 2010 01:46

Anônimo disse...

Legal. O codigo de barras é do DVD Amigos Por Siempre. Massa

24 de fevereiro de 2011 03:17

Page 15: Usando o Controle MSComm No Visual Basic

TH Informática disse...

Thiago!Blz?

Otimo seu Post, estou trabalhando com WebForms. Sabe me dizer como fazer

esquema KeyDown via webForms?

Obrigadão!Abraço

23 de março de 2011 14:08

Thiago Marçal disse...

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...

25 de março de 2011 18:22

Unknown disse...

Amigo vc teria como me dizer, como fazer pro campo que lê o codigo de barras ir

ao banco de dados consultar e retornar o produto? Como em um sistema de

mercado. Grato

27 de maio de 2012 16:00

Page 16: Usando o Controle MSComm No Visual Basic

Thiago Marçal disse...

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.

27 de maio de 2012 17:31

Pedro disse...

Vlw cara manja muito vc.. :D

24 de outubro de 2012 15:58

Felype Santos disse...

Nossa Show de bola..

ta de parabéns Thiago Marçal!

Muito bons os seus artigos até aqui os melhores que já li e consegui compreender..

10 de fevereiro de 2013 00:30

Marcio Ordoñez disse...

Olá Thiago, o que não está compreensível nesse post, é como o valor escaneado

pelo aparelho, passa do buffer para o campo txtNumero.

Page 17: Usando o Controle MSComm No Visual Basic

Ele automaticamente efetua a ação de "colar" o valor escaneado depois do evento

disparo pelo ENTER?

Poderia dar mais detalhar por gentileza?

Obrigado.

1 de julho de 2013 18:44

Thiago Marçal disse...

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

2 de julho de 2013 19:19

P o s t a r u m c o m e n t á r i o