PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 21 → Imprimir desde Android por bluetooth
Imprimir desde Android por bluetooth
Débuté par JAVIER / Javier, 15 avr. 2014 05:17 - 12 réponses
//hostimage.webdev.info/avatars/ziuaJr3cMsulr2k3LuFMAA
Membre enregistré
12 messages
Posté le 15 avril 2014 - 05:17
Alguien ha impreso desde Android por bluetooth? como lo han hecho?
//hostimage.webdev.info/avatars/ziuaJr3cMsulr2k3LuFMAA
Membre enregistré
12 messages
Posté le 16 avril 2014 - 06:12
con la impresora portátil me vino un cd con un programa demo y el sdk, el programa en java es el siguiente, como lo puedo integrar en una aplicación windev mobile?

/*
* Copyright (C) 2011 Beijing REGO tech ltd.
* mobile printer library
* auther
* wpeng@rgprt.com
*
* website
* www.rgprt.com
*
* date
* 2011/3/16
*/

package rego.PrintTest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;
import rego.PrintLib.*;
import rego.PrintLib.PortOperation.btOperation;
public class PrintTestAcitvity extends Activity {

btOperation bo = new btOperation();
//// ¶ÔÆ뷽ʽ
/**
* printing text align left
*/
public static final int AT_LEFT = 0;
/**
* printing text align center
*/
public static final int AT_CENTER = 1;
/**
* printing text align right
*/
public static final int AT_RIGHT = 2;

private Button btConnect = null;
private Button btCancel = null;
private Button asciiSend = null;
private Button graphicSend = null;
private regoPrinter mobileprint = null;
private boolean bConnect = true;
private TextView textTitle = null;
private EditText portName;
private int iObjectCode;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


btConnect = (Button)findViewById(R.id.connect);
btCancel = (Button)findViewById(R.id.cancel);
asciiSend = (Button)findViewById(R.id.asc_send);
graphicSend = (Button)findViewById(R.id.gra_send);
textTitle = (TextView)findViewById(R.id.title);
portName = (EditText)findViewById(R.id.portName);

iObjectCode = 0;
mobileprint = new regoPrinter();
asciiSend.setEnabled(false);
graphicSend.setEnabled(false);

btConnect.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

String strName = portName.getText().toString();
if(strName.length() == 0)
{
Toast.makeText(PrintTestAcitvity.this, "Error:port name empty", Toast.LENGTH_SHORT).show();
return;
}

if(bConnect)
{
try
{
mobileprint.CON_LnitPrintLib();

iObjectCode = mobileprint.CON_ConnectDevice(strName);
}
catch(printLibException e)
{
Toast.makeText(PrintTestAcitvity.this, e.GetMessage(),
Toast.LENGTH_LONG).show();
}
finally
{
if(iObjectCode != 0)
{
// connect succeed
textTitle.setText(strName + PrintTestAcitvity.this.getString(R.string.consucceed));
btConnect.setText(R.string.disconnect);
bConnect = false;
asciiSend.setEnabled(true);
graphicSend.setEnabled(true);
}
}
}
else
{
textTitle.setText(strName + PrintTestAcitvity.this.getString(R.string.disconnect));
asciiSend.setEnabled(false);
graphicSend.setEnabled(false);
try {
mobileprint.CON_CloseConnect(iObjectCode);
} catch (printLibException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bConnect = true;
btConnect.setText(R.string.connect);
}
}
});

btCancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!bConnect)
{
try {
mobileprint.CON_CloseConnect(iObjectCode);
} catch (printLibException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

mobileprint.CON_FreePrintLib();
finish();
return;
}
});

