C/Visual C - fernando ayuda¡¡¡¡¡¡

 
Vista:

fernando ayuda¡¡¡¡¡¡

Publicado por mc mori (17 intervenciones) el 20/10/2006 19:57:02
logre encontrar un codiga para la impresora y es el siguiente

#include <fstream>

using namespace std;

void main(void)
{
ofstream impresora;
impresora.open("lpt1");

impresora<<"hola, mundo\f"<<endl; // tambien use en su lugar fprintf(lpt1,"holamuntdo ");
impresora.close();

}

y se compila bien no marca ningun error ni warning, pero la impresora no hace nada ( y si verifique que estuviera encendida y conectada, inclso lo cheque mandando imprimir con word y salio bien) pero no hace nada, y ya he preguntado a mis maestros y dicen que tiene que jalar, pero no lo hace. tengo el visual studio 6 y trabajo bajo windows profesional xp

espero y me ayudes gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:fernando ayuda¡¡¡¡¡¡

Publicado por fernando.gomez (1603 intervenciones) el 20/10/2006 22:46:02
Ok, ahí te va la explicación de como funciona eso que dices. Windows trata cualquier puerto como un archivo. Entonces, para abrir por ejemplo, el puerto COM1, escribes un código como:

HANDLE hComPort = CreateFile(_T("COM1:"), ...);

de donde el primer parámetro de CreateFile siempre es el nombre de archivo que vas a abrir -o a crear. Pero como Windows trata los puertos como archivos, basta con que el nombre de archivo sea el puerto seguido de dos puntos: COM1:, LPT1:, etc.

A partir de esto, yo tengo la conjetura de que bien pudieras emplear de forma similar ofstream e ifstream, etc, debido a que aunque ANSI C++ no especifica cómo abrir puertos, a final de cuentas la implementación de Visual C++ está basada en Windows. Y a final de cuentas, ofstream::open hará una llamada a CreateFile. De ahí mi conjetura de que lo que planteas funcione -nunca lo he probado.

Pero el problema contigo es que estás enviando datos a la impresora, y ve tú a saber si los bytes que le envías están en formato correcto, etc. Por ello, es preferible no saltarse los drivers de la impresora, y dejar que éstos envíen a imprimir, tú siguiendo el procedimiento estándar de redibujado sobre impresora a través de contextos de dispositivos. Para MFC, se tiene la clase CPrinterDC.

O bien, investiga en la documentación de la impresora, cuáles son los bytes que ésta requiere, y envíaselos en el formato que te pide. Pero ten en cuenta que es posible -y probable- que este formato varíe entre diversos modelos de impresoras -de ahí la razón de ser de los drivers.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar