Цитата(tangar @ May 9 2005, 22:47)
outport(control,0x05);
delay(10);
}
Во-первых ноги разъема 1(STROBE), 14(CRLF), 17(SELECT) - инвертированые, то есть когда туда пишется 1 на выходе будет 0. Нога 16 (INIT)- неинвертированая.
Во-вторых дергать ногу CRLF не надо! Она не имеет никакого отношения к посылке СИМВОЛОВ CR+LF на принтер.
Поэтому
void outLPT(char data) {
char by=0xC;
outport(control,by);
outport(lpt,data);
by|=1;
outport(control,by);
by&=0xFE;
outport(control,by);
}
outLPT(data);
outLPT(0xD); // по этой команде идет печать и возврат каретки
outLPT(0xA); // переход на новую строку
Ширина строба - не менее 0.5 мкс, поэтому delay(10) - 10 мс - это слишком