打印机指令集EPL、ZPL、BPL
我要开发使用以上三种指令集的打印机控制程序,遇到了几个问题:
1、貌似没有指令可以获取硬件DPI值,而任何尺寸参数都使用dot作为单位,没有DPI的情况下我如何计算dot到mm?
2、多指令集切换在java上一般是如何实现的?
3、除了USB以外的接口方式如何获取设备的型号信息?
求解答,谢谢

解决方案 »

  1.   

    真的没人做过这方面的?
    怪不得厂家提供的程序都只是C# C/C++ VBA VB.net之类...反正没java的
      

  2.   

    没做过,但我觉得DPI这么重要的信息应该是要提供的(即使不是通过java)但换个角度思考,打印机的dpi值是不是差不多都是行业标准值了(就是都差不多的或者就那么几个)
    如果是这样的话,可以尝试用配置的方式输入。
      

  3.   

    代理商水平不行(假如又直接问不到厂家的话),让代理商去问厂家可以吗?因为代理商要对你们负责的,我想这也不是厂家所愿意看到的现象,因为现在你(他们的客户)碰到困难了,确实找不到这重要的api。每个厂家的控制程序规格都不一样的吗?(感觉应该有行业标准才对,如果真的都是不一样的,一或许有触类旁通的可能,二真是那样你也是要一一各自实现,一个个问也很正常。)
      

  4.   

    没那么简单,至少我接触的几个代理商的支持人员对我提的技术性问题总是爱搭不理....除非是bug、缺陷、新订单之类的会燃起他们的热情,毕竟人家主要是卖设备,对于二次开发根本就是有一搭无一搭。
    至于原厂...台湾、欧美、意大利,我认为我能搞到所有技术标准最新版本的英文资料已经很强力了。
    我看过一个需要付费的通用打印程序(行业中比较有名的),基本上是先获取设备型号,然后枚举型号支持的指令集,再然后枚举指令集对应的dll。这种方式需要录入所有支持设备的型号,对我来说是不希望做的...
      

  5.   

    你说你查看过dll了,没有查到。
    dpi是打印机一个稳定的固有属性吧?如果可以获取其它的属性,我觉得不出意外这个也肯定是会有的,可能不是你预想的那种直接的获取方式,或许是需要通过一种变通的方式也未可知。比如(只是假设)可以获取到inch per dot=0.01之类的,就可以换算了。另外打印机安装之后应该是向系统注册信息了的,看看这种是不是okPrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);for (PrintService service : services) {
    System.out.println(service.getName());
    PrinterResolution[] supportedResolutions = (PrinterResolution[]) service.getSupportedAttributeValues(javax.print.attribute.standard.PrinterResolution.class, null, null);for (PrinterResolution supportedResolution : supportedResolutions) {
    int[] resolution = supportedResolution.getResolution(PrinterResolution.DPI);
    System.out.println(resolution[0] + "x" + resolution[1]);
    }System.out.println();
    }
    http://www.java.net/node/657492
    http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/PrinterResolution.html
      

  6.   

    这种做法我用不上,因为我应用的前提是用户操作系统上并没有安装打印机驱动程序,而是通过指令集中的指令直接和打印机通讯,发送指令操作打印机。
    不过这种做法倒是可取的,java程序就应该用java的方式...只不过要用户自己去安装各类打印机的驱动程序还不如让用户找一下dpi在哪标。
      

  7.   


    那能不能自己安装一下,然后运行下这个java程序可不可行,以次来验证打印机是否提供了dpi信息。如果能得到的话,就证明只是自己没找到,而不是它没有。
      

  8.   

    你这样做本末倒置了,即便找到了,我依然不知道在没有驱动的前提下如何获取dpi...
      

  9.   

    现在不是没有办法的办法吗?总归是一点点接近。否则你连是否存在获取dpi的可能都不知道。或者直接再仔细查看dll之类的,这里貌似也没什么人能提供直接经验。