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.
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
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.
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.
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.
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
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
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.
HAY UN PROGRAMA PARA HACER REPORTES GRATIS(FUNCIONA CON DB COMERCIALES INCLUSIVE)
http://reportman.sourceforge.net/ (http://reportman.sourceforge.net/)
LO PUEDES USAR DESDE LINEA DE COMANDOS COMO HAN SUGERIDO EN ANTERIORES RESPUESTAS
http://reportman.sourceforge.net/doc/commandline.html (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.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
¡Gracias l1nk3rn3l ! Lo voy a investigar y cuando tenga algo listo lo muestro para que vean que tal.
¡Saludos!
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".
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!
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.
Gracias Drumpi, no te preocupes porque por ahora el proyecto está parado...