2016-04-12 4 views
1

Ich habe versucht, einen kleinen HTML/JavaScript-basierten Code 128 Typ B Text Builder zu bauen.JavaScript-Code 128 String Builder - Ascii Wert> 127 Ausgabe

Ich habe es funktioniert für die meisten Barcodes, aber ich bin in ein Problem, wenn der Wert erstellt eine Prüfsumme, die ein Zeichen, das größer als ASCII 127 ist. Ich bin mir nicht sicher, was ich verwenden sollte zu ersetzen dieser Wert in diesem Fall. Ich habe gelesen, dass "Code 3" und "FNC X" -Werte im Barcode hinzugefügt wurden, aber es ist nicht klar, in welchem ​​Format, mit geschweiften Klammern und sollte FNC "FNC4" oder "FNC 4" sein, oder wenn das relevant für die Prüfsumme.

Ich verwende die kostenlose 128 Schriftart von dieser Website, http://jtbarton.com/Barcodes/BarcodeStringBuilderExample.aspx. Ich habe verschiedene Bedingungen ausprobiert, z. B. wenn der Wert> 127 ist, nimm den vorhandenen ASCII-Wert, anstatt 32 hinzuzufügen, aber der Barcode ist dann nicht lesbar.

Ich habe eine Jfiddle hier, https://jsfiddle.net/jcqvag5g/. Wenn Sie einen Wert wie 500.77005.YELLO.XXXXX.0160828 verwenden, ist der Barcode-Text ungültig.

Jeder Einblick wäre willkommen. Ich habe im Moment keine funktionierende Lösung gefunden. Es könnte auch die spezifische Barcode-Schriftart sein, die ich verwende, daher würden auch Empfehlungen für andere solide 128-Fonts geschätzt werden.

Dies ist der Haupt-js-Code. ? 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); 
    } 

Danke, -David

Antwort

0

Prüfsumme sollte 18, wenn es größer als 126

var Prüfsumme = String.fromCharCode (modVal + 32> 126 modVal + 32 + 18 hinzufügen);

+0

Danke für die Antwort. Ich erhalte ein Leerzeichen für die Prüfsumme, wenn ich diesen Code in Kombination mit der obigen Teilenummer verwende (500.77005.YELLO.XXXXX.0160828). Dies ist die aktualisierte Geige, https://jsfiddle.net/3vpL3ytz/. – DMartins

Verwandte Themen