Spanish Imprimir bluetooth desde varias activity

vecino

Well-Known Member
Licensed User
Longtime User
Vecino...
En lugar de usar usa "clase" utiliza los "objetos" a nivel (global) del "starter" accedes a la impresora en un "Code Module", defines unas "funciones", le pasas los parámetros respectivos y FUNCIONA!!!
Saludos,
Edgar
Eso es lo que quiero hacer, pero no consigo que funcione :D
 

vecino

Well-Known Member
Licensed User
Longtime User
Mira si por casualidad funcionara así de primeras ( o al menos que consigas que se conecte y no se desconecte), y ya lo pulimos si optas por esta solución.
La primera prueba me salta un error que no tengo ni idea de qué hacer :D
 

Attachments

  • problem.png
    problem.png
    46.3 KB · Views: 157

josejad

Expert
Licensed User
Longtime User
Ups, cierto. Lo siento, lo hice antes de acostarme y listo de mí, ni siquiera le di a probar. Parece que la clase de la impresora muestra un diálogo en Inputlist, por lo que hay que inicializar la clase en una Activity, ya que desde un servicio no se pueden mostrar más que mensajes Toast.
Ya entonces no sabría decirte... :-(
 

vecino

Well-Known Member
Licensed User
Longtime User
Ah, vale, pasaré ese diálogo a "main" para conectar y ya sigo probando el resto.
Gracias, al menos sabes el motivo del error, porque yo estaba perdido con él :D
Saludos.
 

vecino

Well-Known Member
Licensed User
Longtime User
¡¡¡Creo que lo hemos conseguido!!!
Pero todavía no canto victoria, voy a enviárselo a un cliente de confianza para que lo pruebe, que los clientes tienen "la magia" de encontrar fallos donde jamás uno lo buscaría :D

Esta tarde me contestan... cruzo los dedos 🤞
 

scsjc

Well-Known Member
Licensed User
Longtime User
Hola buenos días a todos
Disculpar es que estoy bastante liado entre unas cosas y otras no había entrado por el foro.

Después de muchas pruebas me quede utilizando la clase Bluetooth ESC/POS Printer Class que la llamo desde un servicio (yo uso el servicio starter)
De esa forma pongo en cola de impresión lo que quiero y siempre me funciona aunque cierre los activitys.

También modifique alguna cosilla en la clase, como que compruebe si Astream.isinitialized si esta abierto lo cierra para volverlo a abrir

B4X:
Private Sub Serial1_Connected (Success As Boolean)
    Try
        If Success Then
            If Astream.IsInitialized Then Astream.Close 
            Astream.Initialize(Serial1.InputStream, Serial1.OutputStream, "Astream")
            Connected = True
            ConnectedError = ""
            Serial1.Listen
        Else
            Connected = False
            ConnectedError = LastException.Message
        End If
    Catch
        codigo.Logtxt(LastException)
    End Try
    If SubExists(CallBack, EventName & "_Connected") Then
        CallSub2(CallBack, EventName & "_Connected", Success)
    End If
End Sub
 

vecino

Well-Known Member
Licensed User
Longtime User
Todavía estoy esperando que me conteste el cliente, supongo que estará funcionando bien porque no ha dicho nada aún.
Lo llamaré más tarde, a ver qué noticias me da.
Gracias, amigos.
 

scsjc

Well-Known Member
Licensed User
Longtime User
Todavía estoy esperando que me conteste el cliente, supongo que estará funcionando bien porque no ha dicho nada aún.
Lo llamaré más tarde, a ver qué noticias me da.
Gracias, amigos.
Genial :) eso es lo mas importante que no te haya dicho nada es muy buena señal 🚀🚀🚀
Yo después de probar mucho, y tener muchos clientes imprimiendo, me decante a hacerlo desde un servicio, y en mi caso fue perfecto, por eso te lo recomendé.

saludos
 

josejad

Expert
Licensed User
Longtime User
Genial :) eso es lo mas importante que no te haya dicho nada es muy buena señal 🚀🚀🚀
Yo después de probar mucho, y tener muchos clientes imprimiendo, me decante a hacerlo desde un servicio, y en mi caso fue perfecto, por eso te lo recomendé.

saludos
Juan Carlos:

Si pudieras poner un pequeño ejemplo del servicio y cómo lo inicializas desde una activity, te lo agradecería.
El otro día probando, vi que si lo hace desde una clase, al final lo tienes que inicializar en cada activity, y tienes que estar conectando y desconectando la impresora.
Y desde un servicio, como muestra un MsgBox para pedir el dispositivo USB al que quieres conectar, no me funcionaba.
Así que me gustaría ver cómo lo haces para tener una idea.

