0

一维/二维条码需要使用无线条码扫描仪捕获并传输到 Windows PC。我查看了摩托罗拉 MC2180 移动数据终端的规格。它似乎具有 Windows CE 6,带有基于 RhoElements Webkit 的浏览器和 Datawedge 应用程序,可将扫描的条形码传输到键盘缓冲区。

下面是使用 ASP.NET MVC4 扫描应用程序原型。

这种方法存在以下问题:

  1. 扫描条码后,用户必须手动按 Tab 键移动到下一个字段。是否有一些可以使用的条形码 APIS?我还没有找到 MC2180 的任何文档。

  2. 下面的视图看起来很难看:它允许扫描固定数字代码,但用户可能需要输入 1 .. 200 个代码来单个订单。如何更改它以使代码数量不固定?jQuery Mobile 应该用来改进这种方式还是其他方式?

  3. 控制器手动解析 http POST 缓冲区。这可以使用 ASP.NET MVC4 功能改进吗?

以无线方式扫描条形码并将其传输到 PC 的最佳方法是使用免费或随扫描仪 shoftware 提供的?应该使用哪种设备?如果有比 MC2180 更便宜的设备,它可以使用。

看法:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<form method='post' action='SaveOrder'>

Number <input name='orderno' type='text'/>
Date <input name='orderdate' type='date'/>

<input type="hidden" name="_rowdelimiter" />
Product1 <input name='orderno' type='text'/>
Quantity1 <input name='quantity' type='text'/>

<input type="hidden" name="_rowdelimiter" />
Product2 <input name='orderno' type='text'/>
Quantity2 <input name='quantity' type='text'/>

<input type="hidden" name="_rowdelimiter" />
Product3 <input name='orderno' type='text'/>
Quantity3 <input name='quantity' type='text'/>
...
<input type='submit' value='Save order'/>    
</form>
</body></html>

控制器:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveOrder() {
  var form = ControllerContext.HttpContext.Request.Form;
  var orderDetails = new List<OrderDetails>();
  var order = new Order();
  OrderDetails row = null;
  bool inheader = true;
  foreach (var key in form.AllKeys)
    {
    if (key == "_rowdelimiter")
      {
        if (row != null)
          orderDetails.Add(row);
          row = new OrderDetails();
          inheader = false;
          continue;
          }
        if (inheader)
         {
          SetValue( order, key, HttpUtility.HtmlDecode(form[key]) );
          continue;
          }
       SetValue( row, key, HttpUtility.HtmlDecode(form[key]) );
   }
  orderDetails.Add(row);
  EntityManager.SaveOrder( order, orderDetails );
  return ContentResult() {Content="Order saved" } ;
}

static void SetValue( object entity, string propertyName, string propertyValue ) {
  PropertyInfo p = entity.GetType().GetProperty(propertyName);
  p.SetValue(this, propertyValue, null);
  }
4

1 回答 1

0

您最好在页面中使用 jQuery 来处理扫描的条形码。它可以获取每个代码并将其添加到数组中。然后可以在屏幕上列出该数组。当操作员扫描了一些代码后,他们可以单击一个按钮将代码提交到服务器。这样,您的应用程序似乎会响应更快,而不是在每次扫描后提交。

于 2013-10-13T11:27:01.797 回答