первый

This commit is contained in:
2024-11-01 12:23:13 +05:00
parent 801d9d33fa
commit 0688c46a7e
226 changed files with 162921 additions and 0 deletions

View File

@ -0,0 +1,106 @@
#ifndef ESCPOSPRINTER_PRINTER_H
#define ESCPOSPRINTER_PRINTER_H
typedef struct escpos_config {
// See ESCPOS_MAX_DOT_WIDTH in constants.h
// Default value: ESCPOS_MAX_DOT_WIDTH
int max_width;
// See ESCPOS_CHUNK_DOT_HEIGHT in constants.h
// Default value: ESCPOS_CHUNK_DOT_HEIGHT
int chunk_height;
unsigned int is_network_printer : 1;
} escpos_config;
typedef struct escpos_printer {
int sockfd;
escpos_config config;
} escpos_printer;
// Connects to an ESC/POS printer via network
//
// Params:
// - addr: the printer's address
// - port: the printer's port
//
// Return value: the printer object if successful, NULL otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern escpos_printer *escpos_printer_network(const char * const addr, const short port);
// Connects to an ESC/POS printer via serial
//
// Params:
// - portname: the path to the serial file to be used
// - baudrate: the baudrate for serial communication
//
// Return value: the printer object if successful, NULL otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern escpos_printer *escpos_printer_serial(const char * const portname, const int baudrate);
// Modifies the printer's configuration
//
// Params:
// - printer: the printer
// - config: the config
//
// Return value: 0 is successful, non-zero otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern int escpos_printer_config(escpos_printer *printer, const escpos_config * const config);
// Destroys the printer and deallocates its memory
//
// Params:
// - printer: the printer
extern void escpos_printer_destroy(escpos_printer *printer);
// Sends raw data to the printer
//
// Params:
// - printer: the printer
// - message: the data
// - len: the length of the data in bytes
//
// Return value: 0 is successful, non-zero otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern int escpos_printer_raw(escpos_printer *printer, const char * const message, const int len);
// Cuts the paper
//
// Params:
// - printer: the printer
// - lines: no. of lines to feed before cutting
//
// Return value: 0 is successful, non-zero otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern int escpos_printer_cut(escpos_printer *printer, const int lines);
// Feeds n lines
//
// Params:
// - printer: the printer
// - lines: no. of lines
//
// Return value: 0 is successful, non-zero otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern int escpos_printer_feed(escpos_printer *printer, const int lines);
// Prints an image
//
// NOTE: This function will send the image data to the printer's buffer
// before sending the print command, instead of printing the image directly.
//
// Params:
// - printer: the printer
// - image_data: an array of width * height bytes containing the pixels in grayscale
// - width: the image width (must be at most 512)
// - height: the image height
//
// Return value: 0 is successful, non-zero otherwise.
// If it fails, use escpos_last_error() to get the error code.
extern int escpos_printer_image(escpos_printer *printer,
const unsigned char * const image_data,
const int width,
const int height);
#endif