T168_111\appl\Parser\Pos:5个文件

Pos.c   //


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Common.h"
#include "XCore.h"
#include "XProFile.h"
#include "..\Parser.h"
#include "..\ParserUtil.h"
#include "Pos.h"

#ifdef _POS_MODE
CONST _CmdEntry PosEntry[] = {
    {"\x1b",POS_ESC_FUN},
    {"\x1c",POS_FS_FUN},
    {"\x1d",POS_GS_FUN},    
    {"\x1f",POS_US_FUN},
    {(CHAR *)_NULL,        _NULL}
};
POS_IMAGE_STRUCT POS_IMAGE;

INT POS_US_FUN(void){
    
    unsigned char i;
    CHAR Data;    


    for(i=0;i<7;i++){
        Data = NextByte();
    }

    sysprintf("POS_US_FUN\r\n");
    return _SUCCESS;

}


BOOL PosSyntaxParsing(VOID){
    
    _CmdEntry *CmdEntry;
    CHAR cmd;

    ClearParserPool();

    cmd = NextByte();

    // check EPL2 command
    if (CmdEntry = CheckSingleCommand(cmd, PosEntry))
    {
        if (CmdEntry->func() == _SUCCESS)
            return TRUE;
    }

    if (!BackParsePool())
        return TRUE;

    return FALSE;


}

#endif
 

Pos.h   /

#ifndef POS_H
#define POS_H

#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif    /* __cplusplus */


typedef struct
{
    u8 print_start_flag;

    u8 *pos_image_ctl;
    u32 pos_image_ctl_count;

    u32 pos_image_ctl_sY;

    u32 pos_image_ctl_iImageWidth;
    u32 pos_image_ctl_iImageHeight;
    u8 *pos_image_buff_offset;

}POS_IMAGE_STRUCT;

extern POS_IMAGE_STRUCT POS_IMAGE;
extern CONST _CmdEntry PosEntry[];
extern CONST _CmdEntry PosFsEntry[];
extern CONST _CmdEntry PosEscEntry[];
extern CONST _CmdEntry PosGscEntry[];
extern BOOL PosSyntaxParsing(VOID);
extern INT POS_ESC_FUN(VOID);
extern INT POS_FS_FUN(VOID);
extern INT POS_GS_FUN(VOID);
extern INT POS_US_FUN(void);
#ifdef __cplusplus
}                       /* End of extern "C" { */
#endif    /* __cplusplus */

#endif    


PosEscFun.c 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Common.h"
#include "XCore.h"
#include "XProFile.h"
#include "..\Parser.h"
#include "..\ParserUtil.h"
#include "Pos.h"
#ifdef _POS_MODE


extern VOID PrintImageLabel(LONG Count, LONG Copy);
static u8 POS_NEXT_BYTE(){
    return (POS_IMAGE.pos_image_ctl[POS_IMAGE.pos_image_ctl_count++] ^ 0xFF);
}

static void POS_PRINT(VOID)
{
    _BMPAttr sBMPAttr;

    sBMPAttr.iMode = 0;
    // get x 
    sBMPAttr.sCoord.iX = 0;
    // get y
    sBMPAttr.sCoord.iY = POS_IMAGE.pos_image_ctl_sY;

    sBMPAttr.sCoord = XYCoord(sBMPAttr.sCoord);

    // get Width
    sBMPAttr.iImageWidth = POS_IMAGE.pos_image_ctl_iImageWidth<<3;

    // get height
    sBMPAttr.iImageHeight = POS_IMAGE.pos_image_ctl_iImageHeight;

    sBMPAttr.psImageBuffer = &sImageBuffer;
    
    sBMPAttr.ReadByte = POS_NEXT_BYTE;

    ReloadWaitTime();
    
    if (BITMAP(&sBMPAttr) == _ERROR)
    {
        RemoveLine();
        free(POS_IMAGE.pos_image_ctl);
        return ;
    }
    
    free(POS_IMAGE.pos_image_ctl);

    memset(&POS_IMAGE, 0, sizeof(POS_IMAGE_STRUCT));
//sysprintf("PIL_1\n");
    PrintImageLabel(1, 1);

}


