2013-09-25 6 views
0

Je travaille avec une application appelée Wedge TEC-IT à l'interface avec une échelle d'épicerie (pour ceux qui ne le savent pas à l'échelle d'épicerie est une échelle glorifiés avec un scanner.numéro Javascript/numéro de chaîne

L'échelle est connecté à un port série sur le PC et l'application de wed wedge ce moniteur, le code ci-dessous gère le balayage du code à barres, puis demande le poids, tout cela fonctionne ..

Où je suis confronté à la question est la formation de la les données retournées à partir de la balance sont au format ASCII "S11 ####", donc S110004 être pour un article pesant 0,04 livres et c'est ainsi que j'ai besoin d'envoyer cette attente à l'application que nous utilisons l'échelle pour entrer des données avec. Pour le code ci-dessous un retour de S110004 il renvoie 00.4

Je pense que je perds 0 dans la saisie des chiffres pour une raison quelconque de placer le poit décimal dans la bonne position.

var cartonverify = Left(DATARAW, 5); 
var weightverify = Left(DATARAW, 3); 

if (cartonverify == "S08B3") 
    { 
    ActivateWindow("Untitled - Notepad"); 
    SendKeyStrokes(DATARAW.replace(/^S08B3+/i, '')); 
    DATA = ""; 
    WriteToDevice("S11\x0d", 1000); 
    } 

if (weightverify == "S11") 
    { 
    ActivateWindow("Untitled - Notepad"); 
    var cartwieght = Right(DATA, 4); 

     if (cartwieght.length == 4) 
     { 
      var cartounces = Right(cartwieght, 2); 
      var cartpounds = Left(cartwieght, 2); 
      var WMWeight = cartpounds + "." + cartounces; 
      SendKeyStrokes(WMWeight); 
      DATA = ""; 
      } 

    } 

Répondre

0

Réformez votre chaîne en quelque chose qui peut être analysé en tant que nombre souhaité.

var str = 'S110004'; 
str = str.replace(/S11(\d\d)(\d\d)/, '$1.$2'); // "00.04" 

var num = parseFloat(str); // 0.04 

Mettre la virgule dans le RegExp étape vous permet aussi d'économiser d'avoir à utiliser la division.

+0

@ "Paul S." Cela a fait l'affaire, pourriez-vous me dire ce qui se passe exactement ici ou me montrer une ressource qui décrit comment cela fonctionne? – jmcnorrill

+0

Je ne savais pas comment 'Right' ou' Left' fonctionnaient, mais j'ai décidé au lieu de faire autant d'opérations, cela peut être fait avec un seul 'replace'. Après cela, il semblait que vous vouliez un nombre pas une chaîne, alors j'ai utilisé 'parseFloat '_after_ –