Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Puerto LPT1

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Puerto LPT1 Responder citando

Hola a todos:
Necesitaría enviar bytes al puerto LPT1 para que los interprete una impresora de tickets (SAMSUNG SRP 350P). Hasta ahora lo realizo a través de MS-DOS ejecutando un programa que me construí con Turbo C utilizando la función biosprint(..). Pero no consigo evitar la molesta aparición de la ventana negra de MS-DOS al ejecutar el programa con WinExec o spawn.
Gracias.
Volver arriba
Mensaje    Asunto: Puerto LPT1 Responder citando

Hola Fermín,

Para enviar información diréctamente a la impresora lo puedes hacer con la función WritePrinter(). Ten en cuenta que antes debes de haber abierto la impresora con OpenPrinter () y también crear un trabajo en la cola de impresión con StartDocPrinter ().

Suerte,

Angel M. Aranguren

Volver arriba
Mensaje    Asunto: Puerto LPT1 Responder citando

Gracias Ángel.
Por lo que intuyo hay tomate en la operación que planteas, pero allá voy.
Un saludo.
Volver arriba
Mensaje    Asunto: Puerto LPT1 Responder citando

He encontrado un código que tal vez te sirva... o al menos te inspire. No lo he probado, te lo copio aqui con sus comentarios en inglés (como me llegó a mi). Con estas líneas puedes mandar tambien a la impresora sus códigos de escape.


code:
  // Printer port name or network printer name (e.g.: "\\SERVER\LASER")
String printerPort = "LPT1:";

HANDLE printerHandle = 0;

// Neccesary for network printers; Windows 9x ignores last member,
// but it's neccesary for NT
PRINTER_DEFAULTS printerOptions;
printerOptions.pDatatype = "RAW";
printerOptions.pDevMode = NULL;
printerOptions.DesiredAccess = PRINTER_ACCESS_USE;

if (!OpenPrinter(printerHandle.c_str(), &printerHandle, &printerOptions))
{
throw "Error when opening printer port";
}

DOC_INFO_1 docInfo;
docInfo.pDocName = "Document name";
docInfo.pOutputFile = NULL;
docInfo.pDatatype = "RAW";

if (!StartDocPrinter(printerHandle, 1, (LPBYTE)&docInfo)) {
throw "Error when starting printing";
}

if (!StartPagePrinter(printerHandle)) {
throw "Error when starting a new page";
}

// Main printing loop (assumed finishedPrinting is a boolean flag
// which becomes true when all the text is printed)
while (!finishedPrinting) {

// Print a sample line
char* lineToPrint = "This is a sample line printed used Windows API
calls\n";
DWORD numBytesWritten;
BOOL correct = WritePrinter(printerHandle, (LPVOID*)lineToPrint,
strlen(lineToPrint), &numBytesWritten);

// Check if line printed OK
if (!correct | | numBytesWritten < DWORD(strlen(lineToPrint)))
throw "Error when printing a line";

// When a page is completed (EndPagePrinter sends a form feed):
if (endOfPageReached) {
if (!EndPagePrinter(printerHandle)) {
throw "Error when finishing a page";
}
}
}

if (!EndDocPrinter(printerHandle)) {
throw "Error when finishing printing";
}

ClosePrinter(printerHandle);


Este código lo mandó Alberto Toledo a la lista The Bits. Su dirección es altodi@arrakis.es .

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.