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