基于 VB6的滤棒物流系统辅助报警系统设计

2022-04-29 14:37陈劲松秦枼涛黄首霖蔡洪江
计算机应用文摘 2022年19期
关键词:句柄代码报警

陈劲松 秦枼涛 黄首霖 蔡洪江

摘要:当前,滤棒高架库物流系统报警功能弱,影响工厂生产。在不影响生产及原程序运行的前提下,文章提出通过Visual Basic 6.0开发相关辅助报警系统,其可及时向操作员发出警报。结果表明,使用该辅助报警系统之后,增加了物流系统的有效运行时间。

关键词:Visual Basic 6.0;仓储系统;物流系统;故障;报警

中图法分类号:TP311文献标识码:A

Design of auxiliary alarm system for filter rod logistics system based on VB6

CHEN Jinsong,QINYetao,HUANGShoulin,CAIHongjiang

(Bijie Cigarette Factory,China Tobacco Guizhou Industrial Co.,Ltd.,Bijie,Guizhou 551700,China)

Abstract: At present,the alarm function of the filter rod high-bay warehouse logistics system is weak, which affects the production of the factory.Under the premise of not affecting the production and running of the original program,the paper proposes to develop a related auxiliary alarm system through Visual Basic 6.0,which can issue an alarm to the operator in time. The results show that after using the auxiliary alarm system,the effective running time of the logistics system is improved.

Key words: Visual Basic 6.0, warehouse system, logistics system, failure,alert

1 引言

随着科技的不断发展,互联网技术得到了广泛应用。许多仓储物流系统早在二十年前就已经被开发出来,但是许多工业应用基本没有更新。因此,这些系统的部分功能不完备,不能完全满足时代发展的需求。秉持改造动作轻量化以及降低企业系统瘫痪、停产风险的精神,本文介绍了一个在 Windows XP 系统下,通过 Visual Basic 6.0( VB6)查询昆船嘴棒物流系统数据库信息,给功能不全的系统补全系统故障提示功能的案例[1]。

2 物流系统现状及需求分析

某工厂早在2014年便已引进滤棒仓储物流系

统。其昆船嘴棒仓储物流系统由2台堆垛机、1个嘴棒仓库、4个成型实盘嘴棒待寄站、4个成型空盘待收站、5个嘴棒发射空盘待寄站、5个嘴棒发射实盘待收站以及1个临时人工收发站组成。该系统能够自动将嘴棒成型机已填满实盘嘴棒的待寄站内的实盘组运送、取出、放出仓库暂存数小时,同时将仓库的空盘组送至成型机台空盘接收站备用;还能将嘴棒发射待寄站的空盘回收至仓库,并将仓库的嘴棒实盘组运送至嘴棒发射待收站供嘴棒发射机发射,整个过程实现自动化工作。

由于该系统开发者的预见性有限、软件系统功能不完备、机械电气设备老化等,原报警功能不够及时实现,甚至不报警,且系统故障时常得不到及时处理。为缩减故障时长,相关人员开发了一个基于 VB6的、可查询 SQL 数据库的查询报警系统[2]。待故障发生时,可以根据数据库中的任务信息测算出系统已发生的故障,从而及时提醒系统管理员[3]。

3 设计思路

由于该物流系统源码并不支持转让,故将焦点聚焦在利用计算机自动、及时发现故障环节中,争取通过计算机自动运算第一时间发现故障,让故障得到及时处理。辅助报警系统流程图如图1所示。

4 程序界面設计

通过 Visual Basic 6.0建立一个如图2所示的窗体程序。

图2中各个 VB 控件的功能如下:开始工作按钮—激活 timer1开始自动重复工作;暂停五分钟按钮—关闭定时器 timer1,timer2,激活定时器 timer4;timer1的 interval 与功能—10秒间隔;查询数据库判断嘴棒库内是否有超时任务,如果有相应弹窗提示,激活定时器 timer2;timer2的 interval 与功能—3分钟间隔,激活定时器 timer1;timer3的 interval 与功能—3秒间隔,报警提示框的自动关闭;timer4的 interval 与功能—5分钟间隔,激活定时器 timer1,关闭自身。

图3为自动关闭的报警提示界面,其表示报警系统通过查询结果来弹出报警提示,3秒之后通过调用 Windows 系统函数FindWindowA找到报警提示,该报警提示的窗口句柄调用SendMessageA,并向该句柄指向的窗口自动点击确定按钮,从而关闭弹出的报警提示小窗口。

