Bematech Software Partners

 
  • jun 12 2009

    Edição 41 – Acessando os periféricos

    Caro Parceiro,

    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.

    imgBtnCodigoBarras

    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:

    imgBtnImpressao

    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!

     

Nenhum Comentário

Deixe um comentário