giorgiofellipe / cordova-plugin-datecs-printer

Cordova plugin to print on Mobile Bluetooth ESC/POS Printers - Tested on Datecs DPP-250 Printer
MIT License
73 stars 60 forks source link

Dúvida Status Impressora #4

Closed alexandregncoelho closed 8 years ago

alexandregncoelho commented 8 years ago

Olá, primeiramente, parabéns pela contribuição. Estou trabalhando com impressoras datecs também e queria saber se esse plugin que desenvolveu para o cordova consegue recuperar em tempo real e de forma imediata o status "real" da impressora. Estou usando recentemente um plugin cordova para conexões bluetooth onde utilizo o método isConnected() para checar se a impressora está conectada ao dispositivo. Ele funciona bem, mas se eu desligar a impressora e imeditamente chamar esse método isConnected() ele continua retornando que a impressora está conectada. Somente após aproximadamente 5 segundos que este método começa a retornar que a impressora está desconectada. Ou seja, o plugin que uso tem aproximadamente um delay de 5 segundos para atualizar o status da impressora. Gostaria de saber se o plugin que você desenvolveu também tem este problema. Desde já, muito obrigado!

giorgiofellipe commented 8 years ago

@alexandregncoelho sempre que a conexão é perdida é disparado um evento chamado DatecsPrinter.connectionStatus passando o status da conexão na variável isConnected do evento. Portanto vc pode criar um listener em cima desse evento e tratar a alteração de status como quiser. Ex.:

window.broadcaster.addEventListener("DatecsPrinter.connectionStatus", function (e) {
          //connection lost
          if (!e.isConnected) {
            alert('connection lost!');
          }
        });
alexandregncoelho commented 8 years ago

Entendi. Mas de quanto em quanto tempo esse status é atualizado? Uma seguinte situacao: Meu aplicativo está conectado a impressora e de repente eu desligo a impressora. Imediatamente, em menos de um segundo apos desligar ela, mando um comando de impressão para a impressora, mas quero checar se a impressora está conectada. Para q isso funcione sem erros, o plugin deve atualizar constantemente o status da impressora. De quanto em quanto tempo esse status é atualizado? Se eu desligar a impressora, após quanto tempo o status da impressora será mudado? Tem um outra forma de sempre que eu for imprimir, saber se a impressora está conectada? Ou se o comando de impressão que enviei para impressora foi executado corretamente imprimindo todos os dados?

giorgiofellipe commented 8 years ago

O evento é disparado de imediato.

Ou se o comando de impressão que enviei para impressora foi executado corretamente imprimindo todos os dados? Essa é uma dificuldade que encontrei e até o momento não achei uma maneira de resolver, se tiver alguma ideia fico feliz em discutir

alexandregncoelho commented 8 years ago

Certo. Mas seria imediato só se a impressora, ao desligar, enviasse uma notificação informando que a conexão seria perdida? Isso acontece? Desde já, muito obrigado pela atenção Giorgio. Em 15/11/2015 2:22 PM, "Giorgio Fellipe" notifications@github.com escreveu:

O evento é disparado de imediato.

Ou se o comando de impressão que enviei para impressora foi executado corretamente imprimindo todos os dados? Essa é uma dificuldade que encontrei e até o momento não achei uma maneira de resolver, se tiver alguma ideia fico feliz em discutir

— Reply to this email directly or view it on GitHub https://github.com/giorgiofellipe/cordova-plugin-datecs-printer/issues/4#issuecomment-156825796 .

giorgiofellipe commented 8 years ago

Sim, como pode ser visto nesta linha é aberto um canal de comunicação com a impressora, se algo acontecer que interrompa a comunicação o evento é disparado.

alexandregncoelho commented 8 years ago

Você sabe como eu posso fazer de forma garantida a impressão? Por exemplo, sempre antes de imprimir, quero garantir que a impressora está conectada. Sabe a melhor de fazer isso com o plugin que voce desenvolveu? Quais funções devo usar? Obrigado! Em 15/11/2015 6:03 PM, "Giorgio Fellipe" notifications@github.com escreveu:

Sim, como pode ser visto nesta linha https://github.com/giorgiofellipe/cordova-plugin-datecs-printer/blob/master/src/android/DatecsSDKWrapper.java#L337 é aberto um canal de comunicação com a impressora, se algo acontecer que interrompa a comunicação o evento é disparado.

— Reply to this email directly or view it on GitHub https://github.com/giorgiofellipe/cordova-plugin-datecs-printer/issues/4#issuecomment-156848843 .

giorgiofellipe commented 8 years ago

Além desse evento vc pode acompanhar o status da impressora através do getStatus, a documentação da biblioteca da Datecs não dá muita informação quanto aos códigos de status retornados nessa função, na verdade explicam apenas que 4 significa que a impressora está sem papel.

alexandregncoelho commented 8 years ago

Você sabe como eu posso fazer de forma garantida a impressão? Por exemplo, sempre antes de imprimir, quero garantir que a impressora está conectada. Sabe a melhor de fazer isso com o plugin que você desenvolveu? Quais funções devo usar? Obrigado!

giorgiofellipe commented 8 years ago

No app que desenvolvi usei somente esses dois métodos mesmo, observando o evento DatecsPrinter.connectionStatus e verificando o status (getStatus), nada além disso, e não tive problemas...

alexandregncoelho commented 8 years ago

Certo. Muito obrigado, Giorgio, pela disponibilidade. Vou fazer os testes aqui! Abraço.

alexandregncoelho commented 8 years ago

Boa tarde, Giorgio. Ao fazer o build da aplicação usando seu plugin, o seguinte erro está aparecendo:

.../PrinterDatecs/platforms/android/src/com/giorgiofellipe/datecsprinter/DatecsSDKWrapper.java:540: error: cannot find symbol

    LocalBroadcastManager.getInstance(mWebView.getContext()).sendBroadcastSync(intent);

symbol: variable LocalBroadcastManager location: class DatecsSDKWrapper

Parece que não está reconhecendo a variável "LocalBroadcastManager"

alexandregncoelho commented 8 years ago

Desconsidere a mensagem anterior. Foi porque esqueci de baixar o plugin: https://github.com/bsorrentino/cordova-broadcaster.git