0

我正在使用一个名为 TEC-IT Wedge 的应用程序与杂货秤交互(对于那些不知道杂货秤是带有扫描仪的美化秤。

秤连接到 PC 上的串行端口,thwwedge 应用程序监视该端口,下面的代码处理条形码扫描然后请求重量,所有这些都在工作。

我遇到的问题是从秤形成返回的重量。

从秤返回的数据格式为 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 = "";
          }

    }
4

1 回答 1

0

将您的字符串重新格式化为可以根据需要解析为数字的内容。

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

var num = parseFloat(str); // 0.04

RegExp步骤中加上小数位也可以避免使用除法。

于 2013-09-25T14:25:22.700 回答