但最近需要處理其他類型文件,當掃入一串數字時,需要略過前六個字元,換言之,只需要提取第7個字元以後的字串,不過使用指南裡面只附上了略過1、2、3、5個字元的設定碼,偏偏沒有4和6的,問了賣家客服也不知道。
我翻了其他幾家掃碼器的手冊,不知道是廠商都抄來抄去來還是怎的,居然大家都只能略過前置1、2、3、5個字元,也都沒有4和6,是有沒有那麼巧...
我分析了一下,只有紅線處不同,是否只要變更此處就有可能達到我的需要?
先用手機下載barcode scanner的APP來掃看看這些條碼是甚麼意思。
掃描「隱藏前置字符1位字符」條碼後出現023401,其他以此類推分別是023402、023403、023405,「隱藏前置字符6位字符」應該就是023406。但若是用線上barcode generator直接輸入以上023401等字串,出現的條碼卻和手冊上的條碼不同。
這也不難理解,畢竟明碼文字掃出來是023401,但實際內容應該不是單純023401。
因為這是給掃碼器設定用的專用條碼,若只是單純用023401這段文字去做設定就能奏效的話,那萬一哪一天掃碼器真的掃到一段條碼文字內容是023401,那掃碼器要認定是設定用條碼,還是文字023401?
後來有位前輩pucheng0705分享了一個網站ZXing Decoder Online,直接把條碼圖案上傳後就可以分析內容。
上傳「隱藏前置字符1位字符」條碼後會分析出以下結果:
條碼也有許多編碼規則,此條碼是採用Code 128,看到Raw bytes那一行就恍然大悟了,原來就是HEX轉BIN來繪製條碼。
依據其他條碼可以推斷出第6個byte的01改06就是「隱藏前置字符6位字符」,但問題就是第7個byte檢查碼1e要改成什麼?
參照維基百科,Code 128的結構是「起始碼+資料+檢查碼+結束碼」
第1個byte乘1,第2個byte開始依序乘上1~5,最後加總後得出570,再除以103,餘數55就是檢查碼(checksum)
就可以得到正確條碼68 60 63 02 22 06 37 6A,再把HEX轉成上圖左邊的binary,就可以得到11010010000 10111100010 10111011110 11001100110 10001011000 10011001000 11101000110 11000111010。
1就代表細黑線,0就代表細白線,用這種方式配合excel就能畫出以下條碼。
畫出條碼後就要來實測了,拿條碼機掃以上條碼後...
還真的可以用,爽!
後來也是高手指點,Code 128有四個功能字元FNC1~FNC4,而本條碼第2個byte的60就代表FNC3,所以先到On line barcode generator,直接在資料欄位輸入「\<FNC3>023406」,就可以立即產生正確的條碼,非常省事。
擴充功能後的條碼機更好用了~
至於條碼機有支援這功能,但為何各家條碼機都不在手冊上列出隱藏前置或後置4或6字符的功能,我唯一想到的理由就是...
在牆內遇到「六四」就會自動屏蔽吧。