当前位置:编程学习 > C#/ASP.NET >>

谁有pos打印机的例子!通过Esc/pos指令直接打印!

谁有pos打印机的例子!通过Esc/pos指令直接打印!最好能检测打印机状态,缺纸、是否正常? --------------------编程问答-------------------- 没人顶呀,自己顶上去 --------------------编程问答-------------------- 我来帮你顶

人家既然有,也和你的型号也可能不一样,你还是自己看看你那机子的二次开发接口 --------------------编程问答-------------------- 一般的不都支持Esc/pos指令吗?我看的机子参数中说明支持Esc/pos指令!!!
--------------------编程问答-------------------- 最简单的方法莫过于调用该打印机的驱动程序,使用pintdocument进行打印
如果使用指令集的话,并不是每台机都是相同的,但使用驱动程序的话,只要安装了驱动让其指定pintdocument的打印机名称就可以啦 --------------------编程问答-------------------- #include <stdio.h>   /* 标准输入、输出定义 */
#include <unistd.h>  /* UNIX 标准函数定义 */
#include <fcntl.h>   /* 文件控制定义 */
#include <errno.h>   /* 错误编号定义 */
#include <termios.h> /* POSIX 终端控制定义 */
#include <string.h>  /* 字符串函数定义 */

#define SERIAL_PORT "/dev/ttyS0" //COM 1
#define BAUDRATE B38400 //9600bps
#define MAX_SIZE 255

/** \brief 打开串行端口一
 *  \brief 成功后返回文件描述符,或是失败后返回-1
 */
int open_port()
{
    int fd; /* 端口文件描述符 */

    fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY);
    if (fd == -1)
    {
perror("open_port: Unable to open /dev/ttyS0 - ");
    }
    
    return (fd);
}

void set_port(int fd)
{
    struct termios options;
    int flag;
    
    tcgetattr(fd, &options);

    fcntl(fd, F_SETFL, 0);

    cfsetispeed(&options, BAUDRATE);
    cfsetospeed(&options, BAUDRATE);
    
    options.c_cflag |= (CLOCAL | CREAD);

    /* Set to 8N1 */
    options.c_cflag &= ~PARENB;
    options.c_cflag &= ~CSTOPB;
    options.c_cflag &= ~CSIZE;
    options.c_cflag |= CS8;

    /* HANDSHAKE 也称为 CRTSCTS */
    options.c_cflag |= CRTSCTS;    

    /* RAW */
    options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);    
    options.c_oflag &= ~OPOST;

    /* For read data from printer */
    options.c_cc[VMIN] = 0;
    options.c_cc[VTIME] = 1;    

    flag = tcsetattr(fd, TCSANOW, &options);
    if (flag < 0)
    {
perror("set_port: Setting port /dev/ttyS0 error - ");
    }
}

void close_port(int fd)
{
    close(fd);
}

int main(int argc, char *argv[])
{
    int fd, i;

    /* Open COM1 (/dev/ttyS0) and set for write mode! */
    fd = open_port();

    set_port(fd);
    
    /* String data to be written */
    char strOutput[] = "EPSON (CHINA) CORP.\x0A";
    size_t sizeOutput = strlen(strOutput);
    
    char strOutputCh[] = "爱普生(中国)有限公司\x0A";
    size_t sizeOutputCh = strlen(strOutputCh);

    /* Feed 4 lines */
    char strFeed4Lines[] = "\x0A\x0A\x0A\x0A";

    /* Set Font size */
    char strSetFontSize[] = "\x1D\x21\x11";
    
    /* Feed and cut 易做图 */
    char strCutPaper[] = "\x1D\x56\x42\x00";

    /* 1.Normal size */
    for (i = 0; i < 3; i++)
    {
write(fd, &strOutput, sizeOutput);
write(fd, &strOutputCh, sizeOutputCh);
    }
    write(fd, &strFeed4Lines, 4);

    /* 2.Double width */
    strSetFontSize[2] = '\x10';
    write(fd, &strSetFontSize, 3);

     for (i = 0; i < 3; i++)
    {
write(fd, &strOutput, sizeOutput);
write(fd, &strOutputCh, sizeOutputCh);
    }
    write(fd, &strFeed4Lines, 4);

    /* 3.Double height */
    strSetFontSize[2] = '\x01';
    write(fd, &strSetFontSize, 3);

    for (i = 0; i < 3; i++)
    {
write(fd, &strOutput, sizeOutput);
write(fd, &strOutputCh, sizeOutputCh);
    }
    write(fd, &strFeed4Lines, 4);

    /* 4.Set font to be 3x3 */
    strSetFontSize[2] = '\x22';
    write(fd, &strSetFontSize, 3);

    for (i = 0; i < 3; i++)
    {
write(fd, &strOutput, sizeOutput);
write(fd, &strOutputCh, sizeOutputCh);
    }
    write(fd, &strFeed4Lines, 4);

    /* 5.Set font back to be default */
    strSetFontSize[2] = '\x00';
    write(fd, &strSetFontSize, 3);

    for (i = 0; i < 3; i++)
    {
write(fd, &strOutput, sizeOutput);
write(fd, &strOutputCh, sizeOutputCh);
    }
    write(fd, &strFeed4Lines, 4);

    /* Feed and cut 易做图 */
    write(fd, &strCutPaper, 4);

    close_port(fd);
    
    return 0;
} --------------------编程问答-------------------- 我这有串口的指令集 不过是英文的 --------------------编程问答-------------------- 我以前做过,也是串口的,呵呵
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,