⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 escpdump.c

📁 Tool to dump Epson ESC/P print files to readable Text
💻 C
📖 第 1 页 / 共 2 页
字号:
#define ESCP2		0
#define ESCP		1
#define ESCP9PIN	2

#define UNDEF       0
#define CTRL        1
#define DATA    	2

int usage() {
    printf("Usage: escpdump [-escp2|-escp|-escp9pin] [Inputfile]\n");
    printf("       -escp2:      Input File is ESC/P2 (Default)\n");
    printf("       -escp:       Input File is ESC/P\n");
    printf("       -escp9pin:   Input File is ESC/P for 9-Pin Printers\n");
    return 0;
}

int version() {
    printf("Version 0.1\n");
    return 0;
}



int escp_analyze(FILE *in, int epson_mode) 
{
	unsigned int c, c2, c3;
    int i, j;
    int found;
    int ctrl_len;
    int mode = UNDEF;
    
	while((c = getc(in)) != EOF) {
        if(c < SPACE) {
            if(mode == DATA)
                printf("<-End Data!\n");
            mode = CTRL;
/*
        int ctrl_len, data_len, special;
        unsigned char byte1;
        unsigned char byte2;
        unsigned char byte3;
        char *command;
        unsigned char escp2, escp, escp9pin;
        char *chapter;
*/
            found = 0;
            for(ctrl_len = 1; ctrl_len <= 3 && !found; ctrl_len++) {
                for(i = 0; escp[i].ctrl_len; i++) {
                    if(ctrl_len == escp[i].ctrl_len) {
                        if(ctrl_len == 1 && escp[i].byte1 == c) {
                            found = 1;
                            break;
                        }
                        if(ctrl_len == 2 && escp[i].byte1 == c && escp[i].byte2 == c2) {
                            found = 1;
                            break;
                        }
                        if(ctrl_len == 3 && escp[i].byte1 == c && escp[i].byte2 == c2 && escp[i].byte3 == c3) {
                            found = 1;
                            break;
                        }
                    }
                }
                if(found) {
                    printf("[ ");
                    if(c == ESC)
                        printf("ESC ");
                    else
                        printf("0x%.2x ", c);
                    if(ctrl_len == 2)
                        printf(((c2 < SPACE) ? "0x%.2x " : "%c "), c2);
                    if(ctrl_len == 3)
                        printf(((c3 < SPACE) ? "0x%.2x " : "%c "), c3);
                    if(escp[i].special) {
                        printf("ERROR: Not yet implemented! ");
                    } else if(escp[i].data_len) {
                        printf(": ");
                        for(j = 0; j < escp[i].data_len; j++) {
                            printf("0x%.2x ", getc(in));
                        }
                    }
                    printf("]\t");
                    printf("%s (%s)\n", escp[i].command, escp[i].chapter);
                    
                    break;
                }
                
                if(ctrl_len == 1) {
                    c2 = getc(in);
                }
                if(ctrl_len == 2) {
                    c3 = getc(in);
                }
            }
        } else {
            if(mode == CTRL) {
                printf("Data ->");
                mode = DATA;
            }
            printf("%c", c);
        }
	}
    if(mode == DATA)
        printf("<-End Data!\n");
	return 0;
}


int main(int argc, char *argv[]) {

    FILE *fpi;
    char mode = ESCP2;
    int i;

    fpi = stdin;
    for(i = 1; i < argc; i += 1) {
        if(!strcmp(argv[i], "-escp2"))
            mode = ESCP2;
        else if(!strcmp(argv[i], "-escp"))
            mode = ESCP;
        else if(!strcmp(argv[i], "-escp9pin"))
            mode = ESCP9PIN;
        else if(!strcmp(argv[i], "-h"))
            exit(usage());
        else if(!strcmp(argv[i], "-v"))
            exit(version());
        else {
            if((fpi = fopen(argv[i],"r")) == NULL) {
                fprintf(stderr,"cannot open file '%s'\n",argv[i]);
                exit(1);
            }
        }
    }

#ifdef WIN32
	setmode(fileno(fpi), O_BINARY);        /* set to Binary */
#endif

    escp_analyze(fpi, mode);
    fclose(fpi);
    exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -