我一直在試圖建立一個小的基於HTML/JavaScript的代碼128型B文本生成器。Javascript代碼128字符串生成器 - ASCII值> 127問題
我有它適用於大多數條形碼,但我遇到問題,如果使用的值創建一個校驗和是一個字符比ascii 127更大。我不知道我應該用什麼來替換那種情況下的價值。我已經讀過在條形碼中添加'Code 3'和'FNC X'值,但不清楚採用什麼格式,花括號和FNC應該是'FNC4'還是'FNC 4',或者是否與校驗和。
我使用的是本網站的免費128字體,http://jtbarton.com/Barcodes/BarcodeStringBuilderExample.aspx。 我試過各種條件,例如,如果值大於127,採取現有的ascii值而不是添加32,但條碼是不可讀的。
我在這裏有一個jsfiddle,https://jsfiddle.net/jcqvag5g/。如果您使用的值如500.77005.YELLO.XXXXX.0160828,則條形碼文本無效。
任何有識之士將不勝感激。目前我還沒有找到工作解決方案。它也可以是我正在使用的特定條形碼字體,因此對其他固體128字體的建議也將感激不盡。
這是主要的js代碼。 ?modVal + 32:
function textTo128(str) {
/*
* Generate 128 Barcode text, suitable for copying and pasting.
*/
var len = str.length; //str.length - get length of string, used to generate the checksum.
var type128 = 104; // 128 Type B start
var typeClose = 106;
var total = 104;
var i; // Counter Variable
for(i=0;i<len;i++){
total += ((i+1) * (str.charCodeAt(i)-32)); //Multiply char position with decimal value of character, keep running total
}
var modVal = total % 103; // Use Modulus to find our checksum
var checksum = String.fromCharCode(modVal+32);
if(modVal+32>126){alert(modVal+32);};
document.getElementById('barcodeTotal').innerHTML = String.fromCharCode(type128+100) + str + checksum + String.fromCharCode(typeClose+100);
}
謝謝, -David
感謝您的回覆。當我將該代碼與上述部件號(500.77005.YELLO.XXXXX.0160828)結合使用時,我得到一個空白的校驗和。這是更新的小提琴,https://jsfiddle.net/3vpL3ytz/。 – DMartins