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 

Impresion caracteres de escape en builder

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Impresion caracteres de escape en builder Responder citando

Estimados, tengo que enviar por puerto COM1( no tengo problemas con ello ) caracteres, pero hay unos llamados de escape que sirven para manipular de una forma especifica una impresora de matriz para cheques.

Me han enviado codigo para poder escribir en dicha impresora en basic.

Código:

Private Sub Command1_click()
MSComm1.Output=Chr$(&H1B)+"L"+Chr$(10)+Chr$(13)
MSComm1.Output=Chr$(&H1B)+"W"+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(255)
MSComm1.Output=Chr$(&HA)
MSComm1.Output=Chr$(&HC)

Como se puede traducir esto?, Chr(0) -->char(0)?? y los otros?..
Alguien me podria hechar una mano en como quedaría ello en nuestro amado builder????.
De antemano muchisimas gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Re: Impresion caracteres de escape en builder Responder citando

jotny escribió:
Me han enviado codigo para poder escribir en dicha impresora en basic.

Código:

Private Sub Command1_click()
MSComm1.Output=Chr$(&H1B)+"L"+Chr$(10)+Chr$(13)
MSComm1.Output=Chr$(&H1B)+"W"+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(255)
MSComm1.Output=Chr$(&HA)
MSComm1.Output=Chr$(&HC)

Como se puede traducir esto?, Chr(0) -->char(0)?? y los otros?..

En principio la idea es correcta: CHAR(0) equivale a Chr$(0). Los otros códigos que andan por ahí supongo que serán hexadecimales; conviértelos:
Cita:
1B -> 27
A -> 10
C -> 12

Es decir:
Código:
CHR$(&H1B) + "L" + CHR$(10) + CHR$(13) » CHAR(27) + "L" + CHAR(10) + CHAR(13)

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Gracias, voy a probar Responder citando

Gracias, probaré y enviaré a escribir por el puerto con esa traduccion.

Luego les cuento...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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

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.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Interesante Responder citando

Gracias por tu ayuda.

Probaré el codigo para ver que ocurre, de todas maneras mi intension es crear una clase que, teniendo las secuencias de escape de la impresora, pueda enviar al formulario un texto en las coordenadas x,y.

Eso ayudaría bastante ya que, permitiria parametrizar el formulario que se desea tener como salida.

Mientras voy dando con la solucion, les iré comentando....

Cualquier apoyo al respecto, será excelente... muchas gracias de antemano.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
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.