Jump to content
Joubert-JS

PHP realiza Impressão com a MP-4200 TH

Recommended Posts

Pessoal estou tentando realizar impressão na Bematech MP-4200 TH com PHP 5, mas não consigo poderiam me indicar algum blog/site que ensine a realizar este feito.

Fico grato pela ajuda.

Share this post


Link to post
Share on other sites

Bom dia, Joubert. Acabo de realizar esse feito. Na verdade, conseguimos mandar a impressão pra MP 4200 TH através da rede...

<?php

$impressora_porta_padrao = 9100; // Porta em que a impressora fica escutando por padrão
$impressora_endereco_na_rede = "191.55.56.55"; // Ip da impressora na internet ou rede

/* Criar o socket responsavel pela conexão com a impressora. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() falha: motivo: " . socket_strerror(socket_last_error()) . "<br>";
} else {
    echo "OK.<br>";
}

echo "Conectando no endereço: " . $impressora_endereco_na_rede . " e porta " . $impressora_porta_padrao . "<br>";
$result = socket_connect($socket, $endereco_da_impressora_na_rede, $service_port);
if ($result === false) {
    echo "socket_connect() falha: motivo: ($result) " . socket_strerror(socket_last_error($socket)) . "<br>";
} else {
    echo "OK <br>";
}
//Pequena lista com comandos suportados pela impressora.
// A impressora pode trabalhar recebendo instruções de configurações em Hexadecimal... 

$esc	 		= "\x0"; // toda impressão deve começar com esse caracter de escape
$cortaTotal		= "\x1B\x69";
$avancaPapel		= "\x0C";
$diminuiLineSpace	= "\x1B\x33\x12";

$negritoOn		= "\x1B\x45";
$negritoOff		= "\x1B\x46";

$sublinhaOn		= "\x1B\x56\x01";
$sublinhaOff		= "\x1B\x56\x00";

$tamanhoDuploOn		= "\x1b\x64\x01";
$tamanhoDuploOff	= "\x1b\x64\x00";

$melhoraQualidade	= "\x1D\xF9\x2D\x01";
$diminuiQualidade	= "\x1D\xF9\x2D\x00";


$impressao = $esc . $melhoraQualidade . $diminuiLineSpace  ;
$impressao .= "Página teste! Impressora Funcionando\n outra linha\n";
$impressao .= $negritoOn . "Negrito ligado! " . $negritoOff . " agora desligado.";
$impressao .= $cortaTotal;

//Enviando ao socket da impressora

echo "Enviando:";
socket_write($socket, $impressao, strlen($impressao));
echo "OK <br>";


//essa parte comentada, seria a parte que escuta de volta oque a impressora
//tem a dizer, porem, nunca recebi nada por aí,

/*&echo "Reading response:\n\n";
while ($out = socket_read($socket,2)) {
   echo (string)$out;
}*/

echo "Closing socket...";
socket_close($socket);
echo "OK <br>";

Vale lembrar que, dessa maneira, você esta sozinho no quesito de "fila de impressão". Tudo era resolvido pelos drivers de spooler do sistema operacional. Agora, caso necessário, você terá de criar uma aplicação para fazer esse serviço... Valeu.

 

Retiramos os comandos daqui:

http://www.bematech.com.br/administrador/files/equipamento/suporte/17/1394308953-Impressora_MP-4200TH_Manual_01_Manual_de_Programacao.pdf

  • +1 1

Share this post


Link to post
Share on other sites

Bom dia! Felipe, usei seu codigo para imprimir uns tickets com codigo de barras, tudo deu certo como esperado, somente o bendito codigo de barras que não consigo imprimir, pois não consegui entender no manual como proceder.

Passar um numero para impressora e ela imprimir em codigo de barras. Se puder ajudar eu agradeço muito.

Share this post


Link to post
Share on other sites

Olá!

Vej que o post é antigo, mas como teve atualizção em 2018, vou citar:

Eu fiz isso em 2015 também. Ainda não tinha esse tópico, mas fiz de maneira diferente.

Eu gero um arquivo pdf com dados do bd e depois executo o lpr(no linux) para imprimir

Se for útil a alguém, é só pedir...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.