Desenvolvimento - PHP
Utilizando Impressora Não-Fiscal Bematech em Aplicações WEB (PHP)
Este guia relata a experiência do autor na utilização de mini-impressoras em sistemas comerciais. As informações contidas aqui expressam o seu ponto de vista e a solução encontrada na ocasião.
por Robson Tenório======================================
Nota
======================================
Este
guia é para MINI-IMPRESSORAS BEMATECH NÃO-FISCAL.
Impressora
testada foi "MP-20 MI". O Sistema Operacional é Windows
XP, e linguagem de programação utilizada foi PHP(5.2).
Este exemplo, utiliza o componente "BemaMP32.OCX" para
comunicação com a "MP2032.DLL" em aplicações
WEB.
=====================================
Motivação
=====================================
É possível uma aplicação Web imprimir dados diretamente em impressora
não-fiscal (ou fiscal) ?
Uma aplicação Web para Controle de Mesas em
Restaurantes desenvolvida em PHP e instalada ná máquina do
cliente necessitava que a conta da mesa fosse impressa diretamente em uma
impressora. O cliente determinou que a impressora a ser utilizada seria a
supracitada. Como o PHP possui suporte a utilização componentes
pela sua classe "COM", mantive as esperanças e iniciei a minha
pesquisa focando na possibilidade de utilizar alguma DLL e
Driver fornecido pelo
fabricante.
======================================
Visão Geral
======================================
# É necessário registrar o driver da impressora "BemaIO.sys"
# É necessário registrar o componente "BemaMP32.OCX"
# A "MP2032.DLL" é necessária.
# Para usar no PHP, vamos carregar o componente "BemaMP32.OCX" pelo GUID
======================================
Procedimentos iniciais
======================================
# Baixar pacote "bemaMP32.zip"
Disponível em
www.bematech.com.br (Suporte / Mini-Impressoras não-fiscal / Windows).
Dentro existem 2 helps. Eles causam uma certa confusão. Na secção seguinte é
explicado o que realmente é necessário ser feito.
======================================
Registrando Driver e Componente
======================================
A) Registrando o driver da impressora
--> Copie o arquivo
"BemaIO.REG" e "BemaIO.SYS" para
"c:\windows\system32\drivers"
--> Execute
"BemaIO.REG" para registrar o driver
B) Registrando o componente "BemaMP32.OCX"
-->
Copie "BemaMP32.OCX", "MP2032.DLL",
"REGISTRAR.BAT" para
"c:\windows\system32"
--> Execute o arquivo "
Registrar.BAT", para registrar o componente
C) Pronto! Reinicie o computador.
======================================
Como
Funciona
======================================
Ao registrar o
componente "BemaMP32.OCX" este pode ser carregado pelo
PHP, atraves de sua classe "COM". Dessa forma,
o PHP poderá enviar comandos à impressora (utilizando funções
implementadas em "MP2032.DLL"), que por sua vez depende do
driver da impressora estar registrado. Isso é possível a qualquer linguagem que
suporte a utilização de componentes (exemplo a
seguir).
======================================
Usando Componente no PHP
======================================
A) Procure o GUID no registro do Windows
Geralmente é
{310DBDAC-85FF-4008-82A8-E22A09F9460B}
... Ou
...
Verifique o GUID pelo Caminho no registro :
[HKEY_CLASSES_ROOT] >> BemaPrinterXControl1.BemaPrinter >> Clsid
(Veja o valor da chave)
B) Use a classe "COM" do
PHP para carregar o componente e ter acesso as suas funções.
Exemplo:
//carrega o componente pelo GUID (pelo nome não funcionou)
$bema = new
COM("{310DBDAC-85FF-4008-82A8-E22A09F9460B}");
//abre porta
$init = $bema->IniciaPorta("LPT1");
//verifica erro
if ($init <= 0) {
echo
"erro!";
exit;
}
//imprime texto com formatação em cada
linha
//o espaçamento deve ser ajustado a depender da impressora
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("Bar
do
Robson
\n", 3, 1 , 0, 1, 0);
$bema->FormataTX(" Sistema de Bar e
Restaurante \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("Mesa:
35
\n", 2, 0 , 0, 0, 0);
$bema->FormataTX("---------------------------------
\n", 2, 0 , 0, 0, 0);
$bema->FormataTX("05 - Cerveja
Skol2,00 10,00 \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("01 - Picanha
15,00 15,00 \n", 2,
0 , 0, 0, 0);
$bema->FormataTX("02 - Batata Frita
4,008,00 \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("
------
\n", 2, 0 , 0, 0,
0);
$bema->FormataTX("
Total 33,00 \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0,
0);
$bema->FormataTX("BarRestaurante v1.0 01/05/2007 \n", 1, 0 , 1, 0,
0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0,
0);
//fecha a porta de impressao
$bema->FechaPorta();
?>
Mais exemplo de chamadas de função estão no arquivo ImpNaoFiscal.HTM . São exemplos de chamadas com declaração do ActiveX, que são ativadas pelo JavaScript. Entretanto quando carregamos o componente pelo PHP, podemos utilizar as mesmas assinaturas de funções para utilizar a impressora.
======================================Conclusões
======================================
Este guia se aplica ao Windows, para Linux
seria semelhante, com a diferença de ter os drivers/componentes necessários.
Infelizmente até a presente data não está disponível o pacote
Linux para MINI-IMPRESSORAS BEMATECH
NÃO-FISCAL.
Para este guia usei como exemplo o PHP,
qualquer outra linguagem que tem suporte a utilização de componentes, pode-se
aplicar este guia.