Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Abrir cajon de dinero en Vb.net 2005

d_j_james007

Bovino maduro
Desde
14 Dic 2008
Mensajes
123
Hola amigos bakunos, miren no se si alguien de ustedes me pueda ayudar, lo que pasa es que buscando en google encontré el siguiente código:

Public Sub open_cashdrawer()
Dim intFileNo As Integer = FreeFile()
FileOpen(1, "c:\temp.txt", OpenMode.Output)
PrintLine(1, Chr(27) & "p" & Chr(0) & Chr(25) & Chr(250))
FileClose(1)
Shell("print /d:lpt1 c:\temp.txt", vbNormalFocus)
End Sub

El código me funciona para abrir un cajon de dinero, el problema es que al momento de mandar a imprimir mi archivo en blanco, me vota una tira de papel como de 20 centímetros, yo lo que quisiera es controlar que no me vote tanto papel, ya que se desperdicia, o alguien de ustedes que me sugiere. La aplicación que hice esta en Visual Basic.Net 2005, se conecta a una miniprinter de matriz, Star Micronics Sp212. Alguna sugerencia u otra forma de votar el cajón de dinero. Please. :)
 
En la aplicación que yo uso, no se programa el abrir el cajón mediante la misma, sino se configura en la impresora. Yo uso la Star TSP 643, 650 y TSP 100. En propiedades de impresora, primero hay que configurar el tamaño del papel, supongo que usas rollo térmico y luego en Raster Options (creo que asi se llama la opción) configuras donde dice: Cash drawer y le pones la opción "Document top". . . . y listo. . .!!!

Saludos
 
Me imagino amigo que la impresora que utilizas es térmica, yo no tengo termica, es de las viejitas :P , alguna vez lo has intentado con programación... por favor.
 
Yo lo hago de dos forma:

Referencia: Microsoft.VisualBasic.PowerPacks.Vs
La primera usa Printer print = new Printer();
print.CurrentX = 86;
print.CurrentY = 124;
print.Print("Texto");
print.EndDoc();

Cuando le das en print.EndDoc(); corta el papel
Referencia: System.Drawing
PrintDocument docPrint = new PrintDocument();
docPrint.PrintPage += new PrintPageEventHandler(docPrint_PrintPage);
docPrint.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("PageSize", 900, 900);
docPrint.Print();

void docPrint_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString(lblCliente.Text.Trim(), letra, Brushes.Black, 115, 180);
}

Espero te siva de ayuda
 
Yo lo hago de dos forma:

Referencia: Microsoft.VisualBasic.PowerPacks.Vs
La primera usa Printer print = new Printer();
print.CurrentX = 86;
print.CurrentY = 124;
print.Print("Texto");
print.EndDoc();

Cuando le das en print.EndDoc(); corta el papel
Referencia: System.Drawing
PrintDocument docPrint = new PrintDocument();
docPrint.PrintPage += new PrintPageEventHandler(docPrint_PrintPage);
docPrint.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("PageSize", 900, 900);
docPrint.Print();

void docPrint_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString(lblCliente.Text.Trim(), letra, Brushes.Black, 115, 180);
}

Espero te siva de ayuda

Muchas gracias por tu tiempo para contestar a este problemita :P voy a intentarlo y luego les cuento la solución. Gracias :chavo:
 
Sigo con el mismo problema del cajon, si lo bota pero al momento de mandar a imprimir, manda papel de sobra, o alguien de ustedes conoce otra forma de imprimir y abrir el cajon please :S
 
Aquí obviamente al mandar algo al LPT1 se va a mandar algo a una impresora, no debes usar ni Print, ni nada por el estilo. Lo que debes hacer es mandar de bit en bit a cada uno de los pines de salida http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm

una vez que comprendes que sólo necesitas uno de los pines de salida, sólo hay que buscar cuál de ellos es el que abre o cierra la gaveta.

Aquí encontrarás un ejemplo que controla directamente los pines del LPT1

http://www.codeproject.com/KB/cs/csppleds.aspx
 
Aquí obviamente al mandar algo al LPT1 se va a mandar algo a una impresora, no debes usar ni Print, ni nada por el estilo. Lo que debes hacer es mandar de bit en bit a cada uno de los pines de salida http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm

una vez que comprendes que sólo necesitas uno de los pines de salida, sólo hay que buscar cuál de ellos es el que abre o cierra la gaveta.

Aquí encontrarás un ejemplo que controla directamente los pines del LPT1

http://www.codeproject.com/KB/cs/csppleds.aspx

......... bueno amigo de lo q m indicas casi no le entiendo muy bien :S gulp! sinceramente no le encuentro solución a esto ....
 
Compañero, insisto en que el problema no creo que sea tanto el código, sino la configuración de la impresora.

Checa en opciones de impresión, el tipo de papel (supongo que es el autocopiante de 80*70), revisa en Raster Options, que en Cash Drawer, tenga activa la opción de uso y el "document top".

Saludos
 
Compañero, insisto en que el problema no creo que sea tanto el código, sino la configuración de la impresora.

Checa en opciones de impresión, el tipo de papel (supongo que es el autocopiante de 80*70), revisa en Raster Options, que en Cash Drawer, tenga activa la opción de uso y el "document top".

Saludos

Hola amigo de hecho si revise lo que me dijiste de lo de Cash Drawer lo encontre en otras impresoras, pero la que tengo no tiene dicha opción y por lo tanto no me deja botar el cajon de esa forma. Lo curioso con esta impresora es que trate de instalarla en Windows Xp y nunca encontre controladores en Xp para ella, tuve que instalar windows 7 y en windows update al momento de instalar la impresora me encontro el controlador y si funcionó la impresora pero lamentablemente no tiene la opción de cash drawer
 
Ok compañero, deja hacer una prueba con el sistema, a ver si le encuentro. . . . .y también deja checar si por ahpi tengo el código fuente de una aplicación que hice hace chorrocientos años y tenía resuelto lo del cajón. . . jejeje.

Saludos
 
Buenos dias,
Estimado Bakuno, puedes enviarme los codigos fuentes, para revisarlos y regresarlos..
por lo visto usas *.txt, podemos realizar una funcion para controlar la impresion ,y que puedas preconfigurar el ancho y largo de el Ticket de Venta.

Si deseas enviarlo puedes hacerlo a [email protected]

Saludos
 
Volver
Arriba