欢迎光临
我们一直在努力

C dl是什么牌子得力打印机(DL888D型号)Linux对接——Java+C版

任务

由于得力打印机(DL888D型号)不提供Linux版本驱动,其驱动开发商 seagull 只为Windows服务。故需要在Linux下提供能够对接打印机的软件。

打印机描述:该型号打印机是用来打印条形码、二维码等黑白图片的打印机(貌似叫热感打印机)。该打印机支持tspl指令。

输入:1、输入图像在纸上打印的长、宽(单位 mm),2、要打印的图像

输出:将输入的图片居中打印在打印纸上。

所需Lib

1、libusb:http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2

该lib为c++包。

知识补充

1、TSPL指令:该指令是用于打印条形码打印机的统一指令,大多条形码打印机都支持该指令。

https://max.book118.com/html/2016/0226/35995692.shtm

2、libusb安装与使用方式:https://blog.csdn.net/psy6653/article/details/56678276

3、.prn 文件为打印文件,构建该文件,将该文件转换为字节码通过usb端口发送给打印机,打印机会自动读取字节码,并做出相关的工作。

4、DL888D 打印机会将接受到的指令存储在打印机的指令存储器中,如果指令有错,打印机会卡死,这时需要将打印机断电,指令存储器中存储的错误指令才会自动清除。

5、jni调用:

基础 :
https://www.jianshu.com/p/6a3f952c6e71
动态库调用包的链接
https://www.cnblogs.com/nobugtodebug/archive/2012/11/07/e6cd72c67b3dd843f40d7ce919f7336a.html

总体思想

java构建UI界面,接受输入的长、宽 ,图片。然后构建指令,将指令转为字节码,构建prn文件,通过JNI调用,调用so库。

C语言构建so库,主要功能为使用usblib 向 usb发送字节码。(将prn文件提取为字节码发送给usb端口,打印机会自动识别字节码)

关键命令与解析

关键指令在源码的 Config.java 文件中的TSPL变量:

public static final String TSPL = "SIZE 60 mm,40 mm
" + 
	                        "CLS
" + 
				"BITMAP ##WALTY_BYTES##
" + 
				"PRINT 1,1
";

其中 ##WALTY_BYTES## 为占位符,之后替换为对应的BITMAP指令。

指令的具体解析请参考 :TSPL指令

关键代码

1)java 图片二值化
public static void imgFilter(int width,int height,String path,ByteArrayOutputStream baos) throws IOException 
				if((col%8 == 7 && col != 0) || col == cols-1) {
					baos.write(b);
					b = 0x00;
				}
	        }
	        b = 0x00;
	    }  
	}

该代码主要为将输入的图片二值化、拉伸为输入的长、宽,然后按照BITMAP指令要求,构建对应的格式。

2)向USB端口发送字节码
void send_msg(int len)else{
            printf("write error!
");
        }
}

感谢

 
https://blog.csdn.net/kid_x/article/details/79609750 

赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » C dl是什么牌子得力打印机(DL888D型号)Linux对接——Java+C版

登录

找回密码

注册