Edição 45 - Acessando periféricos
Caro parceiro,
Na edição 44 de nosso Flash Tip, criamos um exemplo simples que nos possibilitou realizar uma interação entre usuário e microterminal. Na ocasião, usamos o switch/case para montagem do menu de opções e a função readkey() que permitiu a captura do teclado.
Nesta edição, iremos utilizar o microterminal no acesso a periféricos. Vamos usar as bibliotecas <NFPrint.h> para acessar a impressora não fiscal e <CDisplay.h> para acessar o display do cliente (Customar Display).
Lembrando que estamos dando continuidade ao desenvolvimento para o microterminal FIT Integra. Caso tenha perdido alguma edição anterior do Flash Tip, basta consultá-la em nosso Bemacast a partir do link:
http://partners.bematech.com.br/bemacast/flashtip/
Então, vamos lá!
Configurações iniciais
Antes de iniciarmos nosso exemplo de acesso aos periféricos, devemos inserir em nosso projeto a biblioteca <NFPrint.h> responsável pelas funções de operação com a impressora não fiscal. Então, incluímos no início do nosso projeto, junto com a lista de includes, a linha “#include <NFPrint.h>“.
Além disso, também necessitamos inserir a biblioteca nas propriedades de nosso projeto, então, basta clicarmos com o botão direito em cima de nosso projeto “BemaFit” e irmos em propriedades, conforme mostra ilustração:

Após entrarmos nas propriedades do projeto, temos a janela abaixo dividida em três colunas. Na primeira coluna, selecionamos a opção C/C++ Build. Na coluna do meio, clicamos duas vezes sobre a opção Libraries e, em seguida, em Add (ícone representado pelo sinal de +).
Será exibida uma nova janela para inserção da biblioteca “NFPrint“.
Simplesmente, informamos o nome da biblioteca, conforme ilustrado, e pressionamos OK nas janelas para confirmar as alterações.

Também iremos utilizar o display do cliente (Customer Display) em nosso exemplo, então precisamos inserir a biblioteca CDisplay em nosso projeto, porém para inserção desta biblioteca não será necessário seguir os mesmos passos descritos acima, basta a incluirmos no início do projeto usando um include, pois esta biblioteca já está presente na lista de bibliotecas do projeto.
Após as configurações, basta simplesmente copiarmos e colarmos o código abaixo em nosso projeto.
#include <allegro.h>
#include <UDisplay.h>
#include <stdio.h>
#include <CDisplay.h>
#include <NFPrint.h>
int main(void)
{
char ch;
/* instrução necessario para inicializar o a biblioteca allegro */
if (allegro_init() != 0)
return 1;
do
{
/* Instala o teclado */
install_keyboard();
char buff[256];
// Inicializar o display do usuario
UserDisplayInit();
// Limpa o display do usario
UserDisplayClearAll();
if (keypressed())
readkey(); // Flush
// Monta menu no display do usuario
UserDisplayPrint(1, 1, “1 - Impressao COM1″);
UserDisplayPrint(2, 1, “2 - Impressao display”);
UserDisplayPrint(3, 1, “Opcao:”);
memset(buff, 0, 256);
ch = readkey();
switch (ch)
{
case ‘1′:
{
int j;
// String utilizada para receber texto com tamanho de buffer 49
char bufferImp[49];
// Tipo de corte, para guilhotina - Parcial
papperCut_t ncut = CUT_PARTIAL;
// baud rate
rs232Baudrate_t baud = RS232_BAUD_9600;
// Configura a impressora para estabelecer comunicação.
// - logicalPort = SERIAL1;
// - baudRate = baud;
// - lineFeeds = 3;
// - cutType = CUT_PARTIAL.
NFPrinterConfg(”SERIAL1″, baud, 3, ncut);
// inicializa impressora.
// Nota: A configuração da impressora deve ser efetuada antes da execução
// das funções abaixo.
NFPrinterInit();
j = 0;
// Variável que irá checar o resultado da execução da função.
int result = BS_SUCCESS;
// Laço para realizar impressão
while (j < 40)
{
// Imprime a string armazenada em bufferImp, na qual o
// tamanho foi definido em srtlen(bufferImp)
sprintf(bufferImp, “%02d %s %02d\r\n”, j, “Teste de impressao FIT integra”, result);
result = NFPrinterPrint(bufferImp, strlen(bufferImp));
for (int i = 100; result != BS_SUCCESS && i >= 0; i–)
{
usleep(100000);
result = NFPrinterPrint(bufferImp, strlen(bufferImp));
}
j++;
}
j = 0;
// Avanço de 4 linha
NFPrinterLineFeed(4);
// Acionamento parcial da Guilhotina
NFPrinterCutPper(ncut);
// Finaliza mode impressão
NFPrinterStop();
UserDisplayClearAll();
UserDisplayPrint(2, 1,(result != BS_SUCCESS) ? “Erro na ultima impressao” :
“Verifique impressao”);
// Fim impressao nao fiscal
readkey();
}
break;
case ‘2′:
{
// Configura o display na serial 2(port = SERIAL2, e o tipo do
// display = CD_LD220)
CustomerDisplayConfig(”SERIAL2″, CD_LD220);
// inicializa o display do cliente
CustomerDisplayInit();
// Limpa display do usuário
// NOTA: O display do usuário deve ser previamente inicializado
// CustomerDisplayClear();
// Define como o texto será apresentado no display.
CustomerDisplaysetStatus(BLINKING);
// Emite o texto
// - “Teste linha 1!” será apresentado na primeira linha” the first line of
// the Customer Display
CustomerDisplayprint(0, “Teste linha 1!”);
// Emite o texto
// - “Teste linha 2!” será apresentado na primeira linha”
CustomerDisplayprint(1, “Teste linha 2!”);
}
UserDisplayClearAll();
UserDisplayPrint(2, 1, “Verifique Display!”);
readkey();
break;
default:
UserDisplayClearAll();
UserDisplayPrint(2, 1, “Programa encerrado!”);
readkey();
return EXIT_SUCCESS;
break;
}
/* wait for a key press */
readkey();
}
while (ch != ‘9′);
}
Depois de compilado, ao executarmos será exibido o seguinte menu no display do microterminal:
1 - Impressão COM1
2 - Impressão display
Opção:
Obs: Para que possamos ver na prática as funcionalidades de nosso exemplo, é necessário conectarmos na porta COM1 do microterminal 1 impressora não fiscal, e na porta COM2 conectarmos 1 display do cliente.
Caso a escolha no menu seja 1, automaticamente a ação tomada será a impressão do seguinte texto na bobina da impressora.
00 Teste de impressão FIT Integra 00
01 Teste de impressão FIT Integra 00
02 Teste de impressão FIT Integra 00
03 Teste de impressão FIT Integra 00
04 Teste de impressão FIT Integra 00
05 Teste de impressão FIT Integra 00
06 Teste de impressão FIT Integra 00
07 Teste de impressão FIT Integra 00
08 Teste de impressão FIT Integra 00
09 Teste de impressão FIT Integra 00
…
Caso a escolha no menu seja 2, simplesmente será exibida no display do cliente a seguinte mensagem:
Teste linha 1!
Teste linha 2!
Assim, temos um pequeno exemplo demonstrando o uso das funções das bibliotecas NFPrint e CDisplay de nosso FT Developer KIT para o microterminal FIT Integra.
Próxima edição:
Na próxima edição, vamos implementar o leitor de código de barras e acessar o microterminal remotamente.