INT POS_ESC_Set_right_side_character_spacing(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_print_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Set_absolute_print_position(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_SC_user_defined_character_set(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Define_user_defined_characters(void){

    u8 CHAR_Y = NextByte();
    u8 CHAR_C1 = NextByte();
    u8 CHAR_C2 = NextByte();
    u8 CHAR_x_count;
    u8 i,j;

    u8 temp_array;

    
    for(i=0;i<(CHAR_C2-CHAR_C1+1);i++){

        CHAR_x_count = NextByte();

        for(j=0;j<CHAR_Y*CHAR_x_count;j++){
            temp_array = NextByte();
        }    
    }
    return _SUCCESS;
}

INT POS_ESC_Control_beeper_tones(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}

//ESC * m nL nH d1 ... dk
INT POS_ESC_Select_bmp_mode(void){
    return _SUCCESS;
}

INT POS_ESC_Turn_underline_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_default_line_spacing(void){
    return _SUCCESS;
}
INT POS_ESC_Set_line_spacing(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Return_home(void){
    return _SUCCESS;
}
INT POS_ESC_Select_peripheral_device(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Cancel_user_defined_characters(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Initialize_printer(void){

    ClearImageBuffer(&sImageBuffer);
    ClearCounter();

    return _SUCCESS;
}

INT POS_ESC_Set_horizontal_tab_positions(void){

    unsigned int i;
    for(i=0;NextByte() != NULL;i++){

    }
    return _SUCCESS;
}
INT POS_ESC_Turn_emphasized_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}

INT POS_ESC_Turn_double_strike_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Print_and_feed_paper(void){
    CHAR Data;

    Data = NextByte();    
    
    if(POS_IMAGE.pos_image_ctl == NULL){
        POS_IMAGE.pos_image_ctl_sY += (u8)(Data<<3);
    }
    else{
        POS_PRINT();        
    }
    

    return _SUCCESS;
}

INT POS_ESC_Print_and_reverse_feed(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_Page_mode(void){

    return _SUCCESS;
}
INT POS_ESC_Select_character_font(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}

INT POS_ESC_Select_international_character(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_Standard_mode(void){

    return _SUCCESS;
}
INT POS_ESC_Select_print_direction_in_Page_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Turn_unidirectional_print_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Turn_clockwise_rotation_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Set_print_area_in_Page_mode(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    
    Data = NextByte();
    Data = NextByte();
    
    Data = NextByte();
    Data = NextByte();
    
    Data = NextByte();
    Data = NextByte();
    
    return _SUCCESS;
}

INT POS_ESC_Set_relative_print_position(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_justification(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_paper_sensorn(void){
    CHAR Data;

    CHAR temp_data;
    Data = NextByte();

    if(Data == '3')    temp_data = NextByte();
    if(Data == '4')    temp_data = NextByte();
    if(Data == '5')    temp_data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Print_and_feed_lines(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Print_and_reverse_feed_lines(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Partial_cut_one_point(void){

    return _SUCCESS;
}
INT POS_ESC_Partial_cut_three_point(void){

    return _SUCCESS;
}
INT POS_ESC_Generate_pulse(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_Select_print_color(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Select_character_code_table(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Transmit_peripheral_device_status(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Transmit_paper_sensor_status(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_ESC_Turn_upside_down_print_mod(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}

CONST _CmdEntry PosEscEntry[] = {
    {"\x20"    ,POS_ESC_Set_right_side_character_spacing},
    {"!"    ,POS_ESC_Select_print_mode},
    {"$"    ,POS_ESC_Set_absolute_print_position},    
    {"%"    ,POS_ESC_SC_user_defined_character_set},    
    {"&"    ,POS_ESC_Define_user_defined_characters},
    {"("    ,POS_ESC_Control_beeper_tones},
    {"*"    ,POS_ESC_Select_bmp_mode},
    {"-"    ,POS_ESC_Turn_underline_mode},
    {"2"    ,POS_ESC_Select_default_line_spacing},
    {"3"    ,POS_ESC_Set_line_spacing},
    {"<"    ,POS_ESC_Return_home},
    {"="    ,POS_ESC_Select_peripheral_device},
    {"?"    ,POS_ESC_Cancel_user_defined_characters},
    {"@"    ,POS_ESC_Initialize_printer},
    
    {"D"    ,POS_ESC_Set_horizontal_tab_positions},
    {"E"    ,POS_ESC_Turn_emphasized_mode},
    {"G"    ,POS_ESC_Turn_double_strike_mode},
    {"J"    ,POS_ESC_Print_and_feed_paper},
    {"K"    ,POS_ESC_Print_and_reverse_feed},
    {"L"    ,POS_ESC_Select_Page_mode},
    {"M"    ,POS_ESC_Select_character_font},
    {"R"    ,POS_ESC_Select_international_character},
    {"S"    ,POS_ESC_Select_Standard_mode},
    {"T"    ,POS_ESC_Select_print_direction_in_Page_mode},
    {"U"    ,POS_ESC_Turn_unidirectional_print_mode},
    {"V"    ,POS_ESC_Turn_clockwise_rotation_mode},
    {"W"    ,POS_ESC_Set_print_area_in_Page_mode},
    {"\x5c"    ,POS_ESC_Set_relative_print_position},

    {"a"    ,POS_ESC_Select_justification},
    {"c"    ,POS_ESC_Select_paper_sensorn},
    {"d"    ,POS_ESC_Print_and_feed_lines},
    {"e"    ,POS_ESC_Print_and_reverse_feed_lines},
    {"i"    ,POS_ESC_Partial_cut_one_point},
    {"m"    ,POS_ESC_Partial_cut_three_point},
    {"p"    ,POS_ESC_Generate_pulse},
    {"r"    ,POS_ESC_Select_Select_print_color},
    {"t"    ,POS_ESC_Select_character_code_table},
    {"u"    ,POS_ESC_Transmit_peripheral_device_status},
    {"v"    ,POS_ESC_Transmit_paper_sensor_status},
    {"{"    ,POS_ESC_Turn_upside_down_print_mod},
    {(CHAR *)_NULL,        _NULL}
};

INT POS_ESC_FUN(VOID){
    _CmdEntry *CmdEntry;
    CHAR cmd;
    cmd = NextByte();

    sysprintf("ESC %02X\r\n",cmd);

    if (CmdEntry = CheckSingleCommand(cmd, PosEscEntry))
    {
        if (CmdEntry->func() == _SUCCESS)
            return _SUCCESS;
    }

    if (!BackParsePool())
        return _SUCCESS;

    return _ERROR;

    
}
#endif

 

PosFsFun.c    //

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Common.h"
#include "XCore.h"
#include "XProFile.h"
#include "..\Parser.h"
#include "..\ParserUtil.h"
#include "Pos.h"

#ifdef _POS_MODE

INT POS_FS_Select_print_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_FS_Select_character_mode(void){
    return _SUCCESS;
}
INT POS_FS_Select_character_style(void){

    CHAR Data;
    CHAR temp_data;
    Data = NextByte();
    

    if(Data == 'A' || Data == 'C' || Data == 'E' || Data == 'L' || Data == 'e'){
        temp_data = NextByte();
        temp_data = NextByte();
        temp_data = NextByte();
        temp_data = NextByte();
    }

    return _SUCCESS;
}
INT POS_FS_Turn_underline_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_FS_Cancel_character_mode(void){
    return _SUCCESS;
}
INT POS_FS_Select_character_code_system(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_FS_Set_character_spacing(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_FS_Turn_quadruple_size_mode(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_FS_NV_user_memory_operate(void){
    CHAR Data;
    Data = NextByte();

    if(Data == '1'){

    }
    else if(Data == '2'){
        Data = NextByte();
        Data = NextByte();
        Data = NextByte();
        Data = NextByte();
        
        Data = NextByte();
        Data = NextByte();
        Data = NextByte();
        
    }
    return _SUCCESS;
}


INT POS_FS_Print_NV_bit_image(void){
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}


CONST _CmdEntry PosFsEntry[] = {
    {"!"    ,POS_FS_Select_print_mode},
    {"&"    ,POS_FS_Select_character_mode},
    {"("    ,POS_FS_Select_character_style},
    {"-"    ,POS_FS_Turn_underline_mode},
    {"."    ,POS_FS_Cancel_character_mode},
    //{"2"    ,POS_FS_Define_user_defined_characters},
    //{"?"    ,POS_FS_Cancel_user_defined_characters},
    {"C"    ,POS_FS_Select_character_code_system},
    {"S"    ,POS_FS_Set_character_spacing},
    {"W"    ,POS_FS_Turn_quadruple_size_mode},
    {"g"    ,POS_FS_NV_user_memory_operate},
    {"p"    ,POS_FS_Print_NV_bit_image},
    //{"q"    ,POS_FS_Define_NV_bit_image},
    {(CHAR *)_NULL,        _NULL}
};

INT POS_FS_FUN(VOID){
    _CmdEntry *CmdEntry;
    CHAR cmd;
    cmd = NextByte();
    
    sysprintf("FS %02X\r\n",cmd);

    if (CmdEntry = CheckSingleCommand(cmd, PosFsEntry))
    {
        if (CmdEntry->func() == _SUCCESS)
            return _SUCCESS;
    }

    if (!BackParsePool())
        return _SUCCESS;

    return _ERROR;


}
#endif

 

PosGsFun.c    //

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Common.h"
#include "XCore.h"
#include "XProFile.h"
#include "..\Parser.h"
#include "..\ParserUtil.h"
#include "Pos.h"
#ifdef _POS_MODE
INT POS_GS_Select_character_size(void){
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Set_Absolute_Vposition_In_Page(void){//GS $ nL nH
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Define_downloaded_bit_image(void){//GS * x y d1...d(x × y × 8)
    CHAR Data;

    SHORT i;
    
    CHAR CHAR_X = NextByte();
    CHAR CHAR_Y = NextByte();
    SHORT LENG = (CHAR_X*CHAR_Y*8);    

    for(i=0;i<LENG;i++){
        Data = NextByte();
    }
    return _SUCCESS;
}
INT POS_GS_Print_downloaded_bit_image(void){//GS / m
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Turn_print_mode(void){//GS B n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Select_counter(void){
    CHAR Head;
    CHAR Data;
    
    Head = NextByte();

    if(Head == '0'){        //GS C 0 n m
        Data = NextByte();        
        Data = NextByte();
    }
    else if(Head == '1'){    //GS C 1 aL aH bL bH n r
        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();        
        Data = NextByte();

    }
    else if(Head == '2'){    //GS C 2 nL nH
        Data = NextByte();        
        Data = NextByte();

    }
    else if(Head == ';'){    //GS C ; sa ; sb ; sn ; sr ; sc ;
        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();    

        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();        
        Data = NextByte();
        Data = NextByte();    
    }

    return _SUCCESS;
}

INT POS_GS_Select_position_of_HRI(void){//GS H n
    CHAR Head;
    CHAR temp_data;
    Head = NextByte();

    if(Head != 0){

        do{
            temp_data = NextByte();
        }while(temp_data != 0x0A);    

    }

    return _SUCCESS;
}
INT POS_GS_Transmit_printer_ID(void){//GS I n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Set_left_margin(void){//GS L nL nH
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Set_HV_motion_units(void){//GS P x y
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Print_variable_vertical_BMP(void){//GS Q 0 m xL xH yL yH d1...dk
    CHAR Data;
    
    SHORT Data_x;
    SHORT Data_y;
    SHORT leng;
    SHORT i;

    CHAR Data_0 = NextByte();
    CHAR Data_m = NextByte();


    Data_x = NextByte();
    Data_x |= (NextByte()<<8);

    Data_y = NextByte();
    Data_y |= (NextByte()<<8);

    leng = Data_x*Data_y;

    for(i=0;i<leng;i++){

        Data = NextByte();
    }

    return _SUCCESS;

}
INT POS_GS_Set_print_position_to_beginning_line(void){//GS T n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Select_CutMode_and_CutPaper(void){//GS V m (n)
    CHAR Data_m;
    CHAR Data_n;
    Data_m = NextByte();

    if(Data_m >= 65){
        Data_n = NextByte();
    }

    
    return _SUCCESS;
}
INT POS_GS_Set_print_area_width(void){//GS W nL nH
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Set_RelativeVertical_Position(void){//GS \ nL nH
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Execute_macro(void){//GS ^ r t m
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Enable_ASB(void){//GS a n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Turn_smoothing_mode(void){//GS b n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Print_counter(void){//GS c

    return _SUCCESS;
}
INT POS_GS_Select_font_for_HRI(void){//GS f n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Maintenance_Counter(void){//GS g 
    CHAR Head;
    CHAR Data;
    Head = NextByte();

    if(Head == '0'){        //GS g 0 m nL nH
        Data = NextByte();    
        Data = NextByte();
        Data = NextByte();
    }
    else if(Head == '2'){    //GS g 0 m nL nH
        Data = NextByte();    
        Data = NextByte();
        Data = NextByte();
    }

    return _SUCCESS;
}
INT POS_GS_Set_barcode_height(void){//GS h n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Enable_ABS_for_ink(void){//GS j n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Print_barcode(void){//GS k m d1 ... dk NUL/m n d1 ... dn
    CHAR Data;
    CHAR Data_n;
    CHAR Data_m = NextByte();

    if(Data_m < 65){//user A type barcode

        while(NextByte() != NULL);
        

    }
    else{//user B type barcode
        Data_n = NextByte();
        do{
            Data = NextByte();
        }while(--Data_n);

    }
    return _SUCCESS;
}
INT POS_GS_Transmit_status(void){//GS r n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Print_raster_BMP(void){//GS v 0 m xL xH yL yH d1...dk

    DOUBLE Number;
    _BMPAttr sBMPAttr;

    unsigned char bmp_mode;

    INT bitmap_size;
    int i;

    bmp_mode = NextByte();

    sBMPAttr.iMode = NextByte();

    // get Width
    sBMPAttr.iImageWidth = NextByte();
    sBMPAttr.iImageWidth |= (NextByte()<<8);
    
    // get height
    sBMPAttr.iImageHeight = NextByte();
    sBMPAttr.iImageHeight |= (NextByte()<<8);
    //sBMPAttr.iImageHeight <<= 3;    

    if(POS_IMAGE.print_start_flag == 0){

        POS_IMAGE.print_start_flag = 1;
        POS_IMAGE.pos_image_ctl = malloc(sBMPAttr.iImageWidth*sBMPAttr.iImageWidth);
        POS_IMAGE.pos_image_buff_offset = POS_IMAGE.pos_image_ctl;        
        POS_IMAGE.pos_image_ctl_count = 0;
        POS_IMAGE.pos_image_ctl_iImageWidth = sBMPAttr.iImageWidth;     
    }
    
    POS_IMAGE.pos_image_ctl_iImageHeight += sBMPAttr.iImageHeight;
    bitmap_size = sBMPAttr.iImageWidth*sBMPAttr.iImageHeight;

    for(i=0;i<bitmap_size;i++){
        *(POS_IMAGE.pos_image_buff_offset++) = NextByte();
    }

    return _SUCCESS;
}
INT POS_GS_Set_barcode_width(void){//GS w n
    CHAR Data;
    Data = NextByte();
    return _SUCCESS;
}
INT POS_GS_Set_online_recovery_wait_time(void){//GS z 0 t1 t2
    CHAR Data;
    Data = NextByte();
    Data = NextByte();
    Data = NextByte();
    return _SUCCESS;
}


CONST _CmdEntry PosGsEntry[] = {
    {"!"    ,POS_GS_Select_character_size},
    {"$"    ,POS_GS_Set_Absolute_Vposition_In_Page},//Set absolute vertical print position in Page mode
    {"*"    ,POS_GS_Define_downloaded_bit_image},
    {"/"    ,POS_GS_Print_downloaded_bit_image},
    {"B"    ,POS_GS_Turn_print_mode},                //Turn white/black reverse print mode on/off
    {"C"    ,POS_GS_Select_counter},
    //{"D"    ,POS_GS_Specify_Windows_BMP_graphics},    //Specify Windows BMP graphics data
    {"H"    ,POS_GS_Select_position_of_HRI},
    {"I"    ,POS_GS_Transmit_printer_ID},
    {"L"    ,POS_GS_Set_left_margin},
    {"P"    ,POS_GS_Set_HV_motion_units},
    {"Q"    ,POS_GS_Print_variable_vertical_BMP},
    {"T"    ,POS_GS_Set_print_position_to_beginning_line},
    {"V"    ,POS_GS_Select_CutMode_and_CutPaper},
    {"W"    ,POS_GS_Set_print_area_width},
    {"\x5c"    ,POS_GS_Set_RelativeVertical_Position},
    {"^"    ,POS_GS_Execute_macro},
                
    {"a"    ,POS_GS_Enable_ASB},                    //Enable/disable Automatic Status Back (ASB)
    {"b"    ,POS_GS_Turn_smoothing_mode},
    {"c"    ,POS_GS_Print_counter},
    {"f"    ,POS_GS_Select_font_for_HRI},
    {"g"    ,POS_GS_Maintenance_Counter},
    {"h"    ,POS_GS_Set_barcode_height},
    {"j"    ,POS_GS_Enable_ABS_for_ink},
    {"k"    ,POS_GS_Print_barcode},
    {"r"    ,POS_GS_Transmit_status},
    {"v"    ,POS_GS_Print_raster_BMP},
    {"w"    ,POS_GS_Set_barcode_width},
    {"z"    ,POS_GS_Set_online_recovery_wait_time},
    {(CHAR *)_NULL,        _NULL}
};

INT POS_GS_FUN(VOID){
    
    _CmdEntry *CmdEntry;
    CHAR cmd;
    cmd = NextByte();

    sysprintf("GS %02X\r\n",cmd);

    if (CmdEntry = CheckSingleCommand(cmd, PosGsEntry))
    {
        if (CmdEntry->func() == _SUCCESS)
            return _SUCCESS;
    }

    if (!BackParsePool())
        return _SUCCESS;

    return _ERROR;


}
#endif

 

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值