欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android TSC热敏标签打印机打印

程序员文章站 2022-06-17 21:37:49
不知道大家有没有遇到这种情况,有些东西想整理但却不知道怎么去整理。在做之前一头雾水,百度上也找不到答案,然后搞出来又发现没什么内容,所以好像也没什么可整理。 但是更多,我想说的是,我们还是要学会去总结,为什么我花了那么长时间,以及下次遇到这种情况,我如何下手?也希望对和我这样的菜菜有点帮助。 需求 ......

 

不知道大家有没有遇到这种情况,有些东西想整理但却不知道怎么去整理。在做之前一头雾水,百度上也找不到答案,然后搞出来又发现没什么内容,所以好像也没什么可整理。

但是更多,我想说的是,我们还是要学会去总结,为什么我花了那么长时间,以及下次遇到这种情况,我如何下手?也希望对和我这样的菜菜有点帮助。

 

需求

   android蓝牙连接tsc标签打印机打印。(热敏打印机要用热敏纸)

 

说明

  有关打印机,一般都会提供 有关开发的 sdk ,开发文档。android可以参考,其实这可能对很多人来说都是很简单的一件事,但是,难免会遇到一些意外。

 

回顾当时

  其实刚开始还有点信心满满,然后把 jar 包复制到 lib 文件夹中,然后将文档提供的代码复制到 android 中,然后结果:失败的。崩掉

  然后就开始了我的找问题之路···各种测试,大多都是靠运气

 

效果

   Android TSC热敏标签打印机打印

 

总结

  • 问题一:在代码中有一个参数是设置打印的份数,以及初始化的时候会设置纸张的大小间隙等等。打印机打印一张出来很多张,并且执行一次之后打印机就报 卡纸异常

    这有时候不是代码问题,开发的时候会给一个工具包,进行感应器矫正就可以正常了(这里没有连接打印机,先读取状态连接打印机再进行操作)

  Android TSC热敏标签打印机打印

 

 

   

  • 问题二:指令不执行

  注意你的指令后面有没有 /r/n   ,指令可以分段,在结束位置加上 /r/n  执行

  Android TSC热敏标签打印机打印

 

 

   

  • 问题三:打印的文本较长,不会自动换行(比如上方的二三行是一个内容)

  这里我不知道有没有什么特定的设置,但是我通过其他方式实现了效果,把原有的字符串进行分割分行打印

     for (int i = 0; i < invcode.length(); i = i + 10) {
            tscdll.sendcommand("text 350," + (75 + i * 3) + ",\"0\",0,12,12,3,\" " + invcode.substring(i, i + 10 < invcode.length() ? i + 10 : invcode.length()) + "\" \r\n ");
        }//invcode为打印的内容

 

  • 问题四:中文乱码问题(上面效果图就是中文乱码格式之一,成功的没有保存图片)

  刚开始我也看了文档,在打印文字的时候可以选择相应的字体进行打印,首先保证这个打印机存在某种字体支持中文(用工具把字体传入打印机),然后进行调用。根据这个思路,进行了一系列的操作还是无法解决中文乱码的问题

  实际上操作是不要直接传中文,要将文字转换为 byte[] 类型进行提交

        string sc1="这是一段文字";
        byte[] qq2 = new byte[1024];
        try {
            qq2=sc1.getbytes("gb2312");
        } catch (unsupportedencodingexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
        tscdll.sendcommand("text 20,30,\"font001\",0,2,2,\"");
        tscdll.sendcommand(qq2);
        tscdll.sendcommand("\"\r\n");

 

最后

  这是两个月之后再回过头来整理,不知道有没有遗漏的地方。虽然好像是一个很简单的功能。but 这是从外部对接过来的项目,遇到了一系列的配置问题不说(比如之前我们会引用v4的包,但是现在都统一androidx),再到打印文档的阅读(还是英文版的),根据提供的demo进行调试,以及遇到的一系列问题,以及百度上找不到答案的焦急(也找了官网)。然后一遍一遍让自己静下心来阅读参考文档。。。年前做的,再到年后再去客户那边的时候,已经正在使用了,当时第一眼还没认出来那竟是我做的东西,那一刻,一丢丢的成就感