javaScript、PHP连接外卖小票机打印机方案(调用佳博、芯烨等)
前言:
目前开发需要用到电脑直接连接外卖小票机打印小票,查阅各种资料,使用 HttpPrinter 终于解决了这个问题。
效果:
PHP、JavaScript直接连接小票机并且自动出票。
支持的小票机:
目前测试可以的有:电脑A4打印机、佳博GP58MBIII(USB直连)、芯烨xp-58IIL(usb)。原则上可以支持所有USB连接的小票机,目前模板是按58MM设置的。
//打印Pos小票 begin
function print(arr){
var ip = $("#ip").val();
var port = $("#port").val();
if(ip==""||port==""){alert("ip,port不能为空"); return false;}
//处理食品数据
var foodsJson = '';
for (var i=0;i {
foodsJson = foodsJson + '{"shangpname":'+arr.foods[i].name +',"shuliang":'+ arr.foods[i].count+', "je":'+ arr.foods[i].price+'},';
}
var msg = '{'
+'"method":"' + 'printreport' +'"' /*报表类型 gridreport fastreport reportmachine 为空 将默认为gridreport */
+',"ReportType":"' + 'fastreport' +'"' /*报表类型 gridreport fastreport reportmachine 为空 将默认为gridreport */
+',"ReportName":"' + 'AAAlqs.fr3' +'"' /*报表文件名 POS小票 */
+',"ReportVersion":"' + '1' +'"' /*可选。报表版本, 为空则默认1 如果本地报表的版本过低 将从 ReportUrl 地址进行下载更新*/
+',"ReportUrl":"' + '' +'"' /*可选。为空 将不更新本地报表 , 如果本地报表不存在可以从该地址自动下载*/
//+',"ReportUrl":"' + 'http://localhost/test.fr3' +'"' /*可选。为空 将不更新本地报表 , 如果本地报表不存在可以从该地址自动下载*/
+',"Copies":"' + '1' +'"' /*可选。打印份数,支持指定打印份数。默认1份,如果为零,不打印,只返回报表生成的pdf,jpg等文件*/
+',"PrinterName":"' + arr.usb +'"' /*可选。指定打印机,为空的话 使用默认打印机, 请在 控制面板 -> 设备和打印机 中查看您的打印机的名称 */
+',"PrintOffsetX":"' + '0' +'"' /*可选。打印右偏移,单位厘米。报表的水平方向上的偏移量,向右为正,向左为负。*/
+',"PrintOffsetY":"' + '0' +'"' /*可选。打印下偏移,单位厘米。 报表的垂直方向上的偏移量,向下为正,向上为负。*/
+',"Preview":"' + '0' +'"' /*可选。是否预览,和主界面设置的效果一样 为空默认不预览, 0:不预览,1:预览(弹出导出的pdf,jpg等文件)。*/
+',"token":"' + 'aa' +'"' /*可选。只要token值在列表中 方可打印*/
+',"taskId":"' + '1234567' +'"' /*可选。多个打印任务同时打印时,根据该id确定返回的是哪个打印任务。 */
+',"exportfilename":"' + '' +'"' /*可选。自定义 导出 文件名称 为空 或者 自定义名称 如 test */
+',"exportfiletype":"' + '' +'"' /*可选。自定义 导出 文件格式 为空 或者 自定义名称 如 pdf */
+',"AField": [' ///*字段, type ftBlob (base64格式) ,ftString ftInteger ftBoolean, ftFloat, ftCurrency,ftDateTime, size (ftString 设置为实际长度,其他的设置为0,例如 ftInteger ftBlob 等设置为0 )
+'{"type": "ftString", "name": "title","size": 255,"required": true},'
+'{"type": "ftString", "name": "subTitle","size": 255,"required": false},'
+'{"type": "ftString", "name": "deskname","size": 255,"required": false},'
+'{"type": "ftString", "name": "djh","size": 255,"required": false},'
+'{"type": "ftString", "name": "czy","size": 255,"required": false},'
+'{"type": "ftString", "name": "starttime","size": 255,"required": false},'
+'{"type": "ftString", "name": "tf","size": 255,"required": false},'
+'{"type": "ftString", "name": "ysje","size": 255,"required": false},'
+'{"type": "ftString", "name": "yhje","size": 255,"required": false},'
+'{"type": "ftString", "name": "sjje","size": 255,"required": false},'
+'{"type": "ftString", "name": "kahao","size": 255,"required": false},'
+']'
+',"AData": [' ///*数据行
+'{"title":'+ arr.shopname+arr.num
+', "subTitle": "订单号:'+arr.ordernumstore
+'", "deskname": "时间:'+arr.time
+'", "djh": "地址:'+arr.address
+'", "czy": "姓名:'+arr.person
+'", "starttime": "电话:'+arr.tel
+'", "tf": "", "ysje":'+ arr.peisong
+', "yhje":'+arr.amount
+', "sjje":'+ arr.noteTex
+', "kahao": "890001"},'
+']'
+',"BField": [' ///*字段, type ftBlob (base64格式) ,ftString ftInteger ftBoolean, ftFloat, ftCurrency,ftDateTime, size (ftString 设置为实际长度,其他的设置为0,例如 ftInteger ftBlob 等设置为0 )
+'{"type": "ftString", "name": "shangpname","size": 255,"required": true},'
+'{"type": "ftString", "name": "shuliang","size": 255,"required": false},'
+'{"type": "ftString", "name": "je","size": 255,"required": false},'
+']'
+',"BData": [' ///*数据行
+foodsJson
+']'
+ '}';
jQuery.support.cors = true; //写到$.ajax $.get $.post 前面 解决 jQuery.Ajax IE8,9 无效(CORS跨域)
$.ajax({
async : false, //循环打印时, async 必须设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
url : "http://"+ip+":"+port+"/",
type : "POST",
contentType: "application/x-www-form-urlencoded", //要这样设置
//contentType: "application/json", //错误方式
dataType : "json", //设置为 json 格式
//dataType : "text", //设置为 text 格式 也可以,但是返回的结果需要自己解析判断
//crossDomain: true, //crossDomain true 或者false 无所谓,不用设置的
data : msg,
beforeSend: function (XMLHttpRequest) {
// beforeSend 函数里 不允许添加任何 东西
//XMLHttpRequest.setRequestHeader("token", 'abcd1234'); //不允许 使用jQuery发送AJAX请求时在header中添加Token
},
success: function(data){
// console.log(JSON.stringify(data));
if(data.status=="ok"){
// alert("打印成功:"+data.data);
console.log('订单id')
console.log(arr.id)
var audio= new Audio("/tip.mp3");//这里的路径写上mp3文件在项目中的绝对路径
audio.play();//播放
isDayin(arr.id);
}else{
// alert("打印失败:"+data.data);
}
},
error: function(data){
//console.log(status, response);
console.log(JSON.stringify(data));
// alert("连接打印机失败"+arr.usb);
}
});
}
//打印Pos小票 end
效果图:
javaScript、PHP连接外卖小票机打印机方案(调用佳博、芯烨等)相关推荐
- javaScript、PHP连接外卖小票打印机方案
前言: 目前开发需要用到小程序或者电脑程序连接外卖小票机打印小票,查阅各种资料,终于解决了这个问题. 效果: PHP.JavaScript直接连接小票机并且自动出票. 支持的小票机: 目前测试可以的有 ...
- 佳博/芯桦打票机对接(含USB和网口)
佳博/芯桦打票机对接(含USB和网口) 记录一下最近实现的一个需求,用PHP远程连接芯桦.佳博打票机,代码还未进行优化,基本功能已经实现打印,具体打印指令需要查看佳博/芯桦的打票机指令,USB口打印质 ...
- 餐厅小票打印模板_快麦打印机教程 | 如何用手机控制DP358外卖小票机?
DP358外卖自动打单机,智能接单,自动打印. 自主开发的快麦云软件系统绑定打印机后,用户即可在手机端随时掌控你的打印机,调节打印速度和浓度.音量大小,都可在手机端完成. 快麦统一提供应用管理软件,集 ...
- 餐厅小票打印模板_教程 | 如何用手机控制DP358外卖小票机?
DP358外卖自动打单机,智能接单,自动打印. 自主开发的快麦云软件系统绑定打印机后,用户即可在手机端随时掌控你的打印机,调节打印速度和浓度.音量大小,都可在手机端完成. 快麦统一提供应用管理软件,集 ...
- 手机蓝牙连接小票机/打印机,输入PIN码后确定键不亮的解决办法
如果以前配对过,就在手机蓝牙里取消配对,然后把机器关掉,手机蓝牙关掉. 重新配对连接,可以用了. 就没有重启不能解决的问题,如果有,就重启两遍.
- 安卓连接pos小票机和钱箱
测试工具具体用到: 1.58热敏打印机 2.钱箱 3.Android Studio 2.2.2 4.测试平板一台 端口号打印机一般都是9100 首先把打印机固定IP设置好,然后所有设备连接到同一网络( ...
- web应用 远程调用佳博打印机进行条码打印(详细教程)
需求: 通过html调用本地服务启动打印机,带参数去打印不同内容. 步骤: 1. 生成可直接执行的exe程序. 2. 注册服务. 3. 前端调用测试. 1. 生成可直接执行的exe程序 1.1 前提: ...
- 苹果电脑怎么设置佳博标签打印机_自动接单、打印快,手动调节音量,佳博推出后厨专用智能打印机...
新零售时代,商家如何掌握线上线下的海量订单?如何实现顾客下单到柜台出单的实时配送?顾客如何在付款成功后及时拿到发票?智能云打印机,轻松对接各个行业,为新零售而生,让接单.报销更省心.对于餐饮行业来说, ...
- 佳博打印机接入(java)
需求:某司要求做的web端应用调用本地打印机(佳博),打印内容从后端获取.思路变成了前端获取内容,传输到打印机,调用打印功能.这里我的另一篇文章已经完成前端带参数调用打印功能,有需要的同志们可以去TO ...
- java使用佳博打印机打印标签
文章目录 1.前言 1.1打印机型号及驱动说明 1.2背景概要 2.填坑 3.上代码 1.项目截图 2.==中文打印需要注意两点== 3.项目源码 4.总结 1.前言 1.1打印机型号及驱动说明 打印 ...
最新文章
- 2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构
- 物联网安全:LED灯中存在多个安全漏洞
- express的cookie解析和签名源码解析
- Nginx 代理 WebSocket
- 【项目实战课】基于Pytorch的SRGAN图像超分辨实战
- python小结_python简单小结
- android 美颜录像,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频
- vue.js 入门,简介
- 黑夜主权个人团队html源码 简单修改即可使用
- 买房子还是不买房子,这是一个问题
- Elasticsearch aggregations API
- linux系统oracle监听启动,linux下启动与关闭oracle监听与实例
- mongodb 的安装使用步骤
- 光干涉波谷,有可能低于绝对零度
- include包含文件查找的顺序 .
- graphormer 代码阅读
- docx4j书签的妙用
- Xcelsius 访问webservice 需要配置
- c 语言中strcat的用法,strcat 在 C 语言中是什么意思?
- 航天环宇提交招股书上会稿:计划募资6亿元,控股股东为李完小
热门文章
- 绿色版SecureCRT启动崩溃,遇到一个致命的错误且必须关闭
- Qt开发经验小技巧196-200
- 在兼容系统上升级DELL SATA硬盘的固件
- 衣米魔兽世界怀旧服:相关网友和测试玩家的提问,王乾亨以及衣米魔兽官方的解释与回答内容精选
- 密码编码学与网络安全笔记(第7版)
- 【教程】Tomcat 的catalina.out 日志按照自定义日期格式进行切割
- 免费UNITY资源的超级列表
- intel hd3000 本 在 64位 ubuntu10.04 下 液晶亮度无法调节 的解决之道(亲测)
- 用php表示掷骰子两次比大小,php实现的中秋博饼游戏之掷骰子并输出结果功能详解...
- linux xp双系统引导修复工具,XP和Linux双系统启动菜单的修复