marwk@levels.sait.edu.au (04/10/91)
The following program is designed to create a user-defined character inside
the EPSON LQ-400 24-pin printer and then print the character.
It does not work.
The command summary on page 6-7 of the USER's GUIDE uses
    ESC & 0 n1 n2 d0 d1 d2 data
as the description of the command, where n1 = code for the first character,
n2 = the code for the last character, d0 = left space of character, d1 = body
width of character, d2 = right space of character and data is 3 bytes for
each column.
Could someone please explain what I am doing wrong here and tell me how
to do it properly.
Ray
----
/* PRNCHAR.C */
#include <stdio.h>
#define ESC 0x1B
void define_a_character(char a[24][18])
    {
    int i,j;
    for (i = 0; i < 24; ++i)
    for (j = 0; j < 24; ++j)
        a[i][j] = i == j;
    }
void select_user_defined_set(void)
    {
    fprintf(stdprn, "%c%c%c", ESC, '%', 1);
    }
void print_character(int c)
    {
    fprintf(stdprn, "%c", c);
    }
void send_character_to_printer(char a[24][18])
    {
    int i,bit, col;
    char byte[3];
    fprintf(stdprn, "%c%c%c%c%c%c%c%c",
                    ESC, '&', 1, 128, 128, 2, 18, 2);
    for (col = 0; col < 18; ++col)
        {
        for (i = 0; i < 3; ++i)  /* set up the 3 bytes */
            {
            byte[i] = 0;
            for (bit = 0; bit < 8; ++bit)
                byte[i] &= a[bit][col] << (7 - i);
            fprintf(stdprn, "%c", byte[i]);
            }
        }
    }
void main(void)
    {
    char a[24][18];
    select_user_defined_set();
    define_a_character(a);
    send_character_to_printer(a);
    print_character(128);
    }
--
University of South Australia   | Plus ca change, plus c'est la meme chose.
P.O. Box 1                      | Ghing thien me how, ming thien gung me how.
Ingle Farm                      | Knobs, knobs everywhere,
South Australia                 |              just vary a knob to think!