gracias¡¡
 
Last edited:

scsjc

Well-Known Member
Licensed User
Longtime User
Juan Carlos:

Si pudieras poner un pequeño ejemplo del servicio y cómo lo inicializas desde una activity, te lo agradecería.
El otro día probando, vi que si lo hace desde una clase, al final lo tienes que inicializar en cada activity, y tienes que estar conectando y desconectando la impresora.
Y desde un servicio, como tiene muestra un MsgBox para pedir el dispositivo USB al que quieres conectar, no me funcionaba.
Así que me gustaría ver cómo lo haces para tener una idea.

gracias¡¡
luego intento montar un ejemplo :)
 

vecino

Well-Known Member
Licensed User
Longtime User
Si pudieras poner un pequeño ejemplo del servicio y cómo lo inicializas desde una activity, te lo agradecería.
El otro día probando, vi que si lo hace desde una clase, al final lo tienes que inicializar en cada activity, y tienes que estar conectando y desconectando la impresora.
Y desde un servicio, como tiene muestra un MsgBox para pedir el dispositivo USB al que quieres conectar, no me funcionaba.
Así que me gustaría ver cómo lo haces para tener una idea.gracias¡¡
Al final no lo hice como servicio porque tampoco fui capaz de echarlo a andar. Recurrí a declarar públicas las variables que controlar la conexión, si está activo el bluetooth, etc. y conectar al principio y cerrar al final cada vez que se imprime.
Lo del servicio estaría muy bien.
 

scsjc

Well-Known Member
Licensed User
Longtime User
Os adjunto un ejemplo que he hecho usando el servicio para lanzar la impresión mediante la clase Bluetooth ESC/POS Printer Class
Tendréis que cambiar la dirección MAC que he puesto por la de vuestra impresora.
Veréis que la idea es muy sencilla, y a mi me funciona bastante bien.
 

Attachments

  • service print.zip
    22 KB · Views: 172

josejad

Expert
Licensed User
Longtime User
Genial¡¡ He aprendido de este ejemplo¡¡

El "truco" es que desde el servicio muestras un Toast (que es lo único que puede mostrar un servicio) para que se conecte a la impresora desde el menú de BT de Android, y no desde la propia aplicación, si no me equivoco.

Gracias¡¡
 

scsjc

Well-Known Member
Licensed User
Longtime User
Genial¡¡ He aprendido de este ejemplo¡¡

El "truco" es que desde el servicio muestras un Toast (que es lo único que puede mostrar un servicio) para que se conecte a la impresora desde el menú de BT de Android, y no desde la propia aplicación, si no me equivoco.

Gracias¡¡
si la idea es esa... yo uso mucho los servicios porque asi me aseguro que no son afectados por las actividades, y suelo programar con esta filosofia.
 

Situ LLC

Active Member
Licensed User
Exelente amigos
He aprendido un monton compadres:cool:
Se les agradece compartir conocimiento..
 

scsjc

Well-Known Member
Licensed User
Longtime User
Exelente amigos
He aprendido un monton compadres:cool:
Se les agradece compartir conocimiento..
Gracias a ti :)
Este idea la uso también cuando subo ficheros imágenes y cualquier otro proceso que se tiene que prolongar y al cerrar el activity no quieres que se finalice.
 

vecino

Well-Known Member
Licensed User
Longtime User
Hola, amigos, espero que estén todos bien.
Retomo este hilo... ¡¡¡que no cunda el pánico!!! :D porque todo sigue funcionando bien.
Solamente que me han pedido que ahora también imprima un logo, en lugar de todo texto, y quería saber cómo lo hacéis vosotros con los 2 métodos, básicamente, que se han explicado aquí:
Uno es usando EscPosPrinter que utiliza "elsanto" y el otro es el método que utiliza "scsjc" que trabaja con un servicio.
No lo consigo, y no sé si es por la impresora o, como siempre, error mio.
Es una impresora "sin marca" de esas portables para imprimir tickets o etiquetas, parecida a esta:
fnkHlvW.png


¿Podéis poner algún ejemplo de ambos casos?
Muchas gracias.
 

vecino

Well-Known Member
Licensed User
Longtime User
Bueno, voy a crear un hilo nuevo con el tema que me preocupa ahora mismo, porque no sé cómo os puede funcionar "Bluetooth ESCP/POS Printer Class" si no tiene ni siquiera nada sobre permisos.
Saludos.
 
Top