FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Como se envian codigos de control a una impresora?
Buenos Dias:
Solicito amablemente a una alma caritativa me ayude a aclarar la siguiente duda: Tengo una impresora de Matriz de puntos.... Es posible enviarle codigos o comandos de control para que haga tal cosa.. por ejemplo que recorra el rodillo para que el papel se regrese. O un comando para que coloque en posicion el papel o indicarle que deje un espacio entre las lineas de 3 mm etc etc etc. No se como enviar estos codigos de control. Se que debo enviar un caracter de escape para que entienda que le van a mandar un comando y luego enviarle el valor hexadecimal del comando pero no se como. Seria alguienta tan amable de ponerme un ejemplo que funcione sobre esto? Gracias.
__________________
"Los unicos que no se equivocan son aquellos que no intentan hacer algo." Iván Caballero Cano... ivanhalen77@gmail.com |
#2
|
|||
|
|||
Todas las impresoras vienen con un manual y en él se especifican los códigos que ésta maneja para realizar diferentes cosas como: Poner en Negrita, Subrayar, etc. etc. Revisa el manual y alli debes encontar los códigos que andas buscando. Estos varían de una marca a otra.
Saludos. |
#3
|
||||
|
||||
No busco los codigos, ya los tengo.
hola, Gracias por tu respuesta.
Tal vez no me di a entender bien. NO busco los codigos.. esos ya los tengo porque tengo el manual. Lo que no se, es como programar en Delphi para enviar esos codigos a la impresora desde mi programa... hasta el momento se que tengo que enviar un caracter de escape para que la impresora sepa que le voy a enviar un comando.. pero eso es todo lo que se hasta el momento. Alguien me podria dar un ejemplo de como se hace? Gracias.
__________________
"Los unicos que no se equivocan son aquellos que no intentan hacer algo." Iván Caballero Cano... ivanhalen77@gmail.com |
#4
|
|||
|
|||
Yo lo hacia abriendo la impresora como si fuera un archivo con fopen y escribia con write ó writeln con win98 y anteriores, pero esto tal ves no te sirva, fijate en la unidad printers del delphi.
Otra opción sería si usas reportes, en el evento beforeprint enviar los códigos desde alli.
__________________
Suerte Alejandro |
#5
|
||||
|
||||
Checa Esto...
Estoy es algo similar de lo que te dice Alejandro, puedes agregar los códigos de control por medio de 1 archivo de texto:
Espero te sirva....Suerte. |
#6
|
|||
|
|||
enviar codigo de escapes
Debe haber mejor manera,yo lo solucione de esta forma
procedure TFprimostrador.btnpresuClick(Sender: TObject); var aexport:tqrasciiexportfilter; chkdos:bool; begin imprimeok:='S'; chkdos:=fcfgprinter.chkprndos.Checked; case chkdos of False:begin pnlopcprn.Visible:=false; if imprimeok='S' then begin fprnpresu.exptot.Expression:='sum(qprev.subtotal)'; fprnpresu.qrppresu.Print; end else MessageDlg('Problemas de Comunicacion Con Impresora..Verifique', mtInformation,[mbOk], 0); gridprev.SetFocus; end else begin pnlopcprn.Visible:=false; if imprimeok='S' then begin try fprnpresu2.exptot.Expression:='sum(qprev.subtotal)'; fprnpresu2.k1.Caption:=chr(14); fprnpresu2.k2.Caption:=chr(20); fprnpresu2.k3.Caption:=chr(15); fprnpresu2.k4.Caption:=chr(14); fprnpresu2.k5.Caption:=chr(20); aexport:=tqrasciiexportfilter.create('c:\preventa\presu.txt'); fprnpresu2.qrppresu2.ExportToFilter(aexport); ShellExecute(handle,'open','Command.com','Command.com /c type c:\preventa\presu.txt>lpt1','',sw_normal); aexport.Finish; finally if not printer.Printing then begin saltos:=fcfgprinter.edtsaltos.IntValue; paracorte; end; end; end else MessageDlg('Problemas de Comunicacion Con Impresora..Verifique', mtInformation,[mbOk], 0); gridprev.SetFocus; end; end; end; procedure TFprimostrador.mandocode(s: string); var Handle, hDeviceMode: THandle; N: DWORD; DocInfo1: TDocInfo1; Device, Driver, Port: array[0..255] of char; PrinterName: string; buf:array[0..255] of char; lbuf:integer; begin Printer.GetPrinter(Device, Driver, Port, hDeviceMode); PrinterName := Format('%s', [Device]); if not OpenPrinter(PChar(PrinterName), Handle, nil) then //RaiseLastWin32Error; imprimeok:='N'; try with DocInfo1 do begin pDocName := 'Control'; pOutputFile := nil; pDataType := 'RAW'; end; StartDocPrinter(Handle, 1, @DocInfo1); try lbuf:=length(s); copymemory(@buf,Pchar(s),lbuf); if not WritePrinter(Handle, @buf, lbuf, N) then //RaiseLastWin32Error; imprimeok:='N'; finally EndDocPrinter(Handle); end; finally ClosePrinter(Handle); end; end; procedure TFprimostrador.paracorte; var inisalto:integer; begin for inisalto:=1 to saltos do begin s:=#27+#10; mandocode(s); end; end; |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Te envían gratis discos de Linux a casa | Casimiro Notevi | Noticias | 5 | 17-07-2006 09:05:24 |
Envían cederrones gratis de varias distribuciones de Linux | dec | Noticias | 3 | 14-07-2006 16:15:51 |
Control de impresora | Ricardo León | API de Windows | 0 | 16-12-2005 17:51:39 |
Codigos Escape Impresora Sansumg | serhasae | Varios | 3 | 05-09-2005 10:40:17 |
Leer los paquetes que se envian por el puerto COM | rjsitruiz | Providers | 1 | 11-10-2004 23:36:53 |
|