asciiSend.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
// mobileprint.CON_PageStart(iObjectCode, 576, 0) &&
if(mobileprint.ASCII_QueryPrinterStatus(iObjectCode))
{
//Çå³ý´òÓ¡»ú»º³å
mobileprint.ASCII_Reset(iObjectCode);

//´òÓ¡LogoͼƬ£¬ÏȽ«Í¼Æ¬ÏÂÔØÖÁ´òÓ¡»úÖÐÔÙÖ´Ðд˺¯Êý
//mobileprint.PrintFlashPic(1, 0);

//´òÓ¡title
mobileprint.ASCII_AlignType(iObjectCode, AT_CENTER);
mobileprint.ASCII_FormatString(iObjectCode,false,false,true,false,false);
mobileprint.ASCII_SendString(iObjectCode, "±£ÏÕÀíÅâµ¥", "gb2312");
mobileprint.ASCII_FeedLines(iObjectCode, 20);
mobileprint.ASCII_Reset(iObjectCode);

//´òÓ¡ÄÚÈÝ
mobileprint.ASCII_SetLineSpace(iObjectCode, 20);//ÉèÖÃÐмä¾à
mobileprint.ASCII_FormatString(iObjectCode,false,false,true,false,false);
mobileprint.ASCII_SendString(iObjectCode, "±¨°¸ºÅ£º ", "gb2312");
mobileprint.ASCII_FormatString(iObjectCode,false,false,false,false,false);
mobileprint.ASCII_SendString(iObjectCode, "90202011335665433532", "gb2312");
mobileprint.ASCII_PrintCRLF(iObjectCode, 1);

mobileprint.ASCII_FormatString(iObjectCode,false,false,true,false,false);
mobileprint.ASCII_SendString(iObjectCode, "³µÅƺŠ: ", "gb2312");
mobileprint.ASCII_FormatString(iObjectCode,false,false,false,false,false);
mobileprint.ASCII_SendString(iObjectCode, "¾©A12133", "gb2312");
mobileprint.ASCII_PrintCRLF(iObjectCode, 1);

mobileprint.ASCII_FormatString(iObjectCode,false,false,true,false,false);
mobileprint.ASCII_SendString(iObjectCode, "±£ÏÕÈËÐÕÃû : ", "gb2312");
mobileprint.ASCII_FormatString(iObjectCode,false,false,false,false,false);
mobileprint.ASCII_SendString(iObjectCode, "YN-KF56", "gb2312");
mobileprint.ASCII_PrintCRLF(iObjectCode, 1);

mobileprint.ASCII_FormatString(iObjectCode,false,false,true,false,false);
mobileprint.ASCII_SendString(iObjectCode, "±¾È˳ÐŵÒò ______________________________________________ ", "gb2312");
mobileprint.ASCII_PrintCRLF(iObjectCode, 2);
mobileprint.ASCII_SendString(iObjectCode, "(ÊÂÓÉ)·ÅÆú´ËʹʵÄÒ»ÇÐÅ⳥Ȩ", "gb2312");

mobileprint.ASCII_AlignType(iObjectCode, AT_RIGHT);
mobileprint.ASCII_SendString(iObjectCode, "Äê ÔÂ ÈÕ", "gb2312");
mobileprint.ASCII_PrintCRLF(iObjectCode, 2);

mobileprint.ASCII_Reset(iObjectCode);

mobileprint.CON_PageEnd(iObjectCode);
}
else
{
Toast.makeText(PrintTestAcitvity.this, "Printer status error",
Toast.LENGTH_LONG).show();
}
} catch (printLibException e) {
// TODO Auto-generated catch block
Toast.makeText(PrintTestAcitvity.this, e.GetMessage(),
Toast.LENGTH_LONG).show();
}
}
});

graphicSend.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
if(mobileprint.CON_PageStart(iObjectCode, 576, 450) && mobileprint.ASCII_QueryPrinterStatus(iObjectCode))
{
//Çå³ý´òÓ¡»ú»º³å
mobileprint.ASCII_Reset(iObjectCode);

mobileprint.DRAW_Line(iObjectCode,0, 1, 575, 1,3);
mobileprint.DRAW_Line(iObjectCode,0, 1, 0, 450,3);
mobileprint.DRAW_Line(iObjectCode,575, 1, 575, 450,3);
mobileprint.DRAW_Line(iObjectCode,0, 450, 575, 450,3);
mobileprint.DRAW_Line(iObjectCode,465, 1, 465, 450,1);
mobileprint.DRAW_Rectangle(iObjectCode, 0, 0, 80, 50, 1, true);
mobileprint.DRAW_Text(iObjectCode, 30, 80, "ÉϺ£¿ì½Ý¿ìÔËÓÐÏÞ¹«Ë¾ ", 40);
mobileprint.DRAW_Text(iObjectCode,90, 185, "ÉϺ£ -> ±±¾©", 35);
mobileprint.DRAW_Text(iObjectCode,80, 245, "(ÉϺ£±±Ç๫·°ì)", 20);
mobileprint.DRAW_Text(iObjectCode,310, 245, "(»ðʮ·վ)", 20);
mobileprint.DRAW_Text(iObjectCode,20, 305, "20112-02100100-0101-2112-10", 30);
mobileprint.DRAW_Code128(iObjectCode, 60, 350, 1, 60, "754432112-2");
mobileprint.DRAW_CreateRotalBlock(iObjectCode,476, 0, 450,100, 2);//(0.0) Ϊ×óÉϽǵľØÐÎ
mobileprint.DRAW_Code128(iObjectCode, 40, 5, 1, 60, "754432112-2");


mobileprint.CON_PageEnd(iObjectCode);
}
else
{
Toast.makeText(PrintTestAcitvity.this, "Printer status error",
Toast.LENGTH_LONG).show();
}
} catch (printLibException e) {
// TODO Auto-generated catch block
Toast.makeText(PrintTestAcitvity.this, e.GetMessage(),
Toast.LENGTH_LONG).show();
}
}
});
}
}
//hostimage.webdev.info/avatars/default.gif
Posté le 27 mai 2014 - 05:46
Nadie lo ha hecho??? eso es lo que no me ha gustado de Windev, no hay documentación, soporte ni donde consultar las cosas que en otras herramientas las encuentras.
//hostimage.webdev.info/avatars/default.gif
Posté le 02 octobre 2014 - 18:44
Tengo el mismo problema, lo conseguiste?
Opino igual que tu, es herramienta muy potente pero nada de nada de documentación y cuando preguntas algo la gente no ayuda, yo vengo de Velneo y si algo bueno tiene es su foro.
Espero que esto cambie y tengamos una buena comunidad.
Saludos.
//hostimage.webdev.info/avatars/default.gif
Posté le 02 octobre 2014 - 22:24
Te cuento que por fin lo logré.

Creas un procedimiento en java como el que te pongo a continuación.

en esta linea: impresora = callWLProcedure_String("imp1"); llama a un procedimiento en windev y lo que hace es seleccionar poner el nombre de la impresora ( si quieres lo puedes poner directo )

en esta linea: String msg = callWLProcedure_String("imp_texto"); llama a un procedimiento donde armas es texto a imprimir y le das un Result texto_a_imprimir (tambien podrias ponerlo directo)
y listo, cualquier cosa me preguntas.

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.Button;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Set;
import java.util.UUID;

