2013-09-25 6 views
0

Я работаю с приложением под названием TEC-IT клиновой для взаимодействия с продуктовом шкалы (для тех, кто не в курсе продуктового масштаба прославил масштаб с помощью сканера.номер Javascript/строка вопрос

Масштаба подключенный к последовательному порту на ПК, и приложение для клина контролирует этот порт, код ниже обрабатывает сканирование штрих-кода, затем запрашивает вес, все это работает.

Где я столкнулся с проблемой, это формирование возвращаемый вес из шкалы.

данные, возвращенные из шкалы, находятся в формате ASCII «S11 ####», поэтому S110004 будет для предмета весом 0,04 фунта, и именно так мне нужно отправить это ожидание в приложение, которое мы используем шкалу для ввода данных. Для кода ниже возврата S110004 он возвращается 00.4

Я думаю, что теряю 0 в захвате цифр по какой-либо причине, чтобы поместить десятичную позицию в правильное положение.

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 = ""; 
      } 

    } 

ответ

0

Измените свою строку на то, что можно разобрать как число по своему усмотрению.

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

var num = parseFloat(str); // 0.04 

Ввод десятичного место в на этапе RegExp также избавляет вас от необходимости использовать разделение.

+0

@ «Paul S.» Это трюк, не могли бы вы рассказать мне, что именно происходит здесь, или указать мне ресурс, описывающий, как это работает? – jmcnorrill

+0

Я не знал, как работают «правые» или «левые», но я решил не делать столько операций, это можно сделать только с помощью «замены». После этого было похоже, что вам может понадобиться число, а не строка, поэтому я использовал 'parseFloat' _after_ –