zoukankan      html  css  js  c++  java
  • 热敏打印机常用指令集

    热敏打印机常用指令集
    初始化打印机:Write(0x1b 0x40)
    打印机实时状态:
    /*
    功能:返回打印机状态
    参数:无
    返回:
    0 正常
    1 线路不通
    2 打印机故障
    3 打印机缺纸
    8 打印机纸将尽
    */
    int GetPrintComStatus()
    {
    int ret = -1;

    unsigned char str[3];
    unsigned char res[50];
    bool flag1=false;
    bool flag2=false;
    bool flag3=false;

    memset(str,0x00,sizeof(str));
    /*
    * DLE EOT n 返回实时状态
    * n=1:传输打印机状态
    * n=2:传输离线状态
    * n=3:传输错误状态
    * n=4:传输纸卷传感器状态
    */
    str[0] = 0x10;
    str[1] = 0x04;
    str[2] = 2;

    ret = WritePort(str,3);
    if(ret != 3)
    return 1;
    memset(res,0x00,sizeof(res));
    if(ReadPort(res,1)<=0)
    return 1;
    if(res[0]&0x40||res[0]&0x04)
    return 2;
    if(res[0]==18)
    flag2=true;

    memset(str,0x00,sizeof(str));
    str[0] = 0x10;
    str[1] = 0x04;
    str[2] = 3;
    ret = WritePort(str,3);
    if(ret != 3)
    return 1;
    memset( res,0x00,sizeof(res) );
    if ( ReadPort(res,1)<=0 )
    return 1;
    if ( res[0]&0x80||res[0]&0x40||res[0]&0x08||res[0]&0x04 )
    return 2;
    if ( res[0]==18 )
    flag1=true;

    memset( str,0x00, sizeof(str));
    str[0] = 0x10;
    str[1] = 0x04;
    str[2] = 4;

    ret = WritePort(str,3);
    if(ret != 3)
    return 1;
    memset(res,0x00,sizeof(res));
    if ( ReadPort(res,1)<=0 )
    return 1;
    if(res[0]&0x60)
    {
    return 3; //缺纸
    }
    if(res[0]&0x0c)
    {
    return 8;//纸将尽
    }
    if(res[0]==18)
    flag3=true;

    if(flag1&&flag2&&flag3)
    return 0;
    else
    return 1;
    }

    选择标准模式:Write( 0x1b, 0x53)
    打印条形码:
    int PrintBarCode(char *str)
    {
    int ret = -1;
    int nlength;
    unsigned char tmp[7];
    memset(tmp,0x00,sizeof(tmp));
    /*
    * GS h n 选择条码高度
    * n指定垂直方向点数,默认高度点数为n=162(十进制)
    */
    tmp[0]=0x1d;
    tmp[1]=0x68;
    tmp[2]=0x3c;
    WritePort(tmp,3);
    memset(tmp,0x00,sizeof(tmp));
    /*
    * GS H n 选择可识别字符的打印位置
    * 在打印条码时选择打印可识别字符的位置
    */
    tmp[0]=0x1d;
    tmp[1]=0x48;
    tmp[2]=0x0;
    WritePort(tmp,3);
    memset(tmp,0x00,sizeof(tmp));
    /*
    * GS w n 选择条码宽度
    * 默认值n=3;n=2、3、4点宽度
    */
    tmp[0]=0x1d;
    tmp[1]=0x77;
    tmp[2]=0x2;
    WritePort(tmp,3);
    memset(tmp,0x00,sizeof(tmp));
    /*
    * GS k m d1...dk/GS k m n d1...dn打印条码
    */
    tmp[0]=0x1d;
    tmp[1]=0x6b;
    tmp[2]=0x49;
    tmp[3]=0x12;
    tmp[4]=0x7b;
    tmp[5]=0x41;
    WritePort(tmp,6);
    nlength = strlen(str);
    ret = WritePort((unsigned char *)str,strlen(str));
    if(ret == nlength)
    return -1;

    return 0;
    }

    切纸:Write(0x1b,0x69) 或 Write(0x1d,0x76,0x49) 或 Write(0x1d,0x56,0x42,0x00)

  • 相关阅读:
    SQL Server 性能优化之——T-SQL TVF和标量函数
    SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
    Posix消息队列实现机制
    进程间通信基础知识整理
    进程间通信——FIFO(多个客户进程,一个服务进程)
    VMware+CentOS7+jdk1.7+hadoop2.4.1
    Java并发编程
    java并发编程
    读书笔记——Java IO
    读书笔记——异常
  • 原文地址:https://www.cnblogs.com/zjp8023/p/3120800.html
Copyright © 2011-2022 走看看