前言:最近公司产品经理提了一个无线打印的功能,看了一下打印机官网文档,花费几天时间,对接成功,在此先记录一下。
1 下载芯烨云开发包以测试工具(芯烨云官网)
2 配置芯烨云打印网口
- 选择自己购买的打印机型如下图所示(我的是XP-80):
2. 配置打印机固定ip
2.1首先点击高级,进入网络设置
2.2配置ip 如下图所示:
其中SSID 代表wifi名称,ip地址填写自己要设置的ip,默认网关填写wifi路由器地址
2.3 在路由器上绑定打印机ip与max地址
2.3.1 首先登录路由器
在浏览器输入路由器ip地址,登入,进入如下页面:
绑定自己打印机的ip与max地址即可
3 对接打印机
在自己springboot项目引入开发包PostPrinterSDK.jar
编写对接打印机代码
public void remoteprint(SZQHJL info) {
//未指定打印机ip,不进行打印操作
if(!org.springframework.util.StringUtils.hasLength(ip)){
return;
}
Socket socket = null;
OutputStream out =null;
try {
Thread.currentThread().sleep(500);//等待500ms,防止旧socket连接未关闭
socket=new Socket(ip , port);
socket.setSoTimeout(5000);
out = socket.getOutputStream();
List<byte[]> list = new ArrayList<>();
String title = String.format("%1$s排号凭证",orgname);
addTitleline(list, title);
addline(list,"单号: ",info.getXh().toString(),"取号时间: ", Tools.getDate(new Date(info.getQhsj().getTime())));
addline(list,"姓名: ", Tools.getName(info.getSzqhjlName()),"年龄: ", Tools.getAge(info.getZjhm(),null));
addline(list,"身份证号码: ", Tools.desensitizedIdNumber(info.getZjhm()));
addQRcode(list,48,getdsxfurl(info));
addCenterline(list,"温馨提示:你可用手机扫描上方二维码,查询历史信访");
addCenterline(list,"记录,上传相关材料。");
list.add(DataForSendToPrinterPos80.printAndFeedLine());
list.add(DataForSendToPrinterPos80.printAndFeedLine());
list.add(DataForSendToPrinterPos80.printAndFeedLine());
for (int i = 0; i <list.size() ; i++) {
if(!socket.isConnected()){//如果连接断开了
for (int j = 0; j < 3; j++) {//重新尝试连接三次
socket=new Socket(ip , port);
socket.setSoTimeout(5000);
if(socket.isConnected()){
break;
}
}
}
if(socket.isConnected()) {
out.write(list.get(i));
Thread.currentThread().sleep(60);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} finally {
try {
if(out!=null) {
out.flush();
}
if(socket!=null&&socket.isConnected()) {
socket.close();
}
out=null;
socket=null;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
打印机sdk使用实例以及编码规范请参考官网
对于这方面有什么问题可以在评论区留言