Spanish Imprimir bluetooth desde varias activity

vecino

Well-Known Member
Licensed 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
 

José J. Aguilar

Well-Known Member
Licensed 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
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
¡¡¡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
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
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
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
 

José J. Aguilar

Well-Known Member
Licensed 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
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
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
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

José J. Aguilar

Well-Known Member
Licensed 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
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.
 

scsjc

Well-Known Member
Licensed 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.
 
Top