Mandar a imprimir un ticket/archivo desde Bennu

Started by Outlaw, July 10, 2013, 01:58:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Outlaw

Hola a todos! Estoy tratando de hacer un programa de gestión para un bar y pensé en varios lenguajes a la hora de llevarla a cabo. La verdad que preferiría hacerlo en Bennu, dado que tenía pensado hacer una interfaz más novedosa que lo usual (es decir, menos aburrida) y además Bennu me resulta más "natural", que se yo!
Lo único que me faltaría para poder llevarlo a cabo es una función para imprimir un archivo .txt por cualquier tipo de impresora (idealmente una impresora fiscal de tickets). ¿Es esto factible?
¡Agradezco cualquier aporte que puedan hacer!


Saludos.


"Life is cheap when the bounty is high"

panreyes

No creo que Bennu sea lo más eficiente, pero bueno xD


Si la impresora tiene un puerto COM virtual o real, puedes imprimir textos con solo redireccionar la salida hacia COMn


Una prueba que puedes hacer es algo tipo esto en la consola de comandos:
echo Hola mundo > COM1

Erkosone

#2
Esto debería funcionarte:


Asigna la impresora como impresora en red, búscala en tu red y desde cmd haz esto:
NET USE LPT1 \\NOMBRE_PC\NOMBRE_IMPRESORA_COMPARTIDAAhora solo tienes que enviarle archivos y listo.. de esta manera:
COPY imprimir.txt LPT1
Con eso deberías poder imprimir sin problemas ;)



Edit: Usa esto con la función que tiene bennuGD para ejecutar comandos externos desde la aplicación.

SplinterGU

quizas otros lenguajes te serian mas practicos para ese tipo de aplicaciones, un like DIV es mas orientado a juegos... no digo que no puedas hacerlo, pero seguramente te dara mas dolores de cabeza que alegrias.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Outlaw

Gracias Pixel, Erko Y splinter por su ayuda!
Si, es cierto que un lenguaje orientado a juegos no es lo ideal... Por eso quería hacer la prueba antes de probar otra cosa.
Por cierto, Erko, ¿podrías decirme cuál es la función para ejecutar comandos externos? No lo puedo encontrar y ya busqué por casi todos lados.


Gracias de antemano.
"Life is cheap when the bounty is high"

Erkosone

Copio y pego del manualBennu:



Por otro lado, en el módulo "mod_sys" hay definida otra función si cabe más interesante y potente que
getenv(). Se trata de exec().
EXEC(ESPERA,"EJECUTABLE", EJECARGC, &EJECARGV)
Esta función, definida en el módulo "mod_sys", ejecuta cualquier aplicación externa instalada en el sistema sobre el
cual está funcionando el código Bennu. La ruta de dicho ejecutable -o simplemente su nombre, si su ruta está incluida
en el PATH del sistema- será el segundo parámetro de esta función. El primer parámetro de la función indica el modo
de ejecución del programa externo, y puede valer lo siguiente:
_P _WAIT Equivale a 0 Indica que la ejecución del código Bennu se parará en el punto donde se lanzó la
aplicación externa hasta que ésta sea finalizada, momento en el que se reanudará la
ejecución del código Bennu en la siguiente línea.
_P _NOWAIT Equivale a 1 Indica que el código Bennu continuará su ejecución mientras la ejecución de la
aplicación externa se inicia de forma paralela.
El tercer parámetro indica el número de parámetros que se le pasa a la aplicación externa (similar en este sentido al
concepto de la variable ARGC), y el cuarto parámetro indica la dirección de memoria donde se aloja un vector que
contiene en cada elemento el valor del correspondiente parámetro recibido por la aplicación externa (similar en este
sentido al concepto de la variable ARGV). Si la aplicación externa no recibe ningún parámetro, el tercer parámetro
valdrá 0 y el cuarto, NULL.
Hay que tener en cuenta que, aunque esta función funciona exactamente igual en Windows y GNU/Linux, su uso
412
puede romper la independencia de plataforma de nuestro código Bennu, ya que dependiendo de la aplicación externa
que se quiera invocar, ésta solamente estará disponible para un determinado sistema. Además, Bennu no controla en
ningún momento si la aplicación a ejecutar está instalada, esta comprovación deberá hacerla el programador: si no se
encuentra en el sistema, exec() devolverá error (-1).
PARAMETROS:
INT ESPERA: Modo de ejecución de la aplicación externa ("modo espera" -0- ó "modo no espera" -1-)
STRING EJECUTABLE: Ruta de la aplicación externa a ejecutar
INT EJECARGC: Número de parámetros pasados a la aplicación externa
POINTER EJECARGV: Puntero al vector cuyos elementos son los valores de los parámetros pasados a la
aplicación externa
Por ejemplo, el siguiente código (sólo para Windows, pero es fácilmente modificable para otros sistemas)
lo que hace es abrir el fichero "file.txt" mediante el "Bloc de Notas". Debemos saber que si ejecutamos en el intérprete
de comandos la siguiente línea: notepad.exe file.txt estaríamos haciendo esto mismo: "file.txt" es el primer (y único)
parámetro que la aplicación externa notepad.exe. De ahí el valor del tercer y cuarto parámetro. El hecho de que el
primer parámetro sea el modo "no espera" implica que a la vez que se lanza el "Bloc de Notas", el código Bennu
seguirá ejecutándose; como resulta que ya no hay más líneas por leer, el código Bennu acabará su ejecución, pasando
como "testigo" la ejecución de notepad.exe.
Import "mod_sys";
Process Main()
Private
string arg;
End
Begin
arg = "file.txt";
exec(_P_NOWAIT,"notepad.exe",1,&arg);
End

