Как напечатать бит изображения TM-T88V
Привет, ребята, у меня есть следующая проблема, я не могу напечатать свое изображение без белой линии каждые 24 строки. т.е. мне нужно напечатать изображение, но у этого изображения есть белые линии каждые 24 строки в биты.
принтер epson распечатает изображение в следующем формате.
>line 23 01010101000010001010
>line 24 00001000100000000110
>line 25 --------- white line ------------
как можно удалить эту чертову белую линию?
Image size
width:400px
height:73px
while (offset < height)
{
//format ESC* Epson printer
String modIMG = new String(new byte[]{0x1B, 0x2A, 33, 0, 2});
img.append(modIMG);
for (int x = 0; x < width; ++x) {
for (int k = 0; k < 3; ++k) {
byte slice= 0;
for (int b = 0; b < 8; ++b) {
int y = (((offset / 8) + k) * 8) + b;
int i = (y * width) + x;
boolean v = false;
if (i < bitSet.length()) {
v = bitSet.get(i);}
slice |= (byte) ((v ? 1 : 0) << (7 - b));
}
img.slice(new String(new byte[] {slice}));
}
}
offset += 24;
img.append(new String(new String(new byte[]{0x1B,0x33,30}));
}
спасибо и заранее!
4 ответа
Я решил это, установив режим страницы, следуя примеру Марка Балмера, но для того, чтобы он заработал, нужно отправить фид на 24*2 точки (высота строки двойной плотности): так что после каждого куска данных команда отправки ESC J n
байтов {27, 74, 48}
, И наконец получил это!
Надеюсь, поможет!
Вот и я решил эту проблему. Недостаточно установить межстрочный интервал в 24 точки, используя ESC '3' 24, но вы должны напечатать изображение в режиме страницы.
Для входа в режим страницы: ESC 'L'
Затем вы должны установить область изображения с помощью ESC 'W', здесь я делаю это в C:
h2 = h * 2 + 30;
/* Set the printing area, h * 2 because of double density */
seq[0] = 0x1b;
seq[1] = 'W';
seq[2] = 0; /* xl */
seq[3] = 0; /* xh */
seq[4] = 0; /* yl */
seq[5] = 0; /* yh */
seq[6] = 0; /* dxl */
seq[7] = 2; /* dxh */
seq[8] = h2 % 256; /* dyl */
seq[9] = h2 / 256; /* dyh */
if (write(fd, seq, 10) != 10)
goto finish;
Теперь отправьте данные изображения и, наконец, напечатайте с отправкой 0x0c, это также вернет принтер в стандартный режим.
При использовании режима страницы белые полосы на изображении исчезли.
Кстати, это кажется странностью принтеров EPSON TM-T88, я не вижу этих белых линий на TM-T500A и, например, на принтерах Aures. На этих принтерах я могу использовать стандартный режим для печати изображений.
Попробуйте отправить команду ESC/POS (0x1B, '3', 24) перед печатью. Это устанавливает межстрочный интервал в 24 точки, а не по умолчанию 30.
Просто чтобы подтвердить то, что предложили другие люди, мне удалось удалить белые линии между полосами данных с помощью "ESC30". Вы можете увидеть реальный код (Haskell) и результаты здесь.