2016-04-12 119 views
1

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

回答

0

校验应如果大于126

变种校验=使用String.fromCharCode(modVal + 32> 126 modVal + 32 + 18 18添加);

+0

感谢您的回复。当我将该代码与上述部件号(500.77005.YELLO.XXXXX.0160828)结合使用时,我得到一个空白的校验和。这是更新的小提琴,https://jsfiddle.net/3vpL3ytz/。 – DMartins