Номер Javascript / вопрос строки

Я работаю с приложением TEC-IT Wedge для взаимодействия с продуктовыми весами (для тех, кто не в курсе, продуктовые весы - это прославленные весы со сканером.

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

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

данные, возвращаемые из шкалы, имеют формат 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 = "";
          }

    }

1 ответ

Решение

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

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

var num = parseFloat(str); // 0.04

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

Другие вопросы по тегам