5 核心功能代码实现

定时器状态刷新函数—shuaxintime()代码: Private Sub shuaxintime()'刷新各定时器状态,起到实时提示

If Timer1.Enabled = True Then'判断定时器1是否激活

Label2.Caption ="timer1激活中"'将定时器1状态显示在标签2文字

Else:Label2.Caption ="timer1未激活"'将定时器1状态显示在标签2文字

End If'If判断语句结束。

Timer2~4功能与 Timer1类似,略过。

窗体载入函数 Sub Form_Load()的代码:

myStr=" Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog =客房信息管理模块;Data Source=."'连接数据库

myCnn.ConnectionString=myStr'myCnn的连接属性

myCnn1.ConnectionString =myStr'myCnn1的连接属性

Timer1.Enabled = False'冻结 timer1

开始工作按钮 Command1_Click()的代码:

Timer1.Enabled = True'激活 timer1

暂停五分钟按钮 Command2_Click()的代码:

Timer4.Interval =22000

'设置 timer4的间隔运行时间

Timer4.Enabled = True

'激活 timer4

Timer1.Enabled = False

'冻结 timer1

Timer2.Enabled = False

'冻结 timer2

Call shuaxintime

'调用刷新定时器状态函数

定时器1—Timer1_Timer()的代码:

myStr=" Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog =客房信息管理模块;Data Source=."'连接数据库

myCnn.ConnectionString=myStr'myCnn的连接属性

myCnn1.ConnectionString =myStr'myCnn1的连接属性

myRs.Open" select  ? from  TABLE1 where

finishdate  is   null ",myCnn,adOpenDynamic,

adLockBatchOptimistic'查询数据库返回结果myRs 1.Open "select  count (? ) from  TABLE1

where datediff( mi ,startdate,getdate ())>=5",myCnn,

adOpenDynamic,adLockBatchOptimistic'查询数据库

返回结果

If myRs.RecordCount>=5 Or myRs 1.RecordCount >=1 Then  '判断是否找到一条记录

Label1.Caption ="未完成找到"+CStr ( myRs. RecordCount)+"记录"+",超时找到"+CStr ( myRs 1.RecordCount)+"记录"+vbCrLf+"查询时

间:"+ Format(Now (),"YYYY?MM?DD hh:mm:ss") '查询结果显示在标签1,

Timer3.Interval =2000'设置定时器3的间隔时间 Timer3.Enabled = True'激活定时器3

nRet=MsgBox ("请及时处理,3秒后自动关闭",64,MsgTitle ) '弹出报警提示

Timer3.Enabled = False  '冻结定时器3   Call shuaxintime'调用刷新定时器状态函数

Else

'不符合判断则执行后面语句

MsgBox"库中没有你要的信息!"'弹出提示

信息

End If

'If 语句结束

If Timer2.Enabled = False Then

'如果定時器未激活则

Timer2.Enabled = True'激活定时器2

End If'If语句结束

定时器2—Timer2 Timer ()的代码: Timer1.Enabled = True   '激活定时器1

定时器3—Timer3 Timer ()的代码:

Dim hWnd As Long'定义长整型变量用于存储窗口句柄

hWnd=FindWindow ( vbNullString,MsgTitle )'调

用FindWindow查找窗口句柄

Call SendMessage (hWnd,WM_CLOSE ,0,ByVal 0&)'关闭通过句柄号找到的窗口

Call shuaxintime'调用刷新定时器状态函数

6 应用效益分析

使用该辅助报警系统之后,故障能够被及时发现和处理。其中,滤棒高架库的有效作业时间由原来的94%提高到98%;减少了因物流系统的瘫痪对上下游工段的影响,节约人力和物力,为企业发展注入了新动力。

参考文献:

[1]王晓敏.Visual Basic 程序设计[ M].北京:中国铁道出版社,2003.

[2]关敬敏,唐家渝.SQL Server 数据库应用教程[ M].北京:清华大学出版社,2005.

[3]黄志峰.Visual Basic 高级编程实例精解[ M].北京:国防工业出版社,2001.

作者简介:

陈劲松(1988—),本科,助理工程师,研究方向:机电一体化。

猜你喜欢
句柄代码报警
创世代码
创世代码
创世代码
创世代码
LKD2-HS型列控中心驱采不一致报警处理
高校图书馆持久标识符应用研究
编译程序语法分析句柄问题分析与探讨
2015款奔驰E180车安全气囊报警
死于密室的租住者
奔驰E260车安全气囊报警