Android TSC热敏标签打印机打印

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

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

需求

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

说明

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

回顾当时

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

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

效果

   

总结

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

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

  

  

  • 问题二:指令不执行

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

  

  

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

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

     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进行调试,以及遇到的一系列问题,以及百度上找不到答案的焦急(也找了官网)。然后一遍一遍让自己静下心来阅读参考文档。。。年前做的,再到年后再去客户那边的时候,已经正在使用了,当时第一眼还没认出来那竟是我做的东西,那一刻,一丢丢的成就感??

  博客园不知道怎么分享上传的文件,把压缩包放在了 CSDN 上了 https://download.csdn.net/download/xqz0618/12240632

  

  

  

原文地址:https://www.cnblogs.com/xqz0618/p/tsc_print.html

时间: 2024-11-02 03:10:34

Android TSC热敏标签打印机打印的相关文章

Android的热修复-微信Tinker

作者:邓浩宸 11/9/2016 1:13:49 PM Android的热修复 前言: 随着时代的发展,由于公司的项目需要去求变化平凡计划总赶不上变化,H5的高灵活性,开发周期短,更新速度快H5以及一些混合开发越来越被看好,然而主要原因之一:这种混合开发的方式容错率大,更新和修复BUG快.不用发布版本就可以让用户不觉的情况下就更新对应的内容或者BUG,我们不能否认混合开发的快捷,正在此前提下热修复和热更新技术也得到了非常大的发展,不管热修复还是热更新,都是对app的内容或者逻辑变化做出像web页

Android RocooFix 热修复框架

这里我要讲述下android热补丁前世今生 Under the Hood: Rebuilding Facebook for Android 发布者:Frank Qixing DU · 发布时间:2012年12月14日上午 3:01 Over the last year, we've been retooling our mobile apps to make them faster, more reliable, and easier to use. Several months ago, we

android 控制POS机图文打印(二)

上一篇文章结束了ESC/POS的指令集,没看过的可以去看一下,可以当作工具文档来使用的 android 控制POS机图文打印(一) 这一篇正式介绍如何使用POS机来打印图文信息. 首先介绍一下,ESC/POS指令是如何使用的, 字体加粗指令: byte[] FONT_B =new byte[3]; FONT_B[0] = 27; FONT_B[1] = 33; FONT_B[2] = 8; 字体纵向放大一倍: byte[] CLEAR_FONT =new byte[3]; CLEAR_FONT[

makefile 与android.mk中加信息打印

makefile里面加打印: [table]@echo ' zImage - Compressed kernel image' android.mk里面加信息打印: $(warning TEXT......) 这个函数被运行的时候.会输出:TEXT......,可是make会继续运行下去. $(error TEXT......) 这个函数被运行的时候,会输出:TEXT.......而且终止make的运行. 当中"TEXT....."能够替换为对变量的取值来输出变量的信息,比如:$(wa

android 控制POS机图文打印(一)

因为公司业务的需要,要用android客户端控制pos机打印票据,不单只是中文的,而且还要包括二维码的打印的!经过两天的努力!终于搞定了!!!!我真是! 首先,先奉上ESC/POS指令集. EPSON打印控制指令集 打印命令               功能 格式: ASCII: 以标准ASCII字符序列表示 十进制: 以十进制数字序列表示 十六进制: 以十六进制数字序列表示 说明:该命令功能和使用说明. HT                 水平制表 格式: ASCII: HT 十进制: 09

转:C#并口热敏小票打印机打印位图

最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: [html] view plaincopy class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { LptStr = l_LPT_Str; } [StructLayout(LayoutKind.Sequential)] pr

热敏打印单色位图

EPSON热敏打印机通过POSDLL调用POS_PreDownloadBmpToRAM.POS_S_PrintBmpInRAM函数实现电影票等单色位图的二维码打印,而在转换单色位图后,需将图像信息头中的位图点阵图使用的调色板颜色数(10)及指定重要的颜色数(11)设置为0:同时,点阵图资料大小为(7)为(2). size:4 bytes,0x28 = 40 bytes,表示Info Header的大长度总共 40 bytes width:4 bytes,0x10 = 16,图像宽度为16 pix

C#并口热敏小票打印机打印位图包括芯片的写入

下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { LptStr = l_LPT_Str; } [StructLayout(LayoutKind.Sequential)] private struct OVERLAPPED { int Internal; int InternalHigh; int Offset; int OffSe

Android Classloader热修复技术之百家齐放

大概在2015年10月底,QQ空间发了一篇叫<安卓App热补丁动态修复技术介绍>的文章,文章中提到为了能让Class进行热修复,其中一个条件就是防止类被打上CLASS_ISPREVERIFIED标记,具体的做法便是让一个Dex引用另一个Dex(hack.apk)中的空类(为了让业务无感知,需要在编译时动态注入字节码),并且在应用程序Application类起来的时候要加载这个hack.apk.也就是说最多需要进行两次反射,即加载hack.apk的时候需要进行一次反射操作,将hack.apk加入