From ae9e64992595d7b5ee04ed7f14a3c485b32b8e4d Mon Sep 17 00:00:00 2001 From: cuu Date: Thu, 13 May 2021 17:04:24 +0800 Subject: [PATCH] bug fix --- .../thermal_printer/devterm_thermal_printer.c | 7 ++---- Code/thermal_printer/printer.c | 25 +++++++++++++------ Code/thermal_printer/printer.h | 4 +-- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/Code/thermal_printer/devterm_thermal_printer.c b/Code/thermal_printer/devterm_thermal_printer.c index 428d4eb..ff89464 100644 --- a/Code/thermal_printer/devterm_thermal_printer.c +++ b/Code/thermal_printer/devterm_thermal_printer.c @@ -435,16 +435,13 @@ void parse_cmd(CONFIG*cfg,uint8_t *cmd, uint8_t cmdidx){ //ESC j n if(cmd[0] == ASCII_ESC && cmd[1] == 0x4a){ - print_lines8(cfg); - feed_pitch1(cmd[2],cfg->orient); + if( print_lines8(cfg) == 0) { feed_pitch1(cmd[2],cfg->orient); } reset_cmd(); } //ESC d n if(cmd[0] == ASCII_ESC && cmd[1] == 0x64){ - print_lines8(cfg); - - feed_pitch1(cmd[2]*cfg->font->height,cfg->orient); + if( print_lines8(cfg) == 0) { feed_pitch1(cmd[2]*cfg->font->height,cfg->orient); } reset_cmd(); } //ESC ! n diff --git a/Code/thermal_printer/printer.c b/Code/thermal_printer/printer.c index 3cc48d3..6e6d094 100644 --- a/Code/thermal_printer/printer.c +++ b/Code/thermal_printer/printer.c @@ -368,7 +368,7 @@ uint16_t temperature() { #endif -void print_lines8(CONFIG*cfg) { +uint8_t print_lines8(CONFIG*cfg) { uint8_t i,j,k; int8_t w; uint8_t *data; @@ -383,6 +383,8 @@ void print_lines8(CONFIG*cfg) { uint8_t lastidx,lastw,lastj; int8_t left; + uint8_t rv; + pad = current_font.width %BITS8; if(pad > 0){ @@ -395,7 +397,8 @@ void print_lines8(CONFIG*cfg) { pad = i+pad; row = 0; - + rv = 0; + data = (uint8_t*)malloc(sizeof(uint8_t)*(pad+1)); i=0; @@ -485,8 +488,8 @@ void print_lines8(CONFIG*cfg) { break; } } - - if(IsPaper()== IS_PAPER){ + rv = IsPaper(); + if( rv == IS_PAPER){ //DEBUG("dot_line_idx",dot_line_idx); //DEBUG("dot_line_bits",dot_line_bitsidx); print_dots_8bit_split(cfg,dot_line_data,dot_line_idx+1); @@ -505,15 +508,17 @@ void print_lines8(CONFIG*cfg) { //Serial.println("print ever"); free(data); - + + return rv; } -void print_image8(CONFIG*cfg){ +uint8_t print_image8(CONFIG*cfg){ uint16_t height; uint16_t x,y,addr; + uint8_t rv; uint8_t LinePixels[MAXPIXELS]; uint8_t maxchars= PRINTER_BITS/8; @@ -521,6 +526,7 @@ void print_image8(CONFIG*cfg){ y=0; addr = 0; + rv = 0; while(y < height ) { x=0; @@ -536,8 +542,10 @@ void print_image8(CONFIG*cfg){ x++; } - - if(IsPaper()== IS_PAPER) print_dots_8bit_split(cfg,LinePixels,x); + rv = IsPaper(); + if( rv == IS_PAPER) { + print_dots_8bit_split(cfg,LinePixels,x); + } //feed_pitch1(FEED_PITCH,cfg->orient); y++; @@ -549,6 +557,7 @@ void print_image8(CONFIG*cfg){ cfg->img->idx = 0; cfg->img->width = 0; + return rv; } void print_cut_line(CONFIG*cfg){ diff --git a/Code/thermal_printer/printer.h b/Code/thermal_printer/printer.h index c6b182d..9b4bb1f 100644 --- a/Code/thermal_printer/printer.h +++ b/Code/thermal_printer/printer.h @@ -28,11 +28,11 @@ void print_dots_8bit(CONFIG*cfg,uint8_t *Array, uint8_t characters,uint8_t feed_ uint16_t temperature(); -void print_lines8(CONFIG*); +uint8_t print_lines8(CONFIG*); uint8_t invert_bit(uint8_t a); -void print_image8(CONFIG*); +uint8_t print_image6(CONFIG*); void print_cut_line(CONFIG*); void printer_set_font(CONFIG*cfg,uint8_t fnbits);