如何构建条形码资产跟踪移动应用程序





0/5 (0投票)
具有丰富功能的设备,例如条形码或 RFID 扫描仪,或具有灵活 VoIP 支持的 WLAN 连接,可在不同行业的各种场景中使用。我将演示如何使用 Microsoft Visual Studio 和 Resco MobileForms Toolkit 创建一个简单的应用程序。
引言
具有丰富功能的设备,例如条形码或 RFID 扫描仪、具有灵活 VoIP 支持的 WLAN 连接或坚固的结构,可在不同行业的各种场景中使用。 在本文中,我将演示如何使用 Microsoft Visual Studio 和 Resco MobileForms Toolkit 创建一个简单的应用程序。它将使用内置的条形码读取器来检测我们自定义库存中的物品。此应用程序的主要目的是使库存盘点变得更加容易。该应用程序将提供以下功能
- 读取存储在 SQL CE Server 数据库中的项目,
- 使用 Resco AdvancedList 显示加载的项目,
- 处理条形码读取器输入,
- 允许使用 Resco DetailView 简单编辑选定的项目,
- 将更改保存到数据库。
必备组件
您将需要:
- Microsoft Windows Mobile 5.0 SDK(或更高版本),您可以在此处下载。
- Resco MobileForms Toolkit 2010,您可以在此处下载。
- 一台带有内置条形码读取器的 Symbol 设备,用于测试应用程序。
- SymbolSDK,您可以在此处下载
*可选地,您可以使用任何不具备条形码读取器功能的 WM 设备(或模拟器)。
Resco MobileForms Toolkit 是一组为移动设备设计的 Visual Studio 控件。在您的计算机上安装 Resco MobileForms Toolkit Volume 2010 后,这些控件将自动添加到 Visual Studio 的工具箱中。我们将在项目中使用的 Resco 控件和库如下:
- .NET CF 的 Resco AdvancedList 库
- .NET CF 的 Resco DetailView
该应用程序可以针对 .NET Compact Framework 2.0 和 .NET Compact Framework 3.5 进行创建。只需下载 Resco MobileForms Toolkit 2010 的相应版本即可。
数据库模型
为了此应用程序的目的,我创建了一个简单的数据库,其中包含一个表,用于存储我们库存中物品的数据。
数据库有六列:
- ID string id(主键),用于存储物品的条形码 id,
- Name 存储物品的名称,
- Description 物品的简短描述,
- NextRevison 物品下一次修订的日期时间戳,
- Checked 位标志,用于确定物品是否已检查(修订),
- Image 物品的图片。
(这是即将发布的系列文章中的第一篇,此数据模型将在未来扩展)
用户界面
应用程序包含两个 Form 对象:
- MasterForm 包含项目列表
- DetailsForm 允许用户编辑项目
MasterForm
要格式化和显示数据库中的项目,您只需要一个控件。使用 Resco AdvancedList 强大的可视化模板,您可以精确指定数据的位置和显示方式。
数据加载和绑定
在此应用程序中,AdvancedList 的 DataSource
属性绑定到一个对象列表,这些对象是 Product
类的实例。Product
类包含几个与数据库表中列匹配的属性:Name
、Description
、NextRevision
、Image
、Checked
和 ID
。
项目列表在 MasterForm 类的 LoadData()
方法中填充。(您可以在文章末尾的链接中看到此方法的代码并下载此应用程序的全部源代码)。现在,当项目加载并存储在 List 中后,您只需将 AdvancedList 的 DataSource
属性设置为此 List 即可。
为项目设计模板
AdvancedList 中每一行的设计由一个 **模板** 控制。在最简单的情况下,您将有一个模板用于所有项目,或者一个“正常”模板和一个“选定”模板。模板本身由多个单元格组成。每个 **单元格** 的目的是可视化行数据的属性。
要将单元格 **绑定** 到底层数据对象的属性,只需设置其 CellSource
。
有用于文本、图像、链接等的特殊单元格。您甚至可以创建自己的单元格。每个单元格都可以 **定位** 在其行内,并通过更改其字体、前景和背景颜色、对齐方式等进行 **设计**。
提供了一个 Visual Studio 集成设计器和一个独立的应用程序来创建模板。
增强 Advanced List
即使在没有条形码读取器的设备上也可以运行示例应用程序。由于没有条形码扫描仪就无法编辑项目,我提供了一个“变通方法”,将一个 ButtonCell 放入 AdvancedList 模板中。现在我处理 ButtonClick
事件,在那里我可以像条形码读取器读取项目的正确条形码 ID 时一样显示 DetailsForm。
在这个表单上我想演示的最后一件事是单元格的 CustomizeCell
属性。如果将此属性设置为 true 并注册一个方法来处理 AdvancedList CustomizeCell
事件,您就可以在运行时更改此单元格的外观。在应用程序中,我使用相同的方法向用户显示项目是否已检查。在 CustomizeCell
处理程序中,我检查(作为参数传递给此方法的)底层对象的 Checked
属性,如果它是 false
,我将此单元格的背景设置为红色。
DetailsForm
此表单包含两个控件:一个标准的 PictureBox 和 Resco DetailView。此外,它还有一个 Product
属性,用于存储从 MasterForm 传递到此表单的 Product
类的实例。那么我们想在此表单上做什么?编辑项目,这意味着创建一个用于编辑的布局,这意味着很多文本框、复选框、日期时间选择器、标签等——总而言之,这是一项繁重的工作。幸运的是,所有这些都可以通过 Resco DetailView 来完成,就像创建一个包含与传递到 DetailView 的 DataSource
属性匹配的可编辑项目的页面一样简单。我们无需费心处理更新 Product 对象内容的那些方法;所有这些都由 DetailView 本身处理。
与 AdvancedList 一样,还有一个独立的应用程序允许您设计 DetailView 中页面的布局。请注意,DetailView 提供了许多本文范围之外的功能,例如数据验证、分页……
BarCode Manager 类
此类是 Symbol.Barcode 类的包装器,也演示了处理条形码输入有多么简单。实例化后,将创建内部 Symbol.Barcode
对象,并将其 ReadNotify 事件的处理程序附加到该事件,以监听扫描仪的通知。
在您的代码中,您可以简单地实例化 BarCodeMgr
类,添加 HandleData 事件,以便您可以处理扫描仪的输入。在此应用程序中,我按如下方式处理输入。当获得读取器的数据时,我会在产品列表中查找匹配的 ID(作为 HandleData
处理程序的参数提供)。找到匹配产品后,将使用 DetailsForm
显示该产品。
结论
正如您所见,通过使用 AdvancedList 和 DetailView 等强大控件,可以极大地简化数据表示和操作。当然,这些控件提供了许多未在此文中说明的功能。我注意到整个项目列表都可以用手指触摸滚动。话不多说,了解使用 Resco MobileForms Toolkit 创建强大移动应用程序的便捷性的最佳方法是亲自尝试。
下载此应用程序的源代码并查找: http://www.resco.net/developer/downloads/barcode.zip
关于Resco MobileForms Toolkit
Resco MobileForms Toolkit 是最丰富、最全面的 Microsoft Visual Studio 控件和库集之一,专为移动设备软件解决方案的开发人员设计。其产品组合中包含的控件和库可以解决开发人员在移动环境中遇到的大多数问题。例如灵活的键盘、专业的列表控件、强大的网格控件、图表控件和计划控件——这仅仅是提到最常用的。
有关 Resco MobileForms Toolkit 的更多信息,请访问 http://www.resco.net/developer/mobileformstoolkit/default.aspx。