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 

  

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM