欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

实用指南:Barcode128应用实操技巧

最编程 2024-02-09 16:05:25
...

 

因為近日工作上的需求,需要應用到Barcode Code128-B 來做為出貨標籤的規格

 

 

就把這次學習及應用的過程記錄下一來,與大家一同分享.

 

 

話說Barcode 這玩意的規格真是不少詳情可參考下列網頁

 

 

http://en.wikipedia.org/wiki/Barcode

 

 

打從接觸Barcode以來,都是使用Code39碼居多,應用的規責也非常的簡單

 

 

在實際產生條碼的時候,很直覺式的只需要在表示的資料前後加上“*” 做為啟始碼/停止碼即可

 

 

因為其方便性,所以在製造業上面應用算是非常的普及,要學習的人也最容易的上手

 

 

但是有個問題是當如果表現的資料有一定的長度時候,這時候容易出現一些問題

 

 

    ⊙資料長度過長時,有限的空間裡,能表現的資料變得有限制

 

 

    ⊙可以表現出的字元符號有限

 

 

    ⊙無法區分大小寫的英文字母

 

 

參考比較表

 

 

 

 

礙於上述幾項的問題以及客戶的SPEC

 

 

所以不得不開始著手研究一下Code 128攻略

 

 

首先就要了解一下Code128的組成規則

 

 

Code128 是由 啟始碼+資料碼+檢查碼+停止碼  所組合而成的條碼

 

 

既然有檢查碼就要來先了解一下是如何組成以及公式為何

 

 

Code128代碼編號從 0~106,共107個號碼

 

 

(這是Code128專有的代碼,ASCII/Unicode 可是不一樣的,要多留意!)

 

 

依其編碼方式又分為下列三類:

 

 

    Code AASCII 0~95 字元與控制碼,及128碼專用的字元,共計<103>個。

 

 

    Code BASCII 32~127字元,以及一些特殊的按鍵與轉換碼,共計<103>個。

 

 

    Code C:支援數字(00~99)方面編碼。兩個數字以一個代碼表示,省下了不少空間。

 

 

同一個 Code128,可以不同的方式予以編碼。藉著A, B , C三種不同編碼規則的互換

 

 

可擴大字元選擇的範圍,或者,也可縮短編碼的長度。

 

 

因為工作上的應用多屬於指定編碼方式,所以就不在此說明如何去計算出編碼方式的最佳解

 

 

 

 

 

下圖為Code128碼的定義表

 

 

 

 

 

 

 

再來就以一個Code128-B編碼方式來做為範例說明

 

 

Example: CC

 

 

Message : Start B  C    C  

 

 

Value       104      35   35

 

 

Position:   -          1     2

 

 

Calculate Total: 104 + (35x1) + (35x2)= 209

 

 

checksum code: 209 Mod 103 = 3

 

 

checksum char : 3 = #

 

 

Final code(Code128): (104)(35)(35)(3)(106)

 

 

Final code(ASCII):     (154)(67)(67)(35)(156)

 

 

Final Display(ASCII): š     C   C    #    œ

 

 

Final message:   (Start B)  (CC)  (#)  (STOP)

 

 

 

 

 

說明到了這裡,想必對Code128已經有一定程度上的了解, 下面再附上一張Code128

 

 

附有條碼表現圖案的表

 

 

 

 

·      

 

            再介紹完Code128後接下來就來談談如何應用在實務當中

 

 

目前常用條碼的呈獻方式大概不外乎下列二種

 

 

    ⊙利用條碼字型檔來產生條碼

 

 

    ⊙利用繪圖方式來產生條碼

 

 

至於何種方式才是最好的,就得要適情況而定了

 

 

在這裡就針對使用條碼字型檔來產生條碼的方式來加以說明

 

 

首先,要有Code128條碼字型(網路上有很多免費可使用的)

 

 

取得字型檔後,將字型檔置入 C:\windows\fonts 即可完成安裝

 

 

當一切都以為非常順利的時候,讓人傻眼的代誌即將上演

 

 

天啊,怎麼印出了下面的東西 @@

 

 

 

 

怎麼啟始碼/停止碼都變成了亂碼了呢!?

 

 

原來在多數的情況下,免費版本的Code128字型檔裡面

 

 

都沒有提供完整 Code128 本身所使用到的全部字碼

 

 

聽到這個消息,整個臉頓時都鐵青了下來 >”<

 

 

基於窮人買不起付費的軟體及Freeware至上的大無畏精神

 

 

又開始動起了腦筋,打量該怎麼去解決這個冏境

 

 

既然現在要使用的條碼呈獻是使用字型檔的方式

 

 

那麼就從字檔來著手,想必是最快最好的選擇

 

 

古代有創頡造字,那現代也來個雲淡風輕造碼

 

 

既然免費的字型檔裡不提供完整的條碼,那只好自己來

 

 

把所有缺少的條碼,一個一個給它創造回去

 

 

工欲善其事,必先利其器  推薦一套非常好用的軟體

 

 

FontCreator (當前使用版本 V 6.0)

 

 

在前一篇的文章中,有附上一個Code128所使用到的字元表

 

 

裡面也記載了所對應的ASCII Code 分別為什麼

 

 

所以我們可以利用Word或者Excel來做整理,取得目前缺少什麼

 

 

首先, 開啟一個WordExcel,並開啟插入/符號功能

 

 

以下就用啟始碼 Code128:104 / ASCII:154 來做為範例

 

 

 

 

首先,先選擇新細明體(標楷體也行),在下方字元代碼處

 

 

選擇從 ASCII (十進位) ,  字元代碼處則鍵入 154 (ASCII Code)

 

 

就可以發現原來 Code128: 104 對應到ASCII: 154 的字元是 「š

 

 

此時,再將原來編碼方式 ASCII(十進位)切換至Unicode(十六進位)

 

 

可以得知「š」的Unicode $0161

 

 

 

 

此時,利用FontCreator 來開啟方才已經下載完的Code128字型檔

 

 

並使用Unicode Mappings 來檢視字型檔,此時即會發現條碼字型檔裡

 

 

並沒有$0161存在,也就是為什麼方才會出現亂碼的真正原因

 

 

 

 

所以這時候就要開始來造碼了. 首先在條碼的字型檔增加一個新的字型

 

 

 

 

於新增加的空白字型上,點選右鍵/屬性

 

 

 

 

選擇Mappings tag, Platforms 選擇Unicode Pappings Value處填上 $0161

 

 

再選點增加後,OK即可

 

 

 

 

雙擊新增加的空白字型進入編輯畫面, 畫上所缺少的條碼圖型

 

 

(條碼圖型為何,可參考考上篇文章裡所附上的條碼圖型表)

 

 

 

 

其它缺少的字型也是重覆上述的方法去實作

 

 

完成後存檔離開, C:\windows\fonts ,將先前安裝Code128字型刪除

 

 

再重新安裝這個修改後的版本, 就可以完整顯示條碼了

 

 

 

 

大功告成