有开发条码打印机控制程序经验的请进

为啥呢 2012-12-11 11:58:04
打印机指令集EPL、ZPL、BPL
我要开发使用以上三种指令集的打印机控制程序,遇到了几个问题:
1、貌似没有指令可以获取硬件DPI值,而任何尺寸参数都使用dot作为单位,没有DPI的情况下我如何计算dot到mm?
2、多指令集切换在java上一般是如何实现的?
3、除了USB以外的接口方式如何获取设备的型号信息?
求解答,谢谢
...全文
404 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
为啥呢 2012-12-17
  • 打赏
  • 举报
回复
没有有用的信息,平均分节帖...
dracularking 2012-12-13
  • 打赏
  • 举报
回复
引用 11 楼 xodbc 的回复:
这种做法我用不上,因为我应用的前提是用户操作系统上并没有安装打印机驱动程序,而是通过指令集中的指令直接和打印机通讯,发送指令操作打印机。 不过这种做法倒是可取的,java程序就应该用java的方式...只不过要用户自己去安装各类打印机的驱动程序还不如让用户找一下dpi在哪标。
那能不能自己安装一下,然后运行下这个java程序可不可行,以次来验证打印机是否提供了dpi信息。如果能得到的话,就证明只是自己没找到,而不是它没有。
为啥呢 2012-12-13
  • 打赏
  • 举报
回复
引用 10 楼 dracularking 的回复:
引用 9 楼 xodbc 的回复:没那么简单,至少我接触的几个代理商的支持人员对我提的技术性问题总是爱搭不理....除非是bug、缺陷、新订单之类的会燃起他们的热情,毕竟人家主要是卖设备,对于二次开发根本就是有一搭无一搭。 至于原厂...台湾、欧美、意大利,我认为我能搞到所有技术标准最新版本的英文资料已经很强力了。 我看过一个需要付费的通用打印程序(行业中比较有名的)……
这种做法我用不上,因为我应用的前提是用户操作系统上并没有安装打印机驱动程序,而是通过指令集中的指令直接和打印机通讯,发送指令操作打印机。 不过这种做法倒是可取的,java程序就应该用java的方式...只不过要用户自己去安装各类打印机的驱动程序还不如让用户找一下dpi在哪标。
dracularking 2012-12-13
  • 打赏
  • 举报
回复
引用 13 楼 xodbc 的回复:
你这样做本末倒置了,即便找到了,我依然不知道在没有驱动的前提下如何获取dpi...
现在不是没有办法的办法吗?总归是一点点接近。 否则你连是否存在获取dpi的可能都不知道。或者直接再仔细查看dll之类的,这里貌似也没什么人能提供直接经验。
为啥呢 2012-12-13
  • 打赏
  • 举报
回复
引用 12 楼 dracularking 的回复:
引用 11 楼 xodbc 的回复:这种做法我用不上,因为我应用的前提是用户操作系统上并没有安装打印机驱动程序,而是通过指令集中的指令直接和打印机通讯,发送指令操作打印机。 不过这种做法倒是可取的,java程序就应该用java的方式...只不过要用户自己去安装各类打印机的驱动程序还不如让用户找一下dpi在哪标。 那能不能自己安装一下,然后运行下这个java程序可不……
你这样做本末倒置了,即便找到了,我依然不知道在没有驱动的前提下如何获取dpi...
dracularking 2012-12-12
  • 打赏
  • 举报
回复
引用 4 楼 xodbc 的回复:
厂家提供的DLL里面所有的方法还有那3个指令集里所有的指令说明我都看过了,真的没有获取DPI的方法... 我现在的实现方式就是由用户在安装配置时输入,但用户水平有限,dpi在哪标着估计都找不到,到时候还得写说明,遇到不看说明的还得电话支持...
能不能让厂家也电话支持你们一下?
为啥呢 2012-12-12
  • 打赏
  • 举报
回复
引用 3 楼 dracularking 的回复:
没做过,但我觉得DPI这么重要的信息应该是要提供的(即使不是通过java) 但换个角度思考,打印机的dpi值是不是差不多都是行业标准值了(就是都差不多的或者就那么几个) 如果是这样的话,可以尝试用配置的方式输入。
厂家提供的DLL里面所有的方法还有那3个指令集里所有的指令说明我都看过了,真的没有获取DPI的方法... 我现在的实现方式就是由用户在安装配置时输入,但用户水平有限,dpi在哪标着估计都找不到,到时候还得写说明,遇到不看说明的还得电话支持...
dracularking 2012-12-12
  • 打赏
  • 举报
回复
没做过,但我觉得DPI这么重要的信息应该是要提供的(即使不是通过java) 但换个角度思考,打印机的dpi值是不是差不多都是行业标准值了(就是都差不多的或者就那么几个) 如果是这样的话,可以尝试用配置的方式输入。
为啥呢 2012-12-12
  • 打赏
  • 举报
回复
真的没人做过这方面的? 怪不得厂家提供的程序都只是C# C/C++ VBA VB.net之类...反正没java的
dracularking 2012-12-12
  • 打赏
  • 举报
回复
引用 9 楼 xodbc 的回复:
没那么简单,至少我接触的几个代理商的支持人员对我提的技术性问题总是爱搭不理....除非是bug、缺陷、新订单之类的会燃起他们的热情,毕竟人家主要是卖设备,对于二次开发根本就是有一搭无一搭。 至于原厂...台湾、欧美、意大利,我认为我能搞到所有技术标准最新版本的英文资料已经很强力了。 我看过一个需要付费的通用打印程序(行业中比较有名的),基本上是先获取设备型号,然后枚举型号支持的指令集,再然后枚举指令集对应的dll。这种方式需要录入所有支持设备的型号,对我来说是不希望做的...
你说你查看过dll了,没有查到。 dpi是打印机一个稳定的固有属性吧?如果可以获取其它的属性,我觉得不出意外这个也肯定是会有的,可能不是你预想的那种直接的获取方式,或许是需要通过一种变通的方式也未可知。比如(只是假设)可以获取到inch per dot=0.01之类的,就可以换算了。 另外打印机安装之后应该是向系统注册信息了的,看看这种是不是ok

PrintService[] 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

为啥呢 2012-12-12
  • 打赏
  • 举报
回复
引用 8 楼 dracularking 的回复:
引用 6 楼 xodbc 的回复:直接给我们支持的是代理商,其水平和其手头资料非常有限,而且我要做的是支持那三种指令集的所有型号条码打印机的控制程序,总不能将符合条件的所有厂家电话找来一个一个打吧... 代理商水平不行(假如又直接问不到厂家的话),让代理商去问厂家可以吗?因为代理商要对你们负责的,我想这也不是厂家所愿意看到的现象,因为现在你(他们的客户)碰到困难了,确实……
没那么简单,至少我接触的几个代理商的支持人员对我提的技术性问题总是爱搭不理....除非是bug、缺陷、新订单之类的会燃起他们的热情,毕竟人家主要是卖设备,对于二次开发根本就是有一搭无一搭。 至于原厂...台湾、欧美、意大利,我认为我能搞到所有技术标准最新版本的英文资料已经很强力了。 我看过一个需要付费的通用打印程序(行业中比较有名的),基本上是先获取设备型号,然后枚举型号支持的指令集,再然后枚举指令集对应的dll。这种方式需要录入所有支持设备的型号,对我来说是不希望做的...
dracularking 2012-12-12
  • 打赏
  • 举报
回复
引用 6 楼 xodbc 的回复:
直接给我们支持的是代理商,其水平和其手头资料非常有限,而且我要做的是支持那三种指令集的所有型号条码打印机的控制程序,总不能将符合条件的所有厂家电话找来一个一个打吧...
代理商水平不行(假如又直接问不到厂家的话),让代理商去问厂家可以吗?因为代理商要对你们负责的,我想这也不是厂家所愿意看到的现象,因为现在你(他们的客户)碰到困难了,确实找不到这重要的api。 每个厂家的控制程序规格都不一样的吗?(感觉应该有行业标准才对,如果真的都是不一样的,一或许有触类旁通的可能,二真是那样你也是要一一各自实现,一个个问也很正常。)
悲催的程序猿 2012-12-12
  • 打赏
  • 举报
回复
没接触过这方面的。。
为啥呢 2012-12-12
  • 打赏
  • 举报
回复
引用 5 楼 dracularking 的回复:
引用 4 楼 xodbc 的回复:厂家提供的DLL里面所有的方法还有那3个指令集里所有的指令说明我都看过了,真的没有获取DPI的方法... 我现在的实现方式就是由用户在安装配置时输入,但用户水平有限,dpi在哪标着估计都找不到,到时候还得写说明,遇到不看说明的还得电话支持... 能不能让厂家也电话支持你们一下?
直接给我们支持的是代理商,其水平和其手头资料非常有限,而且我要做的是支持那三种指令集的所有型号条码打印机的控制程序,总不能将符合条件的所有厂家电话找来一个一个打吧...
润物wu声 2012-12-11
  • 打赏
  • 举报
回复
暂时没有这方面的经验。。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