随着公司业务的发展,每天都有大量货物进出公司库房,目前采用的人工记录的方法不但工作量大,且易出错。采用具有批处理的扫描枪方式不但可以有效提高工作效率,同时,配合基于批处理的离线检测方法可以从根本上防止货物出入库发生差错。系统采用Sysmbol MC9000手持终端[1],开发采集程序基于windows mobile 5 SDK[2],有效地提高了货物进出库效率,同时节省了部分劳力,提高了工作效率。
一、系统设计
(一)系统目标:
1.Barcode新系统能与公司现行ERP系统无缝连接。
2.支持手持终端批处理方式的出入库、上架、移库和盘点等操作管理,大幅降低手工作业强度和差错。
3.手持终端具有任务提示功能,可记录任务备注,并支持操作历史记录,方便错误追踪和回溯。
4.增强仓库管理各环节的透明性,更有效地加强监控。
5.支持制品和硅片出库扫描与系统发货指示自动核对与报警。
6.手持终端可方便添加无线数据传送读写功能,以应对将来系统升级,保护投资。
(二)系统功能结构:
根据库房管理系统特点,分为五个功能块:
系统登陆模块,制品入出库,硅片入出库,化学品入出库,部品入出库。功能模块结构如图1所示。入出库具备批处理和防错功能。
(三)系统硬件架构
系统硬件架构如图2所示:
(四)系统预览
Barcode数据采集系统是由各功能模块组成的,下面仅列出几个典型窗体,其余参见运行程序。系统主画面见图3,硅片出库检查画面见图4所示。
(五)业务流程图
入出库流程见图5和图6所示:
二、代码实现:
采集部分代码参考了Symbol公司的开发套件后自行开发[3]。
(一)启动读写头
//Create new reader,first available reader will be used.
this.MyReader=new Symbol.Barcode.Reader();
this.MyReaderData = new Symbol.Barcode.ReaderData(
Symbol.Barcode.ReaderDataTypes.Text,Symbol.Barcode.ReaderDataLengths.MaximumLabel);
this.MyEventHandler=new EventHandler(MyReader_ReadNotify);this.MyReader.Actions.Enable();
private void StartRead()
{
if ((this.MyReader !=null) &&
(this.MyReaderData !=null)){
this.MyReader.ReadNotify += this.MyEventHandler;
this.MyReader.Actions.Read(this.MyReaderData);
}
}
if (this.MyReader != null) {
this.MyReader.ReadNotify -=this.MyEventHandler;
this.MyReader.Actions.Flush();
}}
Private void MyReader_ReadNotify(object sender, EventArgs e)
{Symbol.Barcode.ReaderData TheReaderData=this.MyReader.GetNextReaderData();
if(TheReaderData.Result==Symbol.Results.SUCCESS)
{this.HandleData(TheReaderData);
this.StartRead();}
}
(二)数据接收和处理
private void HandleData(Symbol.Barcode.ReaderData TheReaderData)
{
TxtLotID.Text =TheReaderData.Text;
TxtLocation.Text = TheReaderData.Text;
BtnConfirm.Focus();
}
private void FrmInHouse_Deactivate(object sender, EventArgs e)
{
this.StopRead();
}
(三)离线检测代码
ListViewItem LVI; ListViewItem.ListViewSubItem LVSIModel;ListViewItem.ListViewSubItem LVSILotID;ListViewItem.ListViewSubItem LVSIQty;
if (TxtLotID.Text == "" || TxtModel.Text == "" || TxtQty.Text == ""){return; }
String Buffer;
String Tmp="";
StreamReader sr;
FileStream sf;
Boolean flag;
if (!File.Exists("\\Program Files\\HHNEC_CS\\matchingTable.txt"))
{MessageBox.Show("匹配文件不存在,请导入!");
return;
}
flag = false;
try
{ sf = new FileStream("\\Program Files\\HHNEC_CS\\matchingTable.txt", FileMode.Open);
sr = new StreamReader(sf);
while (!sr.EndOfStream)
{
Buffer=sr.ReadLine().Trim(); Tmp = tbxStkID.Text.Trim() + "," + TxtModel.Text.Trim();if (Buffer ==Tmp )
{
flag = true;Sound sound = new Sound("\\windows\\Alarm3.wav"); sound.Play();
break;
}
}sr.Close(); sf.Close();
if (flag == false){ MessageBox.Show("此硅片不在出库列中,请重新输入!","错误",MessageBoxButtons.OK,MessageBoxIcon.Asterisk,MessageBoxDefaultButton.Button1);return;
} }catch(IOException ioe)
{MessageBox.Show(ioe.Message ,"文件错误");}
三、测试及运行结果
该系统开发成功后,被安装在库房的相关岗位上。具体做法是:进入系统登陆画面,选择相应得模块,从后台把数据传输到手持终端,系统会自动下载匹配文件,用于出库校验,用手动扫描枪扫描货物上的条形码,听到嘟声后,如果货物不在匹配文件中,系统会报警。否则系统会一直工作,直到出库工作完成。在开发部门和库房共同努下,该解决方案测试获得成功,使用结果表明:完全满足库房日常工作需要,提高的库房的工作效率,避免了库房进出货物的错误率。 (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)