Business - Automação Comercial

Bematech: Acessando os periféricos

Esta é nossa última edição do mini-curso sobre a programação do microterminal FIT Básico. Nesta edição, vamos usar funções de acesso às portas seriais e acessar periféricos conectados ao FIT Básico, como leitor de código de barras e impressora não fiscal, tendo uma idéia básica para depois poder evoluir no desenvolvimento.

por Iohannes Nakatani



Esta é nossa última edição do mini-curso sobre a programação do microterminal FIT Básico. Nesta edição, vamos usar funções de acesso às portas seriais e acessar periféricos conectados ao FIT Básico, como leitor de código de barras e impressora não fiscal, tendo uma idéia básica para depois poder evoluir no desenvolvimento.

Então, as funções serão:

  • Bematech_FIT_LeituraCodigoBarras
  • Bematech_FIT_EnviaSerial

Lendo Código de Barras

Vamos começar implementando a rotina para o uso do leitor de código de barras serial. Para isso, teremos que utilizar um conjunto de funções: uma para ler o código de barras, propriamente dito, e outra para receber byte a byte a informação do código lido. Então, a função Bematech_FIT_LeituraCodigoBarras apenas solicitará ao microterminal que acesse o leitor para ativar a leitura do código de barras, e a função Bematech_FIT_LerBuffer receberá byte a byte o código.

Em nosso formulário, criamos um botão para executar a função Bematech_FIT_LeituraCodigoBarras juntamente com a Bematech_FIT_LerBuffer, e para apresentar o código lido usaremos o mesmo campo "Memo" (para o Delphi) ou "List" (para o VB), já criado anteriormente.

Mão na massa... ou melhor, no código! ;)

Abrimos o botão "Código de Barras" para implementar:

- Em Delphi

procedure TForm1.Button7Click(Sender: TObject);
var
iRetorno: Integer;
tmp: Char;
buffer: String;
begin
application.MessageBox( "Leia o código de barras", "Informação", MB_ICONINFORMATION + MB_OK );
// Comando para ativar o FIT a retornar o código de barras
iRetorno := Bematech_FIT_LeituraCodigoBarras( strtoint( Edit1.Text ) );
if ( iRetorno = 0 ) then
begin
application.MessageBox( "Erro na execução do comando!", "ERRO", MB_ICONINFORMATION + MB_OK );
end
else
begin
// Rotina para a leitura byte a byte dos caracteres do cód. de barras
while ( tmp <> #13 ) do
begin
sleep( 100 );
tmp := Bematech_FIT_LerBuffer( strtoint( Edit1.Text ) );
buffer := buffer + tmp;
end;
Memo1.Text := buffer;
end;
end;

- Em VB

Private Sub Command7_Click()
Dim iRetorno As Integer
Dim buffer As String
Dim tmp As Byte

MsgBox "Leia o Cód. de Barras", vbInformation + vbOKOnly, "Atenção"

" Comando para leitura do código de barras"
iRetorno = Bematech_FIT_LeituraCodigoBarras(CInt(Text1.Text))

" Rotina para a leitura byte a byte dos caracteres do cód. de barras"
If iRetorno = 0 Then
MsgBox "Erro na execução do comando", vbInformation + vbOKOnly, "Atenção"
Else
buffer = ""
Do While (Chr(tmp) <> Chr(13))
Sleep (100)
tmp = Bematech_FIT_LerBuffer(CInt(Text1.Text))
buffer = buffer + Chr(tmp)
Loop
End If
List1.AddItem (buffer)
End Sub

Enviando Texto pela Serial

Para testar a função Bematech_FIT_EnviaSerial, iremos acrescentar em nosso formulário, além de um novo botão, uma caixa de texto onde entraremos com uma mensagem qualquer para envio à impressora.

Esta função também recebe como parâmetro a porta serial do microterminal onde será enviada a mensagem. Então vamos criar mais um "GroupBox" e dois "RadioButton" (para o Delphi) ou um "Frame" e dois "OptionButton" (para o VB).

Vejamos como ficará nosso formulário:

Abrimos o botão "Impressão pela Serial" para implementar:

- Em Delphi

procedure TForm1.Button8Click(Sender: TObject);
var
iRetorno: Integer;
tmp: String;
Serial: Byte;
iConta: Integer;
begin
tmp := Edit5.Text + #10 + #13;
if ( RadioButton3.Checked = True ) then
Serial := Ord( "S" )
else
Serial := Ord( "R" );

for iConta := 1 to length( tmp ) do
begin
// Comando para enviar o texto a ser impressora pela serial.
iRetorno := Bematech_FIT_EnviaSerial( strtoint( Edit1.Text ), Ord( tmp[ iConta ] ), Serial );
if ( iRetorno = 0 ) then
begin
ShowMessage( "Erro de Comunicação!" );
Exit;
end;
end;
end;

- Em VB

Private Sub Command8_Click()
Dim iRetorno As Integer
Dim Serial As Byte
Dim iConta As Integer

If Option3.Value = True Then
Serial = Asc("S")
Else
Serial = Asc("R")
End If

For iConta = 1 To Len(Text5.Text)
If (Bematech_FIT_EnviaSerial(CInt(Text1.Text), Asc(Mid(Text5.Text, iConta, 1)), Serial)) = 0 Then
MsgBox "Erro comunicação !", vbInformation + vbOKOnly, "Atenção"
iConta = Len(Text5)
End If
Next

" Para descarregar o buffer na impressora ( LF + CR )
iRetorno = Bematech_FIT_EnviaSerial(CInt(Text1.Text), 10, Serial)
iRetorno = Bematech_FIT_EnviaSerial(CInt(Text1.Text), 13, Serial)
End Sub

Assim, com estas duas implementações, concluimos nosso mini-curso sobre o microterminal FIT Básico.

Este mini-curso foi desenvolvido com a intenção de apresentar nosso microterminal FIT Básico, suas configurações e sua programação através da BemaSB32.dll com suas funções mais usuais.

Neste mini-curso aprendemos, como utilizar o display, como receber informações do FIT Básico e de como controlá-lo, além de trabalhar com periféricos conectados em suas portas seriais.

Agradecemos muito por sua atenção e nos vemos nos próximos Flash-Tips!

E, boas implementações!

Iohannes Nakatani

Iohannes Nakatani - Analista de Suporte. Bematech - Marketing de Parcerias.
Visite o site:
http://www.bematech.com.br.