基于Web服务的PDA生产管理系统应用开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Web服务的PDA生产管理系统应用开发
王鑫摘要:
引言:
1、任务要求
结合一汽生产管理系统软件及数据库,开发移动PDA设备,主要实现以下功能:
——通过扫描条形码读取零件信息
——通过调用web服务读写数据库
2、开发环境
2.1硬件
立象PT90(WinCE 6.0、WIFI)、PC机、数据线
2.2 软件
VS2008、SQL2008、WM设备中心、IIS管理器、PT-90驱动程序、PT90_CE600 SDK、Device Emulate设备仿真器/管理器
本机的操作系统为64位Win7家庭版,经升级后安装IIS服务,在本机上配置虚拟服务器:192.168.2.64:8081
2.3 语言
C#、.NET 3.5
3、系统设计
3.1 系统框架
局域网
无线
WIFI
系统主要由数据库、web 服务和PDA 采集系统三个部分组成。

PDA 通过扫描零件条形码获得加工过程卡号,通过无线WIFI 连接远程Web 服务调用数据库查询功能,对数据库进行查询获得零件相关信息,返回PDA 界面。

同时,用户可以通过修改PDA 界面相关信息,以同样的方式实现对数据库的读写操作。

3.2 系统功能
PDA 系统主要分为四个模块:扫描、明细、报工、设置。

扫描模块可以实现加工过程卡号的录入(扫描条形码或者手动输入)、清空、读取、退出等功能。

明细模块列出所对应加工过程卡号零件的工序列表、制造令号、工件名称等信息,并设计返回和报工功能。

报工模块由明细模块转入,列出明细模块工序列表中相应工序所对应的具体信息,包括零件生产状态、检验状态、投入及合格
数量、不合格清单,并设计保存修改和返回功能。

设置模块主要实现是对服务器的选择及保存服务器IP信息功能。

4、系统实现与用户界面
4.1 Web服务
Web服务中共建立了五个操作数据库的服务项:查询整体信息(GetDataSet)、查询不合格明细(GetDSInvalid)、更新整体信息(UpDateData)、修改不合格数量(UpdateInvalid)、插入不合格数量(InserInvalid)。

涉及到生产管理数据库plmplat中的WSPROCESSOPER、WSPROCESSHEAD和WSOPERINVALIDPIECE三个数据表。

编写好相应代码后生成解决方案,并将Web服务发布到本机所配置的虚拟服务器所对应的目录中。

4.2 PDA
4.2.1 扫描
用户打开客户端后系统自动打开扫描界面,并将光标定位在文本框中,PT90打开扫描程序后,对条形码按扫描键后条码信息会显示光标位置,以“回车”为结束字符,通过textBox1_KeyDown()函数捕捉扫描结束信息,调用Web服务GetDataSet方法查询数据库,返回Dataset并传给自动跳转到的明细界面。

如果是手动输入,在输入加工过程卡号结束后可按设备“ENT”键,或者点击界面“读取”按钮,即可跳转到明细界面。

界面底部设置状态栏,在读取数据库时显示提示延迟信息。

设置按钮关联设置界面。

清空按钮择负责清空文本框信息。

4.2.2 明细
从扫描界面进入明细界面后,根据扫描界面传入的Dataset,填充三个文本框和一个数据表格。

表格中显示工序号和工序内容两个字段,当用户双击表格中某工序(某列)时,系统跳转到报工界面,和选中数据行点击报工按钮效果相同。

三个文本框中的信息由数据表格填充后从中读取。

点击重新扫描按钮后则返回扫描界面并将全选文本框中内容以便重新扫描。

4.2.3 报工
报工界面上半部分四个控件的填充信息由明细界面的数据表获
得,其中生产和检验状态根据数据库查询出的整型数据转换为对应的文字信息并填充。

下半部分为某工序编号所对应的不合格清单,在窗体载入过程中单独调用Web服务GetDSInvalid方法查询数据库获得。

当用户修改控件数据点击保存后,分两部分进行保存。

投入数量和合格数量通过调用Web服务UpDateData方法更新数据库即可。

不合格列表则根据用户修改控件状态以及数据库存储状态分成两种情况:当用户修改了不合格控件并且数据库中有该项时,视为“修改”,此时调用Web服务UpdateInvalid方法更新数据库;当用户修改了不合格控件并且数据库中没有该项时,视为“保存”,此时调用Web服务InserInvalid方法插入数据库。

