打印机驱动程序 代码38

  • 打印机驱动程序 代码38已关闭评论
  • A+
所属分类:远程维修
摘要

一、文件头部://Thisistheheaderfileforaprinterdriver#ifndef_X_PRINTER_DRIVER_#define_X_PRINTER_DRIVER_#include#include#include#include//definitions#defineMAX_PRINTER_NAME_LEN32//maxlengthofprinter

一、文件头部:

// 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; }

  • 微信在线客服
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 扫一扫码上服务
  • weinxin