2014-01-17 30 views
1

嗨,大家好,我有下一个问题,我无法打印我的位图,每行24行没有白线。即我需要打印图像,但这个图像有白线,每24行到位。如何打印位图TM-T88V

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})); 
       } 

感谢和提前!

+0

任何想法家伙?如果您需要更多信息,请询问。 – user3207717

+0

您是否找到解决方案?现在有同样的问题。 – user2799180

回答

0

尝试发送ESC/POS命令(0x1B, '3',24)在打印之前。这将设置行间距为24点,而不是30

1

所以我解决了这个问题的默认。仅使用ESC'3'24将行间距设置为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打印机。在这些打印机上,我可以使用标准模式打印图像。

+0

Marc,代码段中的'h'是什么?问候,奥列格 – Lucyk

+0

'h'是一个整数与图像的高度。 –

1

我解决了设置页面模式下面Marc Balmer的例子,但是必须发送24 * 2点(线高度双倍密度)的feed以使其工作:所以在每片数据发送命令ESC J n字节{27, 74, 48}。终于明白了!

希望它有帮助!

Reference (must be logged)

0

只是为了确认其他人建议什么,我已经成功地使用管理“ESC30”以删除数据条纹之间的白线。 你可以看到实际的代码(Haskell)和results here