Mensaje    Asunto: Apertura de Cajón MiniPrinters: Puerto USBxxx Responder citando

Esta función envia una señal a las impresoras Miniprinters como SECUENCIAS DE ESCAPE, para que abra el cajón portamonedas conectada a ellas. En el foro ya hay codigo para abrir el cajón a traves del puerto LPTxx y SERIExx, pero no he visto para impresoras con puerto virtual que son los puertos USB.

Código:

// Función que manda secuencias de ESCAPE a las impresoras, Ejemplo: Abrir Cajón Portamonedas

void __fastcall ImprimirESC(AnsiString PrinterName, LPVOID Data, DWORD Count)
{
   // Estructura con la informacion sobre el documento
   struct{
      char *DocName, *OutputFile, *DataType;
   }   DocInfo = {"Abrir", 0, "RAW"};

   // Obtener un handle de Impresora
   HANDLE Handle;

   if ( !OpenPrinter(PrinterName.c_str(), &Handle, NULL) )
      throw Exception("Operación invalida con la Impresora");

   try
   {
      // Informar al spooler del comienzo de impresion
      if(StartDocPrinter(Handle, 1, LPBYTE(&DocInfo)) == 0)
         throw Exception("Operación invalida con la Impresora");

      // Enviar los Datos Directamente
      DWORD Bytes;
      if(!WritePrinter(Handle, Data, Count, &Bytes) || Bytes != Count)
         throw Exception("Operación invalida con la Impresora");
   }
   __finally
         {
            ClosePrinter(Handle);// Devolver el handle de impresora
         }
}


//**************************************************************************************
// Cajón con Apertura Impresora Miniprinters con Puerto USB
// EN EXADECIMAL PARA EPSON: {0x1B,0x70,0x00,0x64,0xC8}
// EN DECIMAL PARA EPSON: {27,112,0,100,200}
// EN EXADECIMAL PARA SAMSUNG: {0x1B,0x70,0x00,0x19,0xff}
// EN DECIMAL PARA SAMSUNG: {27,112,0,25,255}

Código:

char ESCAPE[5]; //EJEMPLO SECUENCIA DE ESCAPE EN EXADECIMAL PARA EPSON(APERTURA DE CAJON)
ESCAPE [0] = 0x1B;
ESCAPE [1] = 0x70;
ESCAPE [2] = 0x00;
ESCAPE [3] = 0x64;
ESCAPE [4] = 0xC8;

//EJEMPLO DE COMO FUNCIONA LA FUNCION "ImprimirESC()"
ImprimirESC("Nombre_de_la_Impresora", ESCAPE, sizeof(ESCAPE));

_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.