Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   "Hola mundo", version impresion via bluetooh (https://www.clubdelphi.com/foros/showthread.php?t=92351)

ulicesVD 05-10-2017 19:36:12

"Hola mundo", version impresion via bluetooh
 
Hola a todos.

Para estas fechas seguramente ya muchos de ustedes lo tienen implementado, resulta que inicio un proyecto que requiere impresión desde android y pues nada
que les pido de favor me iluminen el camino paso a paso para ello , ya que he googleado y buscado sobre el tema pero no doy por donde , expongo hasta ahorita lo que entiendo

"Hola mundo " , version impresion via bluetooh

1.crear un proyecto con un Edit y un boton .
2. el proyecto utiliza el componente de FMX "Tbluetooh" , (he visto codigos que usan la clase FBluetoothManager)
3. enviarle el texto al componente , para que este previamente emparejado ("pair") con la impresora
4. imprima el texto .

en algún momento se utiliza un SDK de cada impresora y éste es convertido a delphi mediante la utileria java2op.exe , son de esas cosas que he leído no se en que orden va

en espera de su ayuda .

Gracias Saludos a todos.

jhonalone 05-10-2017 20:27:58

Hola ulicesVD
.
Te sugiero que te leas este hilo completo en el que se resolvió el problema.
1.- Adquiere una impresora BlueTooth como la que sugiero más arriba Exelvan HOP-E300. No sé donde
la venden ahora. Yo la obtuve en Amazon.
2.- Descarga el programa de prueba Imprimir.Zip desde un post anterior.
3.- Sigue leyendo el hilo y realiza las modificaciones que se sugieren en otros posts más abajo.
4.- Compila el programa para android. (No te olvides de activar los permisos BlueTooth en el apartador
"Permisions" del Project/Options antes de compilarlo.
5.- Instálalo en tu celular (Deberías tenerlo conectado por USB a tu PC y haber seleccionado
"Target/Android" en el desplegable de la derecha de tu pantalla) Si has hecho esto, verás que
aparece el nombre de tu celular en el apartado "Target" después de seleccionar "Target Android SDK...."
6.- Pulsa "Run Without Debugging" y Delphi lo instala automáticamente en tu celular.

Perdona si he sido tan explícito (seguro que no era necesario) pero tu dijiste "paso a paso..."

Pruebalo y nos cuentas.

Que sea la misma marca de la impresora puede ser importante, pues, aunque muchos códigos son comunes, puede haber diferencias entre marcas. Si es otra, tendrás que consultar el manual.

No te olvides de conectar la impresora y parearla con tu celular. La mía sale como "Thermal Printer".

Saludos.

Neftali [Germán.Estévez] 06-10-2017 11:50:17

Cita:

Empezado por ulicesVD (Mensaje 521564)
"Hola mundo " , version impresion via bluetooh

Una pregunta.
¿No tre serviría utilizar tethering?
Te facilitaría enormemente el trabajo (si es que esas condiciones te sirven).

ulicesVD 13-10-2017 23:47:58

Gracias amigo , hasta hoy tengo una impresora bluetooh HP OFFICEJET 100 MOBILE para ser exactos ,
1. baje el imprimir.zip ,
2. quite el componente BlueToohLE
3. cambie la definicion del objeto "impresora" a Private
4. compile sin problema e instale en mi smartphone con android version 6.0.1
5. ejecute ya en android la aplicacion , despues de vincular mi impresora
6. en conectar ,despues de vincular me imprime los 4 servicios
7. al darle imprimir me tira el error
java.io.IOException: read failed, socket might closed or time out, read ret:-1

Ojo , bajo aplicaciones de la tienda y si imprimen , sin problema ,

Gracias de antemano

jhonalone 19-10-2017 18:26:49

Hola, ulicesVD.

Estuve mirando el manual de tu impresora y he observado dos cosas:

1.- Dice que para imprimir bluetooth desde el móvil necesitas un sofware especial.
¿Lo tienes instalado?

Sacado del manual en internet:
"
Imprima desde móviles
Si dispone de un teléfono móvil que admita Bluetooth, puede comprar el software que
le permite imprimir documentos y fotos desde el teléfono.
Nota Si va a usar un teléfono móvil que ejecuta Windows Mobile, puede usar el
CD del HP para instalar el software de impresión.
Para ver una lista de teléfonos móviles y software de impresión, así como información
acerca de la obtención del software, consulte Información de impresión del teléfono
móvil.
"

2.- No he visto que sea compatible con el SO Android.

Sacado del manual.
"
Información de impresión del teléfono móvil
El siguiente software de impresión para esta impresora está disponible para estos teléfonos
móvil:
Teléfono móvil Software sitio web
Windows Mobile* Westtek JETCET http://www.westtek.com/
pocketpc/jetcet/
Blackberry Repligo Professional http://www.cerience.com/
products/pro
* Este software de impresión para Windows Mobile está disponible en el CD del software de HP
"

En ningún sitio he visto que admita comandos de Escape
Por ejemplo
Código Delphi [-]
Texto := #27 + 'a' +#49; //  Jusstificación CENTRADA
          BytesEnviados := TEncoding.ASCII.GetBytes(Texto);

El ejemplo utiliza los códigos de escape de IBM basados en código ASCII.

Intenta hablar con HP a ver qué te dicen.

Saludos.

ulicesVD 19-10-2017 20:14:43

Gracias amigo jhonalone ,

por tomarte el tiempo de revisar el tema

te comento que con el codigo de imprimir no , pude pero con el codigo de ejemplo CIbluetooh si pude imprimir texto ,solo falta especificarle el Gui del servicio de texto
ya que el que trae pues no funciona y solo lo comenté la linea para referencia , quien lo este probando


Código Delphi [-]
Const
  ServiceName = 'Basic Text Server';
//  ServiceGUI = '{B62C4E8D-62CC-404B-BBBF-BF3E3BBB1378}';
 ServiceGUI ='{00001101-0000-1000-8000-00805F9B34FB}';

Ademas este proyecto a diferencia del tuyo mete en un hilo el Socket

Código Delphi [-]
 TServerConnectionTH = class(TThread)
  private
    { Private declarations }
    FServerSocket: TBluetoothServerSocket;
    FSocket: TBluetoothSocket;
  protected
    procedure Execute; override;
  public
    { Public declarations }
    constructor Create(ACreateSuspended: Boolean);
    destructor Destroy; override;
  end;

pues ya imprimo texto , ahora el inconveniente como dijiste no acepta comandos ESC/pos , y por ende no he logrado imprimir Acentos o la "Ñ" al enviar
el texto a la impresora aplica un Encoding utf8 , trae otras variantes la clase Tencoding (ANSI,ASCII,DEFAULT,UNICODE,BigEndianUnicode,UFT7,UFT8)
e probado todas sin éxito para la impresión con acentos

Código Delphi [-]
 
     toSend:= Tencoding.UTF8.GetBytes(edit1.Text);
        FSocket.SendData(ToSend);


referente al software de HP . no lo ubico pero e usado otros similares pero pues es a nivel de usuario ,lo que se pretende es que mande la informacíon desde mi app.

Gracias , saludos.

ulicesVD 19-10-2017 20:18:06

Cita:

Empezado por Neftali (Mensaje 521585)
Una pregunta.
¿No tre serviría utilizar tethering?
Te facilitaría enormemente el trabajo (si es que esas condiciones te sirven).

Perdón por no agradecer tu colaboración a tiempo , si me echas un cable sobre el tema , de impresión por bluetooh , usando tethering ,

ya q no ubico ni como o por donde empezar ,

de antemano gracias

jhonalone 20-10-2017 12:14:09

Hola, ulicesVD.

Entiendo que vas pòr buen camino.

La clave para las Ñs y los acentos está en el juego de caracteres.

Yo lo conseguí utilizando el juego de caracteres WPC1252(Latin-1)

El comando de Escape es este (al menos en mi impresora):
Código Delphi [-]
Texto := #27 + 't' + #16; // Selecciona juego de caracteres WPC1252(Latin-1)
BytesEnviados := TEncoding.ASCII.GetBytes(Texto);
FSocket.SendData(BytesEnviados);
La impresora que yo utilizo es una mini impresora portátil para tickets como los del mercado en papel térmico.

Saludos.


La franja horaria es GMT +2. Ahora son las 17:40:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi