Y pueden descargarla de acá -> Descargar Jawin
La herramienta que utilice se llama Jacob. En la implementación me lleve varios peros, como por ejemplo que mi SO era de 64 bits y al tener el JVM de 64 bits, no me permitía ejecutar la DLL. Pues claro si llama realmente usa 64 bits!!, bueno de tods formas en c-sharp también para lo mismo, entonces debemos tener instalado la maquina virtual de java de 64 y 32 y el eclipse hacerlo compilar con esa, no recimiendo cambiar el java_home, porque recordemos que debemos mirar hacia adelante y no atrás y lo que viene es 64 bits.. y para las excepciones configuramos o podemos a nuestro jar, decirle que lo compile con 32 bits. Esta libreria la podemos descargar de acá -> Descargar Jacob
Una de las ventajas es que podemos utilizarla con ocx y dll (hay que registrarlas) tanto de 32 y 64 bits :D
Bueno como yo supongo que la gente que lee el blog tiene ganas de aprender y no necesariamente tiene que saber las cosas!, voy a comenzar explicando como registrar las OCX y DLL. Primero abrimos la terminal de Windows, esto si no lo voy a explicar XD. Vamos a la carpeta Windows->System32, en caso de tener dll de 64 bits y en caso de querer correr una de 32 en un SO de 64, tendremos unas carpeta ques e llama SysWOW64 (Me recuerda a World of Warcraft xD). En esta carpeta vamos a crear nuestro registro
Ahora a lo que nos convoca, manos al código :D. Paso 1: Importamos la libreria jacob al proyecto
Paso 1: Importamos la libreria jacob al proyecto
Paso 2: Ponemos la DLL correspondiente, si usamos maquina virtual de 32, debe ir en la maquina virutal de 32 la dll. OJO QUE EN ECLIPSE DEBEN PONER LA LIBRERIA EN LA CARPETA JRE Y EN NETBEANS EN JDK :D
Para Jawin es exactamente los mismos pasos, bueno para todos los bridge COM son asi jeje
Ahora lo entretenido, antes pura parafernalia y configuraciones.
// Importamos librerias necesarias import com.jacob.com.*; import com.jacob.activeX.*; ActiveXComponent epson = new ActiveXComponent("EpsonFPHostControlX.EpsonFPHostControl"); // Creamos un objeto ActiveX, en la imagen anterior se puede ver el nombre del Servicio registrado, usamos ese mismo (EpsonFPHostControlX.EpsonFPHostControl). Dispatch sControl = (Dispatch)epson.getObject(); // Obtenemos los objetos y los almacenamos en sControl Dispatch.put(sControl, "CommPort", 1); // Seteamos puerto impresora, en c# es diferente, porque hacemos uso del setter del método acá directamente le damos el valor al atributo. Cabe destacar que son valores por referencia, por eso debemos hacer esto. Dispatch.put(sControl, "BaudRate", 9600); Variant a = Dispatch.call(sControl, "OpenPort"); // Llamamos al método OpenPort que esta seteado con los valores por referencia entregados en los 2 pasos anteriores Variant b = Dispatch.call(sControl, "ClosePort"); //Método para cerrar puerto. // Enjoy
Eso sería jeje, también podemos llamar a word, simplemente indicando ActiveXComponent("Word.Aplication");
Asi también cualquier servicio que exista en windows, outlook (Thunderbird UP), Excel, etc..
Espero les sea útil, ante cualquier duda me dicen y les ayudo, Saludos!
Volver a sección JAVA
Hola amigo, tengo un problema, estoy implentando un sistema de Pin Pad, tengo el dispositivo con su respectivo dll y archivo configuracion.ini, este dll tiene 4 metodos para realizar las transacciones los cuales son:
ResponderEliminarint CAJA_PINPAD_API fiClosePort();
int CAJA_PINPAD_API fiOpenPort(String *filename);
int CAJA_PINPAD_API fiGetStatus(char **Buffer, DWORD BufferSize );
int CAJA_PINPAD_API fiStartOperation(char **Buffer, DWORD TimeOut, LPSTR *Response);
No puedo tener acceso a dichas funciones, porfavor si me pudieras ayudar.
Gracias.
¿Cuál es el problema?. Intenta utilizar el software que puse ahí, el ejemplo es bastante claro. ¿aún sigues sin poder implementarlo?. Me avisas y podemos verlo por google+.
EliminarSaludos Rudy.
Hola Rudy, me encuentro en el mismo problema que tu en este momento, me podrias indicar como lo solucionaste?
EliminarGracias.
Saludos Victor
Hola, mi idea es hacer un programa facturador en java, usando impresora fiscal epson y/o hassar, mi pregunta es si esta librería Jacob es solo lo que necesito para comunicarme con estos dispositivos, saludos, muy buena explicación!!!
ResponderEliminarSi Edgardo, yo la utilice en la impresora Epson TM-88IV sin ningún problema. Si necesitas más ayuda me dices y podemos ver como lo solucionamos viendo el código por github, en google+ con hangouts. Saludos!
EliminarHola Carlos buenos dias
EliminarEstamos intentando implementar en java las jacob.
Cuando intentamos hacer el regsvr32 jacob version 1.8 nos da un error no nos registra.
Hemos leido diferentes foros pero nadie tiene este problema.
El error que nos aparece es:
"Se cargo el modulo jacob-1.18-m1-x86.dll pero no se encontro el punto de entrada Registerserver. Asegure que jacob.dll es un archivo DLL valido"
Te agrecederiamos tu colaboracion.
Hola Carlos tanto tiempo, estoy testeando poder usar la libreria segui todos tus pasos y me tira esta Exception in thread "main" com.jacob.com.ComFailException: Can't co-create object
EliminarQue estoy haciendo mal? saludos.-
la librería jacob esta desatendida desde el 2005, yo en mi caso personal sugiero que hay que arremangarse las manga aprender jni y lenguaje c++.
EliminarExlente tu post queria hacerte un consulta y me orientes si puedo hacer lo siguiente Quiero usar el siguiente linia de codigo que encontre en internet
ResponderEliminarSet objShell = CreateObject ("Shell.Application") para obtener propiedadesde un archivo con la siguiente linia = objFolder.GetDetailsOf(strFileName, 27) 'Length
No se si con Jacob pueda hacer esto muchas gracias
Puedes utilizar todos los métodos que contenga el componente, es decir, si tienes encapsulado los objetos deberías :D
Eliminarhola :)
ResponderEliminaruna pregunta, yo estoy trabajando con un programa que se llama AdminPAQ, este al instalarlo automáticamente carga en Archivos de Programa el SDK , el cual permite que aplicaciones externas se conecten al programa de adminpaq y a la base de datos de este, para poder estar extrayendo informacion y al mismo tiempo poder estarla actualizando, mi problema es que estoy usando netbeans y necesito hacer referencia a un archivo que llama MGW_SDK.DLL, esto con el fin de que se inicialice el SDK y que posteriormente me permita poder acceder a los datos de la BD de adminpaq, ya utilice jawin, pero me marca el siguiente error :
org.jawin.COMException: 8007007e: No se puede encontrar el módulo especificado.
cualquier ayuda proporcionada se los agradecería :)
gracias de antemano
Hola,
EliminarYo estoy tratano de hacer lo mismo y segun lo que he leido, la MGW_SDK.DLL tiene dependencias ocultas lo que la hace dificil de cargar.
¿Has podido resolver este problema?
Buenos dias?? hice una app control de stock, implemente el modulo de facturacion y me encontre con que la DLL era paga! pero consegui gratis unos OCX de Hasar. me darias una mano con la implementacion?? sobre los comandos y demas?? mi correo es reichertvictor@gmail.com
ResponderEliminarHola que tal.
ResponderEliminarYo tambien estoy implementando un Sistema de Facturacion para un Bar y resulta que me dijeron que tengo que pagar para que no me salga 'DEMO' en los Tickets fiscales, usando el Driver de impresoras Hasar (en Java).
Necesito que me ayudes como implementar esto que propones con el OCX que da Grupo Hasar oficial para solucionar mi problema, ya que me da ciertos errores por el momento...
Mi correo es: geronimo.perez.salas@gmail.com
Podrás darme una mano con esto? ES URGENTE! GRACIAS!
Hola como estas, se que es mucho pedir pero habria alguna posibilidad que me pases la clase de la impresion del ticket? necesito hacer algo igual pero estoy muy perdido mi correo es emilioagimenez@gmail.com
ResponderEliminartenes la impresora física ? que modelo es .. intentaría ayudarte.
EliminarEstoy implementando una interfaz para controladores Hasar, utilizando Jacob como puente Java-OCX fiscal.
ResponderEliminarEl Único problema que tengo es que no puedo utilizar los parámetros que son por referencia. Si bien las respuestas de la impresora se pueden leer con el comando "Recibir", sería útil poder usar las variables por referencia para recibir las respuestas.
¿Te has encontrado con esta dificultad en Jacob?
En teoría, se podría hacer esto por ejemplo:
Variant cantZ = new Variant((int)0, true);
Dispatch.call(sControl, "CapacidadRestante", cantZ);
System.out.println("Value : "+cantZ.getIntRef());
El problema es que los métodos en el OCX utilizan variables de salida de tipo Variant por referencia (no int), y no encuentro que combinación usar para pasar un Variant por referencia y luego leerlo. Si le paso un int el OCX dá error, y si le paso un Variant, no dá error pero no puedo recuperar el valor que setea el método.
Hola Carlos buenos dias
ResponderEliminarEstamos intentando implementar en java las jacob.
Cuando intentamos hacer el regsvr32 jacob version 1.8 nos da un error no nos registra.
Hemos leido diferentes foros pero nadie tiene este problema.
El error que nos aparece es:
"Se cargo el modulo jacob-1.18-m1-x86.dll pero no se encontro el punto de entrada Registerserver. Asegure que jacob.dll es un archivo DLL valido"
Te agrecederiamos tu colaboracion.
Hola Carlos buenos dias
ResponderEliminarEstamos intentando implementar en java las jacob.
Cuando intentamos hacer el regsvr32 jacob version 1.8 nos da un error no nos registra.
Hemos leido diferentes foros pero nadie tiene este problema.
El error que nos aparece es:
"Se cargo el modulo jacob-1.18-m1-x86.dll pero no se encontro el punto de entrada Registerserver. Asegure que jacob.dll es un archivo DLL valido"
Te agrecederiamos tu colaboracion.
Hola Carlos, he visto por un foro que has logrado implementar una comunicación efectiva con una Impresora fiscal TM-T88V usando Java. Podrías ayudarme con ese tema? Gracias de antemano. Acá te dejo mi correo. Salazarjosedaniel@gmail.com
ResponderEliminaralguien de este blog me podría decir con exactitud que driver su versión exacta de impresora fiscal estas usando para empezar a probar...?
ResponderEliminaracá dejo espero que a alguien le interese un vídeo
ResponderEliminarcon el codigo listo para bajarse y probar si alguien tiene una impresora física hasar me gustaría colaborar.
https://www.youtube.com/watch?v=d9ytWYRZ6w0