java socket 打印机_思普瑞特,小票打印机和标签打印机java网络驱动设计与实现...
网络打印走的socket连接,主流的java, php, c, c#等语言都支持socket,所以实现打印机的网络打印几乎是和语言无关的
打印机默认端口是9100
使用socket连接上打印机后,将打印内容按照打印机的指令进行编码后调用send就可以打印了
协议文档
小票打印机和标签打印机走的协议不同,所以各自都有一个协议,小票打印机使用的是esc协议,标签打印机使用的是tsc/tspl协议
小票打印机esc协议文档:
标签打印机tsc/tspl协议文档:
可以看到打印机支持的指令非常多,下面找到常用的指令实现我们的打印目的
小票打印机
小票打印机已经有java驱动了,参考:github.com/SubLuLu/the…
小票打印机指令使用10进制表示了,所以难以阅读,指令对应的意思请对照文档
核心代码如下
连接打印机
public NetEscPos(String ip, int port, String encoding) throws IOException{
Socket socket = new Socket(ip, port);
socketOut = socket.getOutputStream();
socket.isClosed();
NetEscPos.encoding = encoding;
writer = new OutputStreamWriter(socketOut, encoding);
}
复制代码
发送命令,比如发送切纸命令
private NetEscPos feedAndCut() throws IOException{
writer.write(0x1D);
writer.write(86);
writer.write(65);
writer.write(0);
writer.flush();
return this;
}
复制代码
对应的文档为
查看打印效果
标签打印机
SIZE 40 mm, 30 mm
SPEED 5
DENSITY 7
DIRECTION 1
REFERENCE 0,0
OFFSET 0 mm
SHIFT 0
CLS
TEXT 20,60,"TSS24.BF2",0,2,2,"堂食 0001"
TEXT 20,120,"TSS24.BF2",0,1,1,"2019-03-22 10:05:51"
TEXT 20,150,"TSS24.BF2",0,1,1,"大鸡腿(1/3)"
TEXT 20,180,"TSS24.BF2",0,1,1,"加冰 标签备注"
PRINT 1
复制代码
查看打印效果:
对应的指令可以参考文档,比如第一行设置标签纸宽度和长度的SIZE指令
一些注意的点
可以使用redis的阻塞队列实现获取是否打印成功的状态,参考:基于List的 LPUSH+BRPOP 的实现
字符集需要设置成 gb2312
// 每行进行打印
for (int i = 0; i < bufImage.getHeight() / 24 + 1; i++) {
write(escBmp);
for (int j = 0; j < bufImage.getWidth(); j++) {
for (int k = 0; k < 24; k++) {
if (((i * 24) + k) < bufImage.getHeight()) {
pixelColor = bufImage.getRGB(j, (i * 24) + k);
if (pixelColor != -1) {
data[k / 8] += (byte) (128 >> (k % 8));
}
}
}
write(data);
// 重置参数
data[0] = (byte) 0x00;
data[1] = (byte) 0x00;
data[2] = (byte) 0x00;
}
//换行
byte[] byteSend1 = new byte[2];
byteSend1[0] = 0x0d;
byteSend1[1] = 0x0a;
write(byteSend1);
}
复制代码
c#版如下
// data
for (int i = 0; i < (bmp.Height / 24) + 1; i++)
{
socket.Send(escBmp, escBmp.Length, 0);
for (int j = 0; j < bmp.Width; j++)
{
for (int k = 0; k < 24; k++)
{
if (((i * 24) + k) < bmp.Height) // if within the BMP size
{
pixelColor = bmp.GetPixel(j, (i * 24) + k);
if (pixelColor.R == 0)
{
data[k / 8] += (byte)(128 >> (k % 8));
}
}
}
socket.Send(data, 3, 0);
data[0] = (byte)'\x00';
data[1] = (byte)'\x00';
data[2] = (byte)'\x00'; // Clear to Zero.
}
byte_send = Encoding.GetEncoding("gb18030").GetBytes("\n");
//发送测试信息
socket.Send(byte_send, byte_send.Length, 0);
} // data
复制代码
如果在编写驱动过程中遇到问题,可加作者微信探讨
java socket 打印机_思普瑞特,小票打印机和标签打印机java网络驱动设计与实现...相关推荐
- 思普瑞特,小票打印机和标签打印机java网络驱动设计与实现
网络打印走的socket连接,主流的java, php, c, c#等语言都支持socket,所以实现打印机的网络打印几乎是和语言无关的 打印机默认端口是9100 使用socket连接上打印机后,将打 ...
- PHP\Java\C#\Js\Go\Python调用小票打印机打印订单实现
优声云打印机U7是成都优声科技有限公司推出的一款WIFI.4G联网的打印机.注意这是一款热敏58mm小票打印机,就是大家购物,外卖那样的收银小票. 在原来的小票打印机世界里,通常都是U口和蓝牙,更高级 ...
- 京瓷1110打印自检页_如何修改小票打印机、厨房打印机IP地址
如何修改小票打印机.厨房打印机IP地址 在商业收银活动中,小票打印机是必不可少的设备,不管超市收银系统还是餐饮收银系统,都是常用设备.易坏设备,刚开业时购买的成套的收银设备,商家一般都给设置好小票机, ...
- delphi android 打印机,用delphi控制小票打印机打印图片
用delphi控制小票打印机打印图片 unit PosPrintBmp; {************************************************************** ...
- 打印速度快点的打印机_佳能和爱普生打印机哪个好 高性价比打印机介绍【详解】...
现在打印机已渐渐进入了每个家庭,家用打印机的种类繁多让人眼花缭乱.家庭若购买打印机,从前期的价格到后期的耗材全部都要考虑到位.那么佳能和爱普生打印机哪个好?家用打印机哪款性价比高?下面小编就带大家一起 ...
- linux java socket编程_深入学习socket网络编程,以java语言为例
了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...
- windows无法连接到打印机_惠普m1216nfh打印机驱动下载-惠普m1216nfh打印机驱动中文版下载[惠普]...
惠普m1216nfh打印机驱动中文版是一款功能出众的打印机驱动程序,惠普m1216nfh打印机驱动中文版能够完美解决该设备不能扫描或无法识别的问题,支持有线网络打印,分辨率高,可以满足很多 ...
- 两个网段共享打印机_不同网段共享打印机,教您不同网段共享打印机怎么设置...
打印机想必大家都很熟悉,打印文件是常见的事,厂家为了方便多人访问会将打印机共享,就提供了在不同的网段里连接打印机非常方便,可是很多的用户都只知道同一波段,下面,小编教大伙设置不同网段共享打印机的方法. ...
- java框架核心技术_你必须掌握的 21 个 Java 核心技术!(干货)
点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘 ...
最新文章
- 关于线程执行顺序的问题
- 使用vue的transition完成滑动过渡
- C++字节序反转的实现算法(附完整源码)
- python-css反爬之svg映射
- MYSQL在centos上主从配置
- jdk8 获取上一个月时间_JDK 10:FutureTask获取一个toString()
- 两款开源Web功能测试工具
- vue时间过滤器filter
- ununtu16.04+python3+selenium+firefox环境搭建
- 决策树算法与应用 学习笔记
- 计算机更新bios,win7bios升级教程_win7电脑主板bios升级的方法
- 【Flutter--实战】Dart 语言快速入门
- chapter02作业
- 【MML】华为MML AAA接口联调,Java版本
- 微信接龙,查人,查谁没有接龙,工具
- 网络监控系统的建立及部署
- 网线制作方法-RJ45
- android lcm,Android的LCM知识点(4)
- Unity适配IOS刘海屏
- js 一个等号= 二个等号== 三个等号=== 的区别