美文网首页android打印机Android技术知识
Android连接佳博58热敏打印机实例

Android连接佳博58热敏打印机实例

作者: leo62 | 来源:发表于2016-04-29 18:01 被阅读2834次

    缘由

    最近公司上了新的项目,需求大概就是你出去吃饭买单的时候,收银妹纸会在平板上操作来进行收银并打印小票,这个客户端目前大多都是Android系统,那么其中就要用到Android平板连接打印机来进行通讯了。这个项目(以下简称收银平板)之前是有另外一个团队(以下简称CS)开发的,目前是要重构并升级到2.0版本。但是前几天CS反馈说是最近遇见bug,打印机和平板会莫名断开连接,其中实现的重连机制也不好使。由于即将进行2.0的开发工作,也是为了进一步熟悉当中的业务,然后跟CS要来代码,研究了一通,发现之前的1.0代码写得...可能是接手人员比较多,也有可能开发周期的问题吧。

    环境

    我现在的环境是AS2.0,佳博5890XIII打印机,端口是wifi连接,该款打印机也支持蓝牙和USB,GprinterSDKV2.1,如果是其他型号可以去佳博官网下载对应sdk。将拷来的代码在这个环境跑了多次,模拟了两种常见的情景:断网,断电确实出现过连接丢失的情况。首先是检查相关代码的逻辑,由于年代比较久远,接手人员较多等原因,加之注释也很稀缺,在这块写了很多flag之类的标识,判断条件之多至少令我咋舌,只有边看边猜。原来以为是重连机制部分逻辑有误,尝试修改了部分代码,经测无效。后来发现sdk中自带的用于监听打印机连接状态变更的广播会在一段时间之后歇菜。那这个是不是sdk的问题?遂找到佳博技术支持,那哥们人不错,也跟我吐槽之前的代码不知道谁写的,一大堆广播,还阻塞UI,太烂了,改不了。然后自己尝试写了一个新版的,发给我,那哥们简称JBSDK,以下就是根据新版SDK的随意写了个sample。

    1.新建项目,导入jar包--->jbsdk.jar

    2.在manifest注册打印服务,同时别忘了添加网络和wifi相关的权限哦~

    3.在MainActivity中绑定服务,

    同时将打印机连接状态变更和查询打印机实时状态的回调一起注册了

    4.服务所提供的接口

    打印机连接状态改变的接口

    分别对应“正在连接”,“断开连接”,“已连接”三种状态

    查询打印机实时状态接口


    打印服务提供的相关操作

    5.使用服务

    打开连接 打印测试页 关闭连接 获取打印机连接状态 获取命令类型

    打开连接之后,之前的打印机状态变更的回调就派上用场了

    打印机状态变更回调 实时状态查询回调

    还有打印标签和票据的例子就不再一一展示了,可以酌情增减。

    好了基本就是这么多,有什么问题可以和我联系哒!

    相关文章

      网友评论

      • 叨码:如果一个android设备多个u口,能否连接多台usb打印机,并且能一对一的发送数据么?
      • 夏沐尧:楼主你好,请问重连这里您是怎么做的?
      • 叨码:打印机连接之后 时不时会掉线 断开 楼主碰到过么??
        叨码:@leo62 自动重连是可以,但比较麻烦的是 usb连接授权,每次重连都需要重新授权,如果是能拿到系统权限还好说,如果拿不到就比较麻烦了。
        leo62:遇到过那就是你们自己打代码需要实现断线自动重连啊
      • 哥斯拉不拉:他们官网有sdk?有链接吗?
        还有ios版的你们做了没?
        leo62:以前官网是有sdk下载的,现在好像不好找了,找客服问问吧,ios也有的
      • tmyzh:有WIFI打印吗
        leo62:可以的,更改portType
      • 无法言愉:那个我usb打印可以吗给了dome
        leo62:也是可以的,只是连接类型不同portType
      • c72e47c31162:能不能提供打印票据的例子,万分感谢
        c72e47c31162:想请问一下,这是我根据厂商提供的sdk写的编码
        public void getDemo(View view){
        ReceiptCommand esc = new ReceiptCommand();
        esc.addSelectJustification(JUSTIFICATION.LEFT);//设置打印左对齐
        esc.addText("Print text\n"); // 打印文字
        esc.addText("Welcome to use Gprinter!\n"); // 打印文字
        esc.addText("你好吗", "utf-8"); // 打印文字

        }
        可是打印机无法打印出来,能帮帮忙吗 :sob:
        leo62:@tang0428 欢迎关注,关于具体的打印票据的例子可以下载相关打印机厂商的sdk demo中都有的!
      • 97df41987477:jbsdk.jar 这个包在哪
        97df41987477:@leo62 非常感谢
        leo62:@晴天听雨 如有需要,可以自取https://github.com/codingWhenever/MyGpSample.git

      本文标题:Android连接佳博58热敏打印机实例

      本文链接:https://www.haomeiwen.com/subject/lytkrttx.html