C/Visual C - Impresora

 
Vista:

Impresora

Publicado por Victor (1 intervención) el 27/11/2002 04:39:45
Hola expertos... tengo una aplicaion que debera de imprimir las notas o la tira de compra, bien, esta es una mini impresora de punto de venta y no he investigado acerca del driver pero me informan que se debe redireccionar o dar de alta desde el codigo de Fox otros me indican que se da de alta en lenguaje c, en fin, esta impresora se conecta en el puerto serial... alguien ha pasado poe esta experiencia? bueno espero me la transmitan y poder continuar con mi aplicacion y nuevamente saludos a todos. P.D. si es posible que me pudieran mandar las instruciones o el codigo para activar la impresora o enviar mis impresiones... se los agradecere muchisimo
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
Imágen de perfil de Alejandro

Cómo imprimir en una impresora de punto de venta conectada por puerto serial

Publicado por Alejandro (913 intervenciones) el 10/04/2025 19:50:53
Para imprimir en una impresora de punto de venta que se conecta a través de un puerto serial, puedes utilizar el lenguaje C para enviar comandos directamente al puerto. A continuación, te muestro cómo hacerlo, incluyendo un ejemplo de código.

1. Configuración del puerto serial



Primero, necesitas abrir y configurar el puerto serial. Esto se puede hacer utilizando las funciones de la API de Windows. Aquí tienes un ejemplo básico de cómo hacerlo:

Ejemplo de código en C



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <windows.h>
#include <stdio.h>
 
void imprimir(const char *mensaje) {
    HANDLE hSerial;
    DCB dcbSerialParams = {0};
    COMMTIMEOUTS timeouts = {0};
 
    // Abre el puerto COM1 (puedes cambiarlo según sea necesario)
    hSerial = CreateFile("COM1",
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          NULL);
 
    if (hSerial == INVALID_HANDLE_VALUE) {
        printf("Error al abrir el puerto serial.\n");
        return;
    }
 
    // Configura los parámetros del puerto
    dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
    if (!GetCommState(hSerial, &dcbSerialParams)) {
        printf("Error al obtener el estado del puerto.\n");
        CloseHandle(hSerial);
        return;
    }
 
    dcbSerialParams.BaudRate = CBR_9600; // Configura la velocidad (9600 bps)
    dcbSerialParams.ByteSize = 8;         // Tamaño de byte
    dcbSerialParams.StopBits = ONESTOPBIT; // 1 bit de parada
    dcbSerialParams.Parity = NOPARITY;    // Sin paridad
 
    if (!SetCommState(hSerial, &dcbSerialParams)) {
        printf("Error al configurar el puerto serial.\n");
        CloseHandle(hSerial);
        return;
    }
 
    // Configura los timeouts
    timeouts.ReadIntervalTimeout = 50;
    timeouts.ReadTotalTimeoutConstant = 50;
    timeouts.ReadTotalTimeoutMultiplier = 10;
    timeouts.WriteTotalTimeoutConstant = 50;
    timeouts.WriteTotalTimeoutMultiplier = 10;
 
    SetCommTimeouts(hSerial, &timeouts);
 
    // Envía el mensaje a la impresora
    DWORD bytesWritten;
    if (!WriteFile(hSerial, mensaje, strlen(mensaje), &bytesWritten, NULL)) {
        printf("Error al escribir en el puerto serial.\n");
    }
 
    // Cierra el puerto
    CloseHandle(hSerial);
}
 
int main() {
    const char *mensaje = "Hola, este es un mensaje de prueba.\n";
    imprimir(mensaje);
    return 0;
}

2. Explicación del código


- Abrir el puerto serial: Utiliza `CreateFile` para abrir el puerto serial (en este caso, `COM1`).
- Configurar parámetros: Configura la velocidad de baudios, tamaño de byte, bits de parada y paridad utilizando `DCB`.
- Enviar datos: Usa `WriteFile` para enviar el mensaje a la impresora.
- Cerrar el puerto: Asegúrate de cerrar el puerto después de que hayas terminado de imprimir.

3. Consideraciones


- Drivers: Asegúrate de que los drivers de la impresora estén instalados y que el puerto COM esté configurado correctamente en el sistema operativo.
- Comandos de impresión: Dependiendo de la impresora, puede que necesites enviar comandos específicos (como códigos de escape) para formatear la impresión (por ejemplo, para cambiar el tamaño de la fuente o el estilo).
- Pruebas: Realiza pruebas con diferentes mensajes y configuraciones para asegurarte de que la impresora responde correctamente.

4. Integración con FoxPro


Si estás utilizando FoxPro, puedes llamar a un programa en C que maneje la impresión, o puedes usar comandos de FoxPro para redirigir la salida a la impresora. La forma de hacerlo dependerá de cómo esté configurada tu aplicación.

Con este enfoque, deberías poder imprimir en tu impresora de punto de venta conectada por puerto serial. ¡Espero que esto te ayude a continuar con tu aplicación, Víctor!
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