Comment revision

This commit is contained in:
Ircama
2025-07-27 02:51:56 +02:00
parent a76a9a9f83
commit 6acb4d25a2

View File

@@ -2544,7 +2544,8 @@ class EpsonPrinter:
def print_test_color_pattern( def print_test_color_pattern(
self, self,
get_pattern=False, get_pattern=False,
get_fullpattern=False get_fullpattern=False,
use_black23=False
): ):
""" """
Print a one-page color test pattern at various quality levels via LPR. Print a one-page color test pattern at various quality levels via LPR.
@@ -2560,13 +2561,17 @@ class EpsonPrinter:
status = True status = True
lpr = LprClient(self.hostname, port="LPR", label="Check nozzles") lpr = LprClient(self.hostname, port="LPR", label="Check nozzles")
# Transfer Raster image commands (ESC i), Color, Run Length Encoding, 2bits per pixel # Transfer Raster image commands (ESC i), Color, Run Length Encoding,
TRI_BLACK = "1b6900010250008000" # ESC i 0: Black # 2 bits per pixel, 4 pixels per byte, H: 80 bytes = 320 dots = h 2,26 cm @ 360dpi (320/360*2,54)
TRI_MAGENTA = "1b6901010250002a00" # ESC i 1: Magenta TRI_BLACK = "1b6900010250008000" # ESC i 0: Black, V: 128 dots/rows (monochrome, 180 dpi) = 128/120*2,54= v 2,7 cm
TRI_YELLOW = "1b6904010250002a00" # ESC i 4: Yellow TRI_MAGENTA = "1b6901010250002a00" # ESC i 1: Magenta, V: 42 dots/rows
TRI_CYAN = "1b6902010250002a00" # ESC i 2: Cyan TRI_YELLOW = "1b6904010250002a00" # ESC i 4: Yellow, V: 42 dots/rows dots
TRI_CYAN = "1b6902010250002a00" # ESC i 2: Cyan, V: 42 dots/rows
TRI_BLACK2 = "1b6905010250002a00" # ESC i 5: black2, V: 42 dots/rows
TRI_BLACK3 = "1b6906010250002a00" # ESC i 6: black3, V: 42 dots/rows
SET_H_POS = "1b28240400" # ESC ( $ = Set absolute horizontal print position (first part) SET_H_POS = "1b28240400" # ESC ( $ = Set absolute horizontal print position, 4 bytes (n=length, first part)
SET_V_POS = "1b28760400" # ESC (v nL nH mL mH, 4 bytes (n=length, first part) = Set relative vertical print position
USE_MONOCHROME = "1b284b02000001" # ESC ( K = Monochrome Mode / Color Mode Selection, 01H: Monochrome mode USE_MONOCHROME = "1b284b02000001" # ESC ( K = Monochrome Mode / Color Mode Selection, 01H: Monochrome mode
USE_COLOR = "1b284b02000000" # ESC ( K = Monochrome Mode / Color Mode Selection, 00H: Default mode (color mode) USE_COLOR = "1b284b02000000" # ESC ( K = Monochrome Mode / Color Mode Selection, 00H: Default mode (color mode)
@@ -2580,18 +2585,20 @@ class EpsonPrinter:
} }
# Each sequence has 2 bits per pixel: 00=No, 01=Small, 10=Medium, 11=Large # Each sequence has 2 bits per pixel: 00=No, 01=Small, 10=Medium, 11=Large
# Using Run-Length Encoding (RLE), d9 (217>127) means pattern repeated 257-217=40 times. # Using Run-Length Encoding (RLE), d9 (217>127) means pattern repeated 257-217=40 times (160 dots per pattern).
PATTERN_LARGE = "d9ff" # ff = 11111111 = 11|11|11|11 = Large # These allow creating alternating patterns and are also used for solid patterns
PATTERN_MEDIUM = "d9aa" # aa = 10101010 = 10|10|10|10 = Medium PATTERN_LARGE = "d9ff" # ff = 11111111 = 11|11|11|11 = Large, 4 dots x 40
PATTERN_SMALL = "d955" # 55 = 01010101 = 01|01|01|01 = Small PATTERN_MEDIUM = "d9aa" # aa = 10101010 = 10|10|10|10 = Medium, 4 dots x 40
PATTERN_NONE = "d900" # 00 = 00000000 = 00|00|00|00 = No PATTERN_SMALL = "d955" # 55 = 01010101 = 01|01|01|01 = Small, 4 dots x 40
PATTERN_NO_DOTS = PATTERN_NONE + PATTERN_NONE PATTERN_NONE = "d900" # 00 = 00000000 = 00|00|00|00 = No, 4 dots x 40
PATTERN_NO_DOTS = PATTERN_NONE + PATTERN_NONE # 320 dots, (4+4) dots x 40
# Alternating patterns, 640 dots each = 2 hor. lines, one above the other
PATTERN_LARGE_ALT = PATTERN_LARGE + PATTERN_NO_DOTS + PATTERN_LARGE PATTERN_LARGE_ALT = PATTERN_LARGE + PATTERN_NO_DOTS + PATTERN_LARGE
PATTERN_MEDIUM_ALT = PATTERN_MEDIUM + PATTERN_NO_DOTS + PATTERN_MEDIUM PATTERN_MEDIUM_ALT = PATTERN_MEDIUM + PATTERN_NO_DOTS + PATTERN_MEDIUM
PATTERN_SMALL_ALT = PATTERN_SMALL + PATTERN_NO_DOTS + PATTERN_SMALL PATTERN_SMALL_ALT = PATTERN_SMALL + PATTERN_NO_DOTS + PATTERN_SMALL
# Define the printing segments - each represents a label with different patterns and text # 6 vertically stacked printing segments, each of 4 hor stacked blocks
printing_segments = [ printing_segments = [
{ {
"label_sequence": lpr.EXIT_REMOTE_MODE "label_sequence": lpr.EXIT_REMOTE_MODE
@@ -2643,7 +2650,8 @@ class EpsonPrinter:
""" """
command_parts = [] command_parts = []
for segment in printing_segments: # Define the 4 hor stacked blocks for each vertically stacked segment
for segment in printing_segments: # 6 printing segments
# Label # Label
command_parts.append(segment["label_sequence"].hex()) command_parts.append(segment["label_sequence"].hex())
@@ -2651,58 +2659,74 @@ class EpsonPrinter:
# Initialization # Initialization
command_parts.append( command_parts.append(
"1b2847010001" # Select graphics mode "1b2847010001" # Select graphics mode
+ "1b28550500010101a005" # ESC (U = Sets 360 DPI resolutio + "1b28550500010101a005" # ESC (U = Sets 360 DPI resolution
+ "1b28430400c6410000" # ESC (C = Configures page lenght + "1b28430400c6410000" # ESC (C = Configures page lenght
+ "1b28630800ffffffffc6410000" # ESC (c = Set page format + "1b28630800ffffffffc6410000" # ESC (c = Set page format
+ "1b28530800822e0000c6410000" # ESC (S = paper dimension specification + "1b28530800822e0000c6410000" # ESC (S = paper dimension specification
+ "1b2844040068010301" # ESC (D = raster image resolution + "1b28440400" + "68010301" # ESC (D = raster image resolution, r=360, v=3, h=1; 360/3=120 dpi vertically, 360/1=360 dpi horizontally
+ "1b2865020000" + vsd_code[segment["vsd"]] # ESC (e = Select Ink Drop Size + "1b2865020000" + vsd_code[segment["vsd"]] # ESC (e = Select Ink Drop Size
+ "1b5502" # ESC U 02H = selects automatic printing direction control + "1b5502" # ESC U 02H = selects automatic printing direction control
+ USE_MONOCHROME + USE_MONOCHROME
+ "1b2876040000010000" # ESC (v = Set relative vertical print position + SET_V_POS + "00010000" # ESC (v = Set relative vertical print position, 256 units = 4.52 mm
) )
# First block - black alternating # First block - black alternating
command_parts.append(SET_H_POS + "00010000") # ESC ( $ = Set absolute horizontal print position command_parts.append(SET_H_POS + "00010000") # ESC ( $ = Set absolute horizontal print position, 256 = 4,52 mm
command_parts.append(TRI_BLACK) command_parts.append(TRI_BLACK)
command_parts.append(segment["alternating_pattern"] * 64) command_parts.append(segment["alternating_pattern"] * 64) # 64 x 2 = 128 rows = v 2,7 cm
# Second block - Yellow/Magenta/Cyan alternating # Second block - Yellow/Magenta/Cyan alternating
command_parts.append(USE_COLOR + SET_H_POS + "80060000") # ESC ( $ = Set absolute horizontal print position command_parts.append(USE_COLOR + SET_H_POS + "80060000") # ESC ( $ = Set absolute horizontal print position, 1664 = 29,35 mm
command_parts.append(TRI_MAGENTA) command_parts.append(TRI_MAGENTA)
command_parts.append(segment["alternating_pattern"] * 64) command_parts.append(segment["alternating_pattern"] * 64)
command_parts.append(SET_H_POS + "80060000") command_parts.append(SET_H_POS + "80060000") # ESC ( $ = Set absolute horizontal print position, 1664 = 29,35 mm
command_parts.append(TRI_YELLOW) command_parts.append(TRI_YELLOW)
command_parts.append(segment["alternating_pattern"] * 64) command_parts.append(segment["alternating_pattern"] * 64)
command_parts.append(SET_H_POS + "80060000") command_parts.append(SET_H_POS + "80060000") # ESC ( $ = Set absolute horizontal print position, 1664 = 29,35 mm
command_parts.append(TRI_CYAN) command_parts.append(TRI_CYAN)
command_parts.append(segment["alternating_pattern"] * 64) command_parts.append(segment["alternating_pattern"] * 64)
# Third block - Black solid # Third block - Black solid
command_parts.append(USE_MONOCHROME + SET_H_POS + "000c0000") # ESC ( $ = Set absolute horizontal print position command_parts.append(USE_MONOCHROME + SET_H_POS + "000c0000") # ESC ( $ = Set absolute horizontal print position, 3072 = 54,35 mm
command_parts.append(TRI_BLACK) command_parts.append(TRI_BLACK)
command_parts.append(segment["solid_pattern"] * 256) command_parts.append(segment["solid_pattern"] * 256) # 256 x (160 h dots per pattern / 320 h dots per line) = 128 v rows = v 2,7 cm
# Fourth block - Yellow/Magenta/Cyan solid # Fourth block - Yellow/Magenta/Cyan solid
command_parts.append(USE_COLOR + SET_H_POS + "80110000") # ESC ( $ = Set absolute horizontal print position command_parts.append(USE_COLOR + SET_H_POS + "80110000") # ESC ( $ = Set absolute horizontal print position, 4480 = 79 mm
command_parts.append(TRI_MAGENTA) command_parts.append(TRI_MAGENTA)
command_parts.append(segment["solid_pattern"] * 256) command_parts.append(segment["solid_pattern"] * 256)
command_parts.append(SET_H_POS + "80110000") command_parts.append(SET_H_POS + "80110000") # ESC ( $ = Set absolute horizontal print position, 4480 = 79 mm
command_parts.append(TRI_YELLOW) command_parts.append(TRI_YELLOW)
command_parts.append(segment["solid_pattern"] * 256) command_parts.append(segment["solid_pattern"] * 256)
command_parts.append(SET_H_POS + "80110000") command_parts.append(SET_H_POS + "80110000") # ESC ( $ = Set absolute horizontal print position, 4480 = 79 mm
command_parts.append(TRI_CYAN) command_parts.append(TRI_CYAN)
command_parts.append(segment["solid_pattern"] * 256) command_parts.append(segment["solid_pattern"] * 256)
# Fifth block - Black/Black2/Black3 solid
if use_black23:
command_parts.append(USE_COLOR + SET_H_POS + "00170000") # ESC ( $ = Set absolute horizontal print position, 5888 = 103,8 mm
command_parts.append(TRI_BLACK)
command_parts.append(segment["solid_pattern"] * 256)
command_parts.append(SET_H_POS + "00170000") # ESC ( $ = Set absolute horizontal print position, 5888 = 103,8 mm
command_parts.append(TRI_BLACK2)
command_parts.append(segment["solid_pattern"] * 256)
command_parts.append(SET_H_POS + "00170000") # ESC ( $ = Set absolute horizontal print position, 5888 = 103,8 mm
command_parts.append(TRI_BLACK3)
command_parts.append(segment["solid_pattern"] * 256)
command_parts.append("1b2876040000030000") # ESC (v = Set relative vertical print position (move down) command_parts.append(SET_V_POS + "00030000") # ESC (v = Set relative vertical print position
# Relative vertical offset = 768 units = 13.54 mm
command_parts.append( command_parts.append(
( (
lpr.INITIALIZE_PRINTER lpr.INITIALIZE_PRINTER