Javascript代码128字符串生成器-Ascii值>;127期

Javascript代码128字符串生成器-Ascii值>;127期,javascript,barcode,code128,Javascript,Barcode,Code128,我一直在尝试构建一个基于html/javascript的小型代码128类型B文本生成器 大多数条形码都可以使用它,但如果使用的值创建的校验和大于ascii 127的字符,我会遇到一个问题。我不确定在这种情况下应该用什么来替换该值。我读过在条形码中添加“代码3”和“FNC X”值的文章,但不清楚是什么格式,用大括号表示,FNC应该是“FNC4”还是“FNC 4”,或者是否与校验和相关 我正在使用此网站提供的免费128字体。 我尝试过各种条件,例如如果值大于127,则采用现有的ascii值,而不是添

我一直在尝试构建一个基于html/javascript的小型代码128类型B文本生成器

大多数条形码都可以使用它,但如果使用的值创建的校验和大于ascii 127的字符,我会遇到一个问题。我不确定在这种情况下应该用什么来替换该值。我读过在条形码中添加“代码3”和“FNC X”值的文章,但不清楚是什么格式,用大括号表示,FNC应该是“FNC4”还是“FNC 4”,或者是否与校验和相关

我正在使用此网站提供的免费128字体。 我尝试过各种条件,例如如果值大于127,则采用现有的ascii值,而不是添加32,但条形码不可读

我这里有一个JSFIDLE。如果使用类似于500.77005.YELLO.XXXXX.0160828的值,则条形码文本无效

如有任何见解,将不胜感激。我目前还没有找到有效的解决办法。它也可能是我正在使用的特定条形码字体,因此建议使用其他实心128字体也将不胜感激

这是主要的js代码

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);
    }
函数textTo128(str){
/*
*生成128个条形码文本,适用于复制和粘贴。
*/
var len=str.length;//str.length—获取字符串的长度,用于生成校验和。
var type128=104;//128类型B启动
var-typeClose=106;
var总计=104;
var i;//计数器变量
对于(i=0;i126){alert(modVal+32);};
document.getElementById('barcodeTotal').innerHTML=String.fromCharCode(type128+100)+str+checksum+String.fromCharCode(typeClose+100);
}
谢谢,
-David

如果校验和大于126,则应加18


var校验和=String.fromCharCode(modVal+32>126?modVal+32+18:modVal+32)

如果校验和大于126,则应加18


var校验和=String.fromCharCode(modVal+32>126?modVal+32+18:modVal+32)

谢谢你的回复。当我将该代码与上面的零件号(500.77005.YELLO.XXXXX.0160828)结合使用时,校验和为空。这是最新的提琴。谢谢回复。当我将该代码与上面的零件号(500.77005.YELLO.XXXXX.0160828)结合使用时,校验和为空。这是最新的小提琴。