点击返回按钮后界面跳转到明细界面以便重新选择工序。

此外,在用户修改各个控件数量时,根据规则设置约束。

若出现合格数量与不合格数量之和大于投入数量的情况,则弹出提示对话框,并返回到未修改之前的状态。

若合格数量与投入数量相同且状态标记都为“完成”,则将不合格清单中的各个控件Enable属性设置为“false”。

若在操作数据库过程中出现异常,则弹出“操作数据失败”对话框提示用户检查数据库连接和服务器连接状态。

顺利保存各项后弹出“保存成功”对话框。

4.2.4 设置
设置界面由扫描界面的设置按钮连接,ComboBox控件中给出了常用的服务器IP列表,用户可以在选择某一地址后点击保存按钮,将服务器IP传入主系统中以便调用,同时关闭当前界面。

默认按钮择用来复位系统默认地址。

5、系统实现的关键技术
5.1 PDA对Web服务的动态引用
在实际应用中,PDA所应用的Web服务的服务器地址很可能随工作环境的变换而发生改变,因此要求实现对Web服务的动态引用。

本系统在设置界面中确定所要调用的Web服务器IP地址,然后保存到公共字符串参数strServer并传入扫描和报工界面。

当用户需要调用Web服务时,使用以下代码传入参数:
Service sv = new Service (strServer)
然后即可调用sv服务的各个方法,实现相应功能。

这种方法要求有两个前提条件:一是所选择服务器目录下需要有与默认服务器相
同的Service.asmx文件;二是更新PDA设备中Web引用后需要在reference.cs文件中修改public Service(string url)构造函数为:this.Url = url 。

5.2 WinCE系统DataGrid控件的数据寄存
从数据库查询出结果后,可以直接将DataSet填充DataGrid控件和调用DataSet中的数据填充其他控件,但是考虑DataGrid要求仅显示工序名称和工序内容两个字段,本系统采用了修改表格样式中列宽值为“-1”的方法隐藏其他字段,达到了未显示字段但能调用的数据寄存目的。

设置表格样式隐藏“过程编号”字段的部分代码如下:
//定义表格样式
DataGridTableStyle ts = new DataGridTableStyle() ;
ts.MappingName = dtMain.TableName;
//定义列样式
DataGridColumnStyle gcs = new DataGridTextBoxColumn ();
gcs.MappingName = "PROCESSID";
gcs.HeaderText = "过程编号";
gcs.Width = -1;
ts.GridColumnStyles.Add (gcs);
//填充DataGrid
this.dataGrid1.TableStyles.Add (ts);
this.dataGrid1.DataSource = dtMain;
5.3 WinCE系统多控件操作数据库的方法
报工界面中涉及保存多个不合格控件数值的问题,而且如4.2.3中所述要求有多种规则约束。

本系统定义了四个数组分别存放不同
标志,然后根据不同情况执行修改、插入操作,实现了预期功能。

关键代码如下:
//数据库包含标志
List<int> KeyList = new List<int> ();
//控件更改状态标志
List<int> ChangeList = new List<int> ();
//所需操作控件
NumericUpDown [] Nus = new NumericUpDown [] {...};
//控件对应的不合格名称
string[] keyName = new string[] { "工废", "料废", "回用", "试验件", "返修" };
//执行
for (int listNO = 1; listNO < 6; listNO++)
{
decimal amount = Nus [listNO - 1].Value;
//修改
if (KeyList.Contains (listNO) && ChangeList.Contains (listNO))
{sv.UpdateInvalid (Convert.ToInt32 (amount), listNO, Convert.ToInt32 (strPorId)) ;}
//插入
else if (stIndexOf (listNO) < 0 && ChangeList.Contains (listNO) && amount! = 0)
{sv.InserInvalid (Convert.ToInt32 (strPorId), listNO, keyName [listNO - 1], Convert.ToInt32 (amount), Convert.ToInt32 (strPrID)) ;}
}
其中,在读取不合格数据时对KeyList的插入相应标志位,在numericUpDown_ValueChanged事件中加入对ChangeList的插入,从而实现两个状态的监控,由此判断修改和插入。

用数组表示控件集合的方法实现对多个控件的循环操作,优化了代码。

相关文档
最新文档