public static void imprime_factura()
{
// android built in classes for bluetooth operations
BluetoothAdapter mBluetoothAdapter;
BluetoothSocket mmSocket;
BluetoothDevice mmDevice;

OutputStream mmOutputStream;
InputStream mmInputStream;
Thread workerThread;

byte[] readBuffer;
int readBufferPosition;
int counter;
String impresora;
impresora = "";

try {
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter
.getBondedDevices();
if (pairedDevices.size() > 0) {
impresora = callWLProcedure_String("imp1");
for (BluetoothDevice device : pairedDevices) {

if (device.getName().equals(impresora)) {
mmDevice = device ;
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
String msg = callWLProcedure_String("imp_texto");
msg += "\n";

mmOutputStream.write(msg.getBytes());
mmOutputStream.close();
mmInputStream.close();
mmSocket.close();
break;
}
}
}
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//hostimage.webdev.info/avatars/OgdyRDoHORQSkqVCm5Uv5g
Membre enregistré
51 messages
Popularité : +1 (1 vote)
Posté le 03 octobre 2014 - 09:39
Hola Javier,

Sí, tienes razón. Lamentablemente no hay una comunidad grande de Windev - España.

Nosotros somos ditribuidores de Pcsoft para España.
Antes teníamos una comunidad más amplia, teníamos un foro en nuestra web, pero debido a ciertas circunstancias graves se dejo y crackearon el foro. La persona que lo creo estuvo 1 año prácticamente sin movimiento.

Estamos intentado recuperar esa comunidad poco a poco. Cuando actualicemos nuestra web crearemos también un foro.
Hace un par de días creamos un grupo en Facebook de Windev, todavía no hay movimiento. Poco a poco esperamos que sea una gran grupo donde la gente pueda opinar, consultar..etc: https://www.facebook.com/groups/463317133806320/

En las siguientes direcciones de Youtube puedes consultar vídeo tutoriales en español, aunque de momento son solo de Windev:



También indicarte que disponemos de los manuales de las tres herramientas traducidos al español, por si te pudiera interesar.

Espero que aunque poca, esta información te sirva de ayuda.

--
Salvador Soler.
María Soler.
Distribuidores de PcSoft en España.
www.windeveloper.es
s.soler@serival.es
//hostimage.webdev.info/avatars/default.gif
Posté le 03 octobre 2014 - 11:29
Gracias Javier por tu comentario,
Menuda la que hay que montar, lo pruebo y te cuento.

Hola Salvador, tomo nota y espero con ansia ese foro que anuncias, seria muy bueno para todos.
Saludos a todos los windeveros
//hostimage.webdev.info/avatars/default.gif
Posté le 05 juillet 2015 - 14:46
Bueb dia
Veo el ejemplo que tiene para la impresion desde windev mobile para android
Estoy tratando de hacer que mi aplicacion imprima por bluetoot pero no lo he
Logrado tengo el sdk que viene en mi impresora y funciona bien desde eclipse


Quien puede orientarme como hacerlo desde windev
//hostimage.webdev.info/avatars/default.gif
Posté le 11 août 2015 - 11:20
Buen día, me puedes indicar como llamar el procedimiento.

Gracias
//hostimage.webdev.info/avatars/default.gif
Posté le 24 septembre 2015 - 19:28
Buenas tardes,
Hernan te contesto tarde y supongo que lo tendrás solucionado, si no es así te explico, el procedimiento tienes que pasarlo a Java y eso lo haces pulsando en la cabecera que pone WL y cambiará a Java.
Introduces el código Java que nos proporciono nuestro compañero Javier que funciona perfectamente (GRACIAS X EL APORTE!! te debo una :merci: ) y sigue sus instrucciones.
No tiene complicación si tienes alguna duda pregunta
Un saludo
//hostimage.webdev.info/avatars/default.gif
Posté le 29 mars 2016 - 15:45
Por sky hay un foro en latinoamerica y es muy movido. lo creo Thierry Planchais de TAD STUDIO http://www.tap-studio.com/

Cordial saludo,

Orlando Guzman
//hostimage.webdev.info/avatars/default.gif
Posté le 04 juillet 2016 - 20:48
Buen día amigo, un súper aporte. Solo que aun me da error en las librerías. Cuales fueron las que añadiste? Estamos iniciando con WinDev Mobile y lo único que eh podido lograr es a través de sokets escribir directamente en la impresora. El inconveniente es que no puedes añadir imágenes.

Te agradecería mucho tu ayuda

Saludos
//hostimage.webdev.info/avatars/default.gif
Posté le 18 novembre 2016 - 19:02
sabe alguno como imprimir NEGRITA en el papel? actualmente logro imprimir gracias al codigo puesto en el foro pero como logramos realzar algunos textos? como puedo hacer que imprima algunas letras mas grandes que otras?