我一直在试图建立一个小的基于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