Commit 996f12b0a580ff8a55607cf1f41a964a7697d5a4
1 parent
73746090
controle en mode bit image + tests d'envoi de differentes datas
Showing
5 changed files
with
296 additions
and
7 deletions
Show diff stats
Makefile
No preview for this file type
@@ -0,0 +1,189 @@ | @@ -0,0 +1,189 @@ | ||
1 | +/* code contrôle de l'imprimante | ||
2 | + * | ||
3 | + * EPSON LQ 570 + | ||
4 | + * P406 | ||
5 | + * Buffer size = 8kB | ||
6 | + * | ||
7 | + */ | ||
8 | + | ||
9 | + | ||
10 | +#include <stdio.h> | ||
11 | +#include <stdlib.h> | ||
12 | +#include <unistd.h> | ||
13 | +#include <termios.h> | ||
14 | +#include <sys/types.h> | ||
15 | +#include <sys/stat.h> | ||
16 | +#include <fcntl.h> | ||
17 | +#include <strings.h> | ||
18 | + | ||
19 | +/************** | ||
20 | + * Constantes * | ||
21 | + * ************/ | ||
22 | + | ||
23 | +#define SPEED B9600 | ||
24 | +#define PATH "/dev/usb/lp0" | ||
25 | +#define N_TEST 3 | ||
26 | + | ||
27 | +/********************** | ||
28 | + * Commandes usuelles * | ||
29 | + * ********************/ | ||
30 | + | ||
31 | +unsigned int N_COLUMN=12; | ||
32 | +unsigned char ESC=0x1B; | ||
33 | +unsigned char AT = 0x40;//@ | ||
34 | +unsigned char CR = 0x0D; | ||
35 | +unsigned char LF = 0x0A; | ||
36 | +unsigned char FF = 0x0C; | ||
37 | +unsigned char OPAR = 0x28;//( | ||
38 | +unsigned char NUL = 0; | ||
39 | +unsigned char UN = 1; | ||
40 | + | ||
41 | +/********************************* | ||
42 | + * Fonctions communication série * | ||
43 | + *********************************/ | ||
44 | + | ||
45 | +struct termios saveterm; | ||
46 | + | ||
47 | +int init_serial(char *device,int speed) { | ||
48 | + struct termios new; | ||
49 | + int fd=open(device,O_RDWR|O_NOCTTY); | ||
50 | + if(fd<0){perror(device); exit(-1);} | ||
51 | + tcgetattr(fd,&saveterm); | ||
52 | + bzero(&new,sizeof(new)); | ||
53 | + new.c_cflag=CLOCAL|CREAD|speed|CS8; | ||
54 | + new.c_iflag=0; | ||
55 | + new.c_oflag=0; | ||
56 | + new.c_lflag=0; // set input mode (non-canonical, no echo,...) | ||
57 | + new.c_cc[VTIME]=0; // inter-character timer unused | ||
58 | + new.c_cc[VMIN]=1; // blocking read until 1 char received | ||
59 | + tcflush(fd, TCIFLUSH); | ||
60 | + tcsetattr(fd,TCSANOW,&new); | ||
61 | + return fd; | ||
62 | +} | ||
63 | + | ||
64 | +void close_serial(int fd) { | ||
65 | + tcsetattr(fd,TCSANOW,&saveterm); | ||
66 | + close(fd); | ||
67 | +} | ||
68 | + | ||
69 | +/********************************************* | ||
70 | + * Fonction d'initialisation de l'imprimante * | ||
71 | + *********************************************/ | ||
72 | + | ||
73 | +void init_impr(int fd) | ||
74 | +{ | ||
75 | + write(fd, &ESC, 1); //ESC | ||
76 | + write(fd, &AT, 1); //@ : ESC @ permet d'initialiser l'imprimante | ||
77 | +} | ||
78 | + | ||
79 | +/***************************************** | ||
80 | + * Fonctions de controle de l'imprimante * | ||
81 | + *****************************************/ | ||
82 | + | ||
83 | +void bit_image(int fd){ | ||
84 | + //P29 | ||
85 | + unsigned char STAR = 0x2A; | ||
86 | + unsigned char PLUS = 0x2B; | ||
87 | + unsigned int QH = 48; | ||
88 | + unsigned int data1 = 0xA0; | ||
89 | + unsigned int data2 = 0x3A; | ||
90 | + unsigned int data3 = 0x9F; | ||
91 | + unsigned int data4 = 0xCD; | ||
92 | + | ||
93 | + unsigned char G = 0x47; | ||
94 | + unsigned int j = 0; | ||
95 | + unsigned int test = 0; | ||
96 | + | ||
97 | + //P176 | ||
98 | + //Entering Graphic mode | ||
99 | + write(fd,&ESC,1); | ||
100 | + write(fd,&OPAR,1); | ||
101 | + write(fd,&G,1); | ||
102 | + write(fd,&UN,1); | ||
103 | + write(fd,&NUL,1); | ||
104 | + write(fd,&UN,1); | ||
105 | + | ||
106 | + // Set line spacing with ESC + 48 | ||
107 | + write(fd,&ESC,1); | ||
108 | + write(fd,&PLUS,1); | ||
109 | + write(fd,&QH,1); | ||
110 | + | ||
111 | + //Go to starting line | ||
112 | + write(fd,&CR,1); | ||
113 | + write(fd,&LF,1); | ||
114 | + | ||
115 | + // ESC * for each line of dots P184 | ||
116 | + for(test=0;test<N_TEST;test++){ | ||
117 | + write(fd,&ESC,1); | ||
118 | + write(fd,&STAR,1); | ||
119 | + write(fd,&NUL,1); // m = 0 | ||
120 | + write(fd,&N_COLUMN,1); // nl | ||
121 | + write(fd,&NUL,1); // nh | ||
122 | + for(j=0;j<(N_COLUMN);j++){ | ||
123 | + //8 dot columns, 1 byte per column | ||
124 | + write(fd,&data1,1); | ||
125 | + write(fd,&data2,1); | ||
126 | + write(fd,&data3,1); | ||
127 | + write(fd,&data4,1); | ||
128 | + } | ||
129 | + // CR LF | ||
130 | + write(fd,&CR,1); | ||
131 | + write(fd,&LF,1); | ||
132 | + } | ||
133 | + | ||
134 | + data1=0xF0; | ||
135 | + data2=0xF1; | ||
136 | + data3=0xF2; | ||
137 | + data4=0xF4; | ||
138 | + for(test=0;test<N_TEST;test++){ | ||
139 | + write(fd,&ESC,1); | ||
140 | + write(fd,&STAR,1); | ||
141 | + write(fd,&NUL,1); // m = 0 | ||
142 | + write(fd,&N_COLUMN,1); // nl | ||
143 | + write(fd,&NUL,1); // nh | ||
144 | + for(j=0;j<N_COLUMN;j++){ | ||
145 | + // 8 dot columns, 1 byte per column | ||
146 | + write(fd,&data1,1); | ||
147 | + write(fd,&data2,1); | ||
148 | + write(fd,&data3,1); | ||
149 | + write(fd,&data4,1); | ||
150 | + } | ||
151 | + // CR LF | ||
152 | + write(fd,&CR,1); | ||
153 | + write(fd,&LF,1); | ||
154 | + } | ||
155 | + | ||
156 | + data1=0xA0; | ||
157 | + data2=0xA1; | ||
158 | + data3=0xA2; | ||
159 | + data4=0xA4; | ||
160 | + for(test=0;test<N_TEST;test++){ | ||
161 | + write(fd,&ESC,1); | ||
162 | + write(fd,&STAR,1); | ||
163 | + write(fd,&NUL,1); // m = 0 | ||
164 | + write(fd,&N_COLUMN,1); // nl | ||
165 | + write(fd,&NUL,1); // nh | ||
166 | + for(j=0;j<N_COLUMN;j++){ | ||
167 | + // 8 dot columns, 1 byte per column | ||
168 | + write(fd,&data1,1); | ||
169 | + write(fd,&data2,1); | ||
170 | + write(fd,&data3,1); | ||
171 | + write(fd,&data4,1); | ||
172 | + } | ||
173 | + // CR LF | ||
174 | + write(fd,&CR,1); | ||
175 | + write(fd,&LF,1); | ||
176 | + } | ||
177 | +} | ||
178 | + | ||
179 | +/******** | ||
180 | + * Main * | ||
181 | + ********/ | ||
182 | + | ||
183 | +int main(void) { | ||
184 | + int fd = init_serial(PATH, SPEED); | ||
185 | + init_impr(fd); | ||
186 | + bit_image(fd); | ||
187 | + close_serial(fd); | ||
188 | + return 0; | ||
189 | +} |
test_imprimante_v4.c
@@ -4,8 +4,7 @@ | @@ -4,8 +4,7 @@ | ||
4 | * P406 | 4 | * P406 |
5 | * Buffer size = 8kB | 5 | * Buffer size = 8kB |
6 | * | 6 | * |
7 | - * Commandes indisponible pour ce modèle : | ||
8 | - * ESC r : color*/ | 7 | + */ |
9 | 8 | ||
10 | 9 | ||
11 | #include <stdio.h> | 10 | #include <stdio.h> |
@@ -19,6 +18,7 @@ | @@ -19,6 +18,7 @@ | ||
19 | 18 | ||
20 | #define SPEED B9600 | 19 | #define SPEED B9600 |
21 | #define PATH "/dev/usb/lp0" | 20 | #define PATH "/dev/usb/lp0" |
21 | +#define LINE_LENGTH 16 | ||
22 | 22 | ||
23 | unsigned char ESC=0x1B; | 23 | unsigned char ESC=0x1B; |
24 | unsigned char AT = 0x40;//@ | 24 | unsigned char AT = 0x40;//@ |
@@ -274,7 +274,7 @@ void multipoint_print_mode(int fd){ | @@ -274,7 +274,7 @@ void multipoint_print_mode(int fd){ | ||
274 | write(fd,&ESC,1); | 274 | write(fd,&ESC,1); |
275 | write(fd,&t,1); | 275 | write(fd,&t,1); |
276 | write(fd,&UN,1); | 276 | write(fd,&UN,1); |
277 | - | 277 | + |
278 | data=0x69; | 278 | data=0x69; |
279 | for(i=0;i<cpt_max;i++) | 279 | for(i=0;i<cpt_max;i++) |
280 | write(fd,&data,1); | 280 | write(fd,&data,1); |
@@ -343,10 +343,10 @@ void rle_mode(int fd){ | @@ -343,10 +343,10 @@ void rle_mode(int fd){ | ||
343 | write(fd,&UN,1); | 343 | write(fd,&UN,1); |
344 | /* Step 3 : Specific Configuration */ | 344 | /* Step 3 : Specific Configuration */ |
345 | // default | 345 | // default |
346 | - | 346 | + |
347 | /* Step 4 : Horizontal & Vertical Print Position */ | 347 | /* Step 4 : Horizontal & Vertical Print Position */ |
348 | // default | 348 | // default |
349 | - | 349 | + |
350 | /* Step 5 : Output Raster Graphics */ | 350 | /* Step 5 : Output Raster Graphics */ |
351 | write(fd,&ESC,1); | 351 | write(fd,&ESC,1); |
352 | write(fd,&BSLASH,1); | 352 | write(fd,&BSLASH,1); |
@@ -376,11 +376,105 @@ void rle_mode(int fd){ | @@ -376,11 +376,105 @@ void rle_mode(int fd){ | ||
376 | write(fd,&AT,1); | 376 | write(fd,&AT,1); |
377 | } | 377 | } |
378 | 378 | ||
379 | + | ||
380 | +//P297 | ||
381 | +void bit_image(int fd){ | ||
382 | + | ||
383 | + unsigned int VHUIT = 8; | ||
384 | + unsigned char STAR = 0x2A; | ||
385 | + unsigned char PLUS = 0x2B; | ||
386 | + unsigned int QH = 48; | ||
387 | + unsigned int data1 = 0x5E; | ||
388 | + unsigned int data2 = 0x7F; | ||
389 | + unsigned int data3 = 0x43; | ||
390 | + unsigned int data4 = 0x86; | ||
391 | + | ||
392 | + unsigned char G = 0x47; | ||
393 | + int i = 0; | ||
394 | + | ||
395 | + //P176 | ||
396 | + //Entering Graphic mode | ||
397 | + write(fd,&ESC,1); | ||
398 | + write(fd,&OPAR,1); | ||
399 | + write(fd,&G,1); | ||
400 | + write(fd,&UN,1); | ||
401 | + write(fd,&NUL,1); | ||
402 | + write(fd,&UN,1); | ||
403 | + | ||
404 | + // Set line spacing with ESC + 48 | ||
405 | + write(fd,&ESC,1); | ||
406 | + write(fd,&PLUS,1); | ||
407 | + write(fd,&QH,1); | ||
408 | + | ||
409 | + //Go to starting line | ||
410 | + write(fd,&CR,1); | ||
411 | + write(fd,&LF,1); | ||
412 | + | ||
413 | + // ESC * for each line of dots P184 | ||
414 | + write(fd,&ESC,1); | ||
415 | + write(fd,&STAR,1); | ||
416 | + write(fd,&NUL,1); // m = 0 | ||
417 | + write(fd,&VHUIT,1); | ||
418 | + write(fd,&NUL,1); | ||
419 | + /* 8 dot columns, 1 byte per column */ | ||
420 | + for(i=0;i<LINE_LENGTH;i++){ | ||
421 | + write(fd,&data1,1); | ||
422 | + write(fd,&data2,1); | ||
423 | + write(fd,&data3,1); | ||
424 | + write(fd,&data4,1); | ||
425 | + } | ||
426 | + | ||
427 | + // CR LF | ||
428 | + write(fd,&CR,1); | ||
429 | + write(fd,&LF,1); | ||
430 | + | ||
431 | + //New line | ||
432 | + write(fd,&ESC,1); | ||
433 | + write(fd,&STAR,1); | ||
434 | + write(fd,&NUL,1); // m = 0 | ||
435 | + write(fd,&VHUIT,1); | ||
436 | + write(fd,&NUL,1); | ||
437 | + | ||
438 | + data1=0xF1; | ||
439 | + data2=0xF2; | ||
440 | + data3=0xF4; | ||
441 | + data4=0xF8; | ||
442 | + for(i=0;i<LINE_LENGTH;i++){ | ||
443 | + write(fd,&data1,1); | ||
444 | + write(fd,&data2,1); | ||
445 | + write(fd,&data3,1); | ||
446 | + write(fd,&data4,1); | ||
447 | + } | ||
448 | + write(fd,&CR,1); | ||
449 | + write(fd,&LF,1); | ||
450 | + | ||
451 | + //New line | ||
452 | + write(fd,&ESC,1); | ||
453 | + write(fd,&STAR,1); | ||
454 | + write(fd,&NUL,1); // m = 0 | ||
455 | + write(fd,&VHUIT,1); | ||
456 | + write(fd,&NUL,1); | ||
457 | + | ||
458 | + data1=0xF0; | ||
459 | + data2=0x0F; | ||
460 | + data3=0xFA; | ||
461 | + data4=0xAF; | ||
462 | + for(i=0;i<LINE_LENGTH;i++){ | ||
463 | + write(fd,&data1,1); | ||
464 | + write(fd,&data2,1); | ||
465 | + write(fd,&data3,1); | ||
466 | + write(fd,&data4,1); | ||
467 | + } | ||
468 | + write(fd,&CR,1); | ||
469 | + write(fd,&LF,1); | ||
470 | +} | ||
471 | + | ||
379 | int main(void) { | 472 | int main(void) { |
380 | int mode = 1; | 473 | int mode = 1; |
381 | int fd = init_serial(PATH, SPEED); | 474 | int fd = init_serial(PATH, SPEED); |
475 | + init_impr(fd); | ||
382 | printf("Debut de controle imprimante\n"); | 476 | printf("Debut de controle imprimante\n"); |
383 | - printf("Choisir un mode d'impression :\n 1 = Multipoint \t 2 = Compressed Raster Graphics\n"); | 477 | + printf("Choisir un mode d'impression :\n 1 = Multipoint \t 2 = Compressed Raster Graphics \t 3 = Bit Image \n"); |
384 | scanf("%d",&mode); | 478 | scanf("%d",&mode); |
385 | switch(mode){ | 479 | switch(mode){ |
386 | case 1 : | 480 | case 1 : |
@@ -389,6 +483,9 @@ int main(void) { | @@ -389,6 +483,9 @@ int main(void) { | ||
389 | case 2 : | 483 | case 2 : |
390 | rle_mode(fd); | 484 | rle_mode(fd); |
391 | break; | 485 | break; |
486 | + case 3 : | ||
487 | + bit_image(fd); | ||
488 | + break; | ||
392 | } | 489 | } |
393 | close_serial(fd); | 490 | close_serial(fd); |
394 | return 0; | 491 | return 0; |
No preview for this file type