Epson TM-T88IV 热敏票据打印机 【转】

Epson TM-T88IV 热敏票据打印机
(或 M-T532热敏打印机芯 + BA-T500USB 控制板)

#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 paper */
    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 paper */
    write(fd, &strCutPaper, 4);
 
    close_port(fd);
   
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值