marwk@levels.sait.edu.au (05/20/91)
I have reached the length of my tether in solving the problem of
printing a user-defined character on an EPSON LQ 24-pin printer using
TURBO C 2.01.
The program listing is provided below.
The main program prints the first message and the second message but
not the user-defined character.
Please tell me what I am doing wrong and how to correct it.
Thank you
Ray Kennington
------------------------------
/* PRNCHAR.C */
#include <stdio.h>
#define ESC 0x1B
void set_letter_quality(void)
{
fprintf(stdprn, "%c%c%c", ESC, 0x78, 1);
}
void set_ten_characters_per_inch(void)
{
fprintf(stdprn, "%c%c", ESC, 0x50, 1);
}
void copy_font_from_rom_to_ram(void)
{
fprintf(stdprn, "%c%c%c%c%c", ESC, 0x3A, 0, 0, 0);
}
void define_a_character(char a[24][18])
{
register 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, 0x25, 1);
}
void print_character(int c)
{
fprintf(stdprn, "%c", c);
}
void send_character_to_printer(char a[24][18])
{
register int i,bit, col;
char byte[3];
fprintf(stdprn, "%c%c%c%c%c%c%c%c",
ESC, 0x26, 0, 0x21, 0x21, 0, 18, 0);
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];
fprintf(stdprn, "About to print user-defined character\n");
set_letter_quality();
set_ten_characters_per_inch();
copy_font_from_rom_to_ram();
define_a_character(a);
send_character_to_printer(a);
select_user_defined_set();
print_character(0x21);
fprintf(stdprn, "\nHaving printed user-defined character\n");
}
--
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!