- A+
一、文件头部:
// This is the header file for a printer driver
#ifndef _X_PRINTER_DRIVER_
#define _X_PRINTER_DRIVER_
#include
#include
#include
#include
//definitions
#define MAX_PRINTER_NAME_LEN 32 //max length of printer name
#define MAX_PRINTER_CMD_LEN 256 //max length of printer command
//structures
typedef struct {
char name[MAX_PRINTER_NAME_LEN]; //printer name
char command[MAX_PRINTER_CMD_LEN]; //printer command
int status; //printer status
} printer_t;
//prototypes
int open_printer(printer_t *printer);
int close_printer(printer_t *printer);
int reset_printer(printer_t *printer);
int init_printer(printer_t *printer);
int write_to_printer(printer_t *printer, const void *buf, size_t count);
int get_printer_status(printer_t *printer);
#endif //_X_PRINTER_DRIVER_
二、打开打印机函数:
int open_printer(printer_t *printer)
{
if(!printer) {
return -1;
}
//Construct the printer command.
char cmd[MAX_PRINTER_CMD_LEN];
snprintf(cmd, MAX_PRINTER_CMD_LEN,
"lpr -P %s", printer->name);
//Open the printer command
int fd = popen(cmd, "w");
if(fd < 0) {
return -2;
}
//Save the file descriptor
printer->fd = fd;
return 0;
}
三、关闭打印机函数:
int close_printer(printer_t *printer)
{
if(!printer) {
return -1;
}
//Close the printer
if(printer->fd > 0) {
int ret = pclose(printer->fd);
if(ret != 0) {
return -2;
}
}
return 0;
}
四、重置打印机函数:
int reset_printer(printer_t *printer)
{
if(!printer) {
return -1;
}
int ret = ioctl(printer->fd, IOCTL_PRINTER_RESET);
if(ret < 0) {
return -2;
}
return 0;
}
五、初始化打印机函数:
int init_printer(printer_t *printer)
{
if(!printer) {
return -1;
}
int ret = ioctl(printer->fd, IOCTL_PRINTER_INIT);
if(ret < 0) {
return -2;
}
return 0;
}
六、向打印机写入函数:
int write_to_printer(printer_t *printer, const void *buf, size_t count)
{
if(!printer || !buf || count == 0) {
return -1;
}
int ret = write(printer->fd, buf, count);
if(ret != count) {
return -2;
}
return 0;
}
七、获取打印机状态函数:
int get_printer_status(printer_t *printer)
{
if(!printer) {
return -1;
}
int ret = ioctl(printer->fd, IOCTL_PRINTER_GET_STATUS, &printer->status);
if(ret < 0) {
return -2;
}
return 0;
}
- 微信在线客服
- 这是我的微信扫一扫
-
- 我的微信公众号
- 扫一扫码上服务
-