FreeYourMind

No uses bennu para eso, te recomiendo .net que es fácil y tiene componentes para todo lo que necesites en la app, tambien puedes hacer interfaces chulas con windows forms

Outlaw

Mil gracias por tu ayuda Erkos, la verdad se agradece que te hayas tomado el tiempo de buscarlo y pegarlo aquí. Ahora ya depende de mi implementarlo.
Free, gracias por tu consejo, de hecho he estado mirando otras opciones que parecen más indicadas para este tipo de labores... Lo que pasa es que estoy tan acostumbrado a Bennu que trato de resolver todo con este lenguaje!  ;D
Gracias a ambos!


Saludos.
"Life is cheap when the bounty is high"

l1nk3rn3l

#8
HAY UN PROGRAMA PARA HACER REPORTES GRATIS(FUNCIONA CON DB COMERCIALES INCLUSIVE)
http://reportman.sourceforge.net/


LO PUEDES USAR DESDE LINEA DE COMANDOS COMO HAN SUGERIDO EN ANTERIORES RESPUESTAS
http://reportman.sourceforge.net/doc/commandline.html


Y BENNUGD PUEDE USAR DB COMERCIALES MEDIANTE ODBC USANDO LA LIBRERIA EN EL BENNUPACK
SECCION DLLS

ASI QUE SOLO ENLAZAS EL REPORTE A LA DB EN CUESTION Y AL IMPRIMIRLO YA TIENES
LO QUE DESEAS EN EL FORMATO QUE DESEAS CON LA IMPRESORA QUE ESTE POR DEFECTO
SIN TANTA COMPLICACION Y SIN USAR DLLS PARA BENNUGD DE IMPRESION..

Y SI DESEAS UNA DB DISPONIBLE ONLINE PARA CONECTARSE .. TE RECOMIENDO QUE BUSQUES
EN GOOGLE LA PALABRA "MYSQL DB ONLINE"

CONSIGUES BUENAS COMO ESTA
http://www.db4free.net/d4f_db4free.php

http://www.freemysqlhosting.net/

Y TE CONECTAS CON LA LIBRERIA ODBC DE BENNUGD DISPONIBLE EN BENNUPACK Y
YA TIENES UNA APLICACION PROFESIONAL EN BENNUGD SIN COMPLIACIONES


ESPERO QUE SEA DE UTILIDAD

Outlaw

¡Gracias l1nk3rn3l ! Lo voy a investigar y cuando tenga algo listo lo muestro para que vean que tal.


¡Saludos!
"Life is cheap when the bounty is high"

Drumpi

Llego un poco tarde, pero si vais a proponer .net, ya de paso poned Java, que es casi tan portable como Bennu :D

De todas formas, mi disco duro cerebral me dice que apareció un módulo no oficial para imprimir textos por impresora. Sus limitaciones no las conozco, pero si es portable y es independiente de que la impresora esté por red, por puerto paralelo o por USB, lo probaría.

Ya sabemos que Bennu no es "todo-terreno", está diseñado para una cosa, pero eso no quita que podamos hacer experimentos, aunque sea con el fin de decir "Bennu no sólo es para videojuegos, puede tomarse muy en serio".
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Outlaw

Genial Drumpi, por casualidad recordás el nombre del módulo que permite hacer eso? Y si, con respecto a lo que dijiste, estaría bueno que Bennu sea para todo!
"Life is cheap when the bounty is high"

Drumpi

Por desgracia pasa lo de siempre: puedo recordar cosas remotísimas, pero me lío en cuanto a nombres y fechas :S
Recuerdo que se le podía pedir que imprimiese una cadena de caracteres, pero ya no recuerdo más, nunca la probé. Puedo mirar si por casualidad la tengo en alguna de mis copias de seguridad, ahora que las estoy reponiendo (los CDs, con el tiempo, se desgastan), pero sería más fácil si alguien que la haya usado recuerda su nombre.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Outlaw

Gracias Drumpi, no te preocupes porque por ahora el proyecto está parado...
"Life is cheap when the bounty is high"