毕业设计(
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
)-用VB语言编写短信控制器的上位机控制软件
毕 业 设 计
设计题目:用VB语言编写短信控制器的 上位机控制软件
姓 名
院 系 电子与电气工程学院 专 业 电气工程及其自动化 年 级 2006级 学 号
指导教师
2010年6月5日
目 录
1. 引言 1 2. VB的发展历史和特点 1 2.1 VB的发展历史 1 2.2 VB的特点 2 2.2.1 VB的语言特点 2 2.2.2 VB的功能特点 2 3. 短信控制器硬件简介 3 4. 程序的设计思路及其程序框图 3 4.1程序的原理 3 4.2 程序的设计思路 3 4.2.1 开始运行程序 3 4.2.2 总控区设置 3 4.2.3 分控制区设置 3 4.3程序框图: 4 5. 软件功能介绍 5 6. 程序的部分软件代码 6 6.1 总控区(Form4) 6 6.2串口设置(Form12) 11 6.3高杆灯设置(Form3) 15 7.
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
19 参考文献 19 致谢 19
鲁东大学毕业设计
用VB语言编写短信控制器的上位机控制软件
XXX
(电子与电气工程学院 电气工程及其自动化 2006级1班)
本文介绍了运用VB语言编写的短信控制器的上位机控制软件~着重讲述摘 要:
了它的设计思路~给出了该软件的设计框图和VB程序的部分源代码~形成了正确
的可执行文件。
关键词:VB;控制软件;短信控制器;设计
Programming A Control Software Of Short Message
Controller For Upper Computer In The VB Language
Wang Chengcheng
(College of Electric and Electronic Engineering, Electric Engineering and Its Automation,,
Class1 Grade2006, 062312334)
Abstract: This paper introduces a control software of short message controller for
upper computer in the VB language, describes its designed thought, gives the designed
software diagram and VB program's parts source code of the control software, and
creates a correct executable file.
Key Words: VB; control software;short message controller; design
1 引言
Visual Basic(VB)是在Windows环境下运行的、支持可视化编程的、面向
对象的、采用事件驱动方式的结构化程序设计语言,也是进行应用系统开发最简
[1]单的、易学易用的程序设计工具。从任何标准来说,VB都是世界上使用人数
最多的语言,它源自于BASIC编程语言,其开发的应用程序的运行采用事件驱动
原理。在VB代码窗口输入代码时,对于VB中的对象的属性、方法、内置的函数
和已定义的自定义函数等,能自动给出拼写提示,这样可大大减少编程人员的记
[2]忆量,程序员可以轻松的使用VB提供的组件快速建立一个应用程序 。
2 VB的发展历史和特点
2.1 VB的发展历史
1991年,美国微软公司推出了Visual Basic(可简称VB),目前的最新版本是
1
鲁东大学毕业设计
VB 2005(VB8)中文版。Visual 意即可视的、可见的,指的是开发像windows操作系统的图形用户界面(Graphic User Interface, GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。Basic指的是Beginners all_purpose symbolic instruction code 初始者通用符号指令代码语言。Visual Basic有学习版、专业版和企业版三种版本,以满足不同的开发需要。5.0版以后,Visual Basic推出了中文版,与前个版本相比,
[2][3][4]其功能有了很大提升。
2.2 VB的特点
2.2.1 VB的语言特点
Visual Basic(以下简称VB)是运行于Windows平台下的一种可视化的高级编程语言,有以下显著的特点:
1) VB继承了Basic语言简单易学的特点。
2) 与基于dos环境下的编程语言相比,VB编程思想上发生了根本的改变。
VB中引入了面向对象的程序设计方法,使程序设计人员从烦琐的程序设计细
节中解脱出来。
3) VB具有强大的数据库管理功能。
4) 程序开发环境高度集成化。
5) VB适应于开发视窗类应用程序。
2.2.2 VB的功能特点
VB开发的应用程序的运行采用事件驱动原理。程序设计人员不仅在程序设计时不需要考虑程序代码执行的先后问题,而且同一个对象可以因用户的不同操作而产生不同的结果。
VB中提供的编辑器不仅提供了典型的Windows文字处理应用程序的各种功能,如剪切、复制、粘贴等,使得程序的输入和修改非常方便。而且在VB代码窗口输入代码时,对于VB中的对象的属性、方法、内置的函数、已定义的自定义函数、过程和已定义的变量等,能自动给出拼写提示,这样可大大减少编程人员的记忆量。
在VB开发环境下,通过API(Application Program Interface)函数调用,可充分使用Windows提供的各种系统资源,来扩充所开发的应用程序的功能。
VB全面支持Windows系统的OLE(Object Linking And Embedding)技术,因此可以方便、快捷地实现不同应用程序之间的动态数据交换。
2
鲁东大学毕业设计
3短信控制器硬件简介
GSM短信控制器只需在控制器中插入手机卡,将串口插入上位机,可以通过访问本控制器从而操作高杆灯,达到用手机短信远程控制设备的目的。
图1 短信控制器硬件
4程序的设计思路及其程序框图
4.1程序的原理
短信控制器的上位机软件就是在PC端,通过串口通信控制发送端发送短信而实现远程控制高杆灯亮灭的程序。能实现随时修改控制程序,以改变各灯的控制时间和工作状况,满足不同状况要求,有很强的现场应用性。 4.2程序的设计思路
4.2.1 开始运行程序
扫描默认串口,判断是否有效,是否被占用。
进入主窗口(MDIForm1),若串口无效或被占用,则更改串口设置(Form12);若串口有效,可进入总控区(Form4)开始使用。
4.2.2 总控区设置
使用原有控制区,添加控制区(Form11)或删除控制区(Form10),在原来无控制区的情况下,最多可添加10个控制区。
4.2.3 分控制区设置
添加(Form2)、删除、设置高杆灯,查询高杆灯状态,向高杆灯发送短信形式的指令(Form3)。
3
鲁东大学毕业设计
4.3 程序框图
开始
检查端口
YES
端口是否被
占用 提示:“无效端口,或NO 端口被占用~”
更改端口设置
开始使用
NO
是否已有控
制区 新建控制区 YES
进入控制区
NO
是否已有被
控对象 新建被控对象
YES
操作被控对象
退出程序
图2总体程序框图
4
鲁东大学毕业设计
5 软件功能介绍
图3 总控区界面
界面功能:
单击菜单栏“添加控制区”和“删除控制区”来添加、删除分控制区。单击“连接设备”可以检测端口使用情况并连接短信控制器。可通过单击右键选择“串口设置”改变串口设置参数。
图4 串口设置界面
界面功能:
5
鲁东大学毕业设计
可根据实际情况修改串口设置。
图5 控制区界面
界面功能:
单击菜单栏上“添加高杆灯”可添加高杆灯,上限为5个高杆灯。单击“设置”按钮可更改高杆灯名称、电话号码和数量。
图6 高杆灯设置界面
界面功能:
可更改高杆灯名称、电话号码和数量,设定灯的开启或关闭,删除高杆灯,查询高杆灯状态和发送开关指令。
6程序的部分软件代码
6.1 总控区(Form4)
Dim s As Integer
Private Sub addarea_Click(Index As Integer)
Form11.Show
End Sub
6
鲁东大学毕业设计
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
Form5.Caption = Command1(Index).Caption
Form5.Show
Case 1
Form6.Caption = Command1(Index).Caption
Form6.Show
Case 2
Form7.Caption = Command1(Index).Caption
Form7.Show
Case 3
Form8.Caption = Command1(Index).Caption
Form8.Show
Case 4
Form9.Caption = Command1(Index).Caption
Form9.Show
Case 5
Case 6
Case 7
Case 8
Case 9
End Select
End Sub
Private Sub Command11_Click() Form11.Show
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim j As Integer
Dim inputdata As String
Dim dat As String
Dim area() As String
7
鲁东大学毕业设计
Dim mes() As String
Dim err As Boolean
err = initGSMmode()
If err = True Then
MsgBox "连接成功~", 64, "提示"
Call write_daily_record("成功连接发射装置~")
Open App.Path & "\Manager.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, dat
If dat <> "" Then
inputdata = inputdata + dat End If
Loop
Close #1
area = Split(inputdata, ";") For i = LBound(area) To UBound(area)
If area(i) = "" Then
Exit For
End If
mes = Split(area(i), ",")
j = Val(Trim$(mes(0)))
If j < 9 And mes(1) = "true" Then
Command1(j).Visible = True
Command1(j).Caption = mes(2)
Command1(j).Enabled = True
End If
Next i
MDIForm1.Timer1.Interval = 1000 Else
Call write_daily_record("连接发射装置失败~")
MsgBox "连接失败~请选择正确的端口和波特率~", 64, "提示"
8
鲁东大学毕业设计
MDIForm1.Timer1.Interval = 0
End If
End Sub
Private Sub delarea_Click(Index As Integer)
Form10.Show
End Sub
Private Sub end_Click() End
End Sub
Private Sub Form_Load() Dim i As Integer
Dim j As Integer
Dim inputdata As String Dim dat As String
Dim area() As String Dim mes() As String
On Error GoTo err
'从文本文档中读取数据
s1:
Open App.Path & "\Manager.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, dat
If dat <> "" Then
inputdata = inputdata + dat End If
Loop
Close #1
area = Split(inputdata, ";")
9
鲁东大学毕业设计
For i = LBound(area) To UBound(area)
If area(i) = "" Then
Exit For
End If
mes = Split(area(i), ",")
j = Val(Trim$(mes(0)))
If j < 9 And mes(1) = "true" Then
Command1(j).Visible = True
Command1(j).Caption = mes(2)
Command1(j).Enabled = False
End If
Next i
Exit Sub
err:
Open App.Path & "\Manager.txt" For Output As #1
Print #1, ""
Close #1
GoTo s1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As
Single)
If Button = 2 Then '如果是鼠标右键按下时
Form4.PopupMenu mnufile, 0, x, y
End If
End Sub
Private Sub setcom_Click()
Form13.Show
End Sub
Private Sub 删除控制区_Click()
Form10.Show
10
鲁东大学毕业设计
End Sub
Private Sub 添加控制区_Click()
Form11.Show
End Sub
6.2串口设置(Form12)
Dim s As String
Private Sub Command1_Click() Unload Me
End Sub
Private Sub Command2_Click()
On Error GoTo err
If MDIForm1.MSComm1.PortOpen = True Then
MDIForm1.MSComm1.PortOpen = False End If
Dim a As Integer
a = Val(Mid$(Combo1.Text, 4, 1)) MDIForm1.MSComm1.CommPort = a MDIForm1.MSComm1.Settings = Combo2.Text + "," + Combo4.Text + "," +
Combo3.Text + "," + Combo5.Text
MDIForm1.MSComm1.PortOpen = True
If Check1.Value = 1 Then
Open App.Path & "\comset.txt" For Output As #1
Print #1, ""
Close #1
11
鲁东大学毕业设计
s = str(MDIForm1.MSComm1.CommPort) + ";" +
MDIForm1.MSComm1.Settings
Open App.Path & "\comset.txt" For Output As #1
Print #1, s
Close #1
End If
Form4.Show
Unload Me
Exit Sub
err:
MsgBox "无效端口,或端口被占用~", 64, "提示" End Sub
Private Sub Form_Load() Dim dat As String
On Error GoTo err
Combo1.AddItem ("COM1") Combo1.AddItem ("COM2") Combo1.AddItem ("COM3") Combo1.AddItem ("COM4") Combo1.AddItem ("COM5") Combo1.AddItem ("COM6")
Combo2.AddItem (2400) Combo2.AddItem (4800) Combo2.AddItem (9600) Combo2.AddItem (19200) Combo2.AddItem (115200)
12
鲁东大学毕业设计 Combo3.AddItem (8) Combo3.AddItem (7) Combo3.AddItem (6) Combo3.AddItem (5) Combo3.AddItem (4)
Combo4.AddItem ("O") Combo4.AddItem ("E") Combo4.AddItem ("M") Combo4.AddItem ("N") Combo4.AddItem ("S")
Combo5.AddItem (1) Combo5.AddItem (1.5) Combo5.AddItem (2) Combo5.AddItem (4)
s1:
Open App.Path & "\comset.txt" For Input As #1
Do While Not EOF(1) Line Input #1, dat If dat <> "" Then s = s + dat
End If
Loop
Close #1
If s <> "" Then
Call setcom
Form4.Show
Unload Me
Exit Sub
End If
Combo1.Text = "COM" + Trim$(str(MDIForm1.MSComm1.CommPort))
13
鲁东大学毕业设计
a = Split(MDIForm1.MSComm1.Settings, ",") Combo2.Text = a(0)
Combo3.Text = a(2)
Combo4.Text = UCase$(a(1))
Combo5.Text = a(3)
Exit Sub
err:
Open App.Path & "\comset.txt" For Output As #1
Print #1, ""
Close #1
GoTo s1
End Sub
Private Sub setcom()
Dim str() As String
str = Split(s, ";")
On Error GoTo err
If MDIForm1.MSComm1.PortOpen = True Then
MDIForm1.MSComm1.PortOpen = False End If
Dim a As Integer
a = Val(Trim$(str(0)))
MDIForm1.MSComm1.CommPort = a MDIForm1.MSComm1.Settings = Trim$(str(1)) MDIForm1.MSComm1.PortOpen = True Exit Sub
err:
MsgBox "无效端口,或端口被占用~", 64, "提示"
End Sub
14
鲁东大学毕业设计 6.3高杆灯设置(Form3)
Private Sub Command1_Click()
Dim name As String
Dim count As Integer Dim phone As String
name = Trim$(Text1.Text) If name = "" Then
MsgBox "请输入名称", 64, "提示"
Exit Sub
End If
phone = Trim$(Text2.Text) If name = "" Then
MsgBox "请输入电话号码", 64, "提示"
Exit Sub
End If
If Text3.Text <> "" Then count = Trim$(Text3.Text) If count > 5 Then
MsgBox "灯的数量必须小于或等于5", 64, "提示"
Exit Sub
End If
If count = 0 Then
count = 1
End If
Else
MsgBox "请填入灯的数量", 64, "提示"
Exit Sub
End If
15
鲁东大学毕业设计
light_M(manager_index).light_N(light_index).phonenumber = phone
light_M(manager_index).light_N(light_index).nane = name light_M(manager_index).light_N(light_index).lightcount = count
If Check1.Value = 1 Then
light_M(manager_index).light_N(light_index).enable = True Else
light_M(manager_index).light_N(light_index).enable = False
End If
Call savelights(manager_index)
MsgBox "设置成功", 64, "提示"
Unload Me
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Command3_Click()
Dim msg As Integer
msg = MsgBox("确定要删除,", 48 + 1, "提示")
If msg = vbCancel Then
Exit Sub
End If
Call dellight(manager_index, light_index) MsgBox "删除成功", 64, "提示"
Unload Me
End Sub
Private Sub Command4_Click()
Dim message As mes
16
鲁东大学毕业设计
Dim err As Boolean
MDIForm1.Timer1.Interval = 0 message.message = Trim$(Text4.Text) message.phone = Trim$(Text2.Text) err = SendMES(message)
If err = True Then
Call write_daily_record("向" + Trim$(Text1.Text) + "(" + Trim$(message.phone)
+ ")" + "发送 " + Trim$(message.message) + " 命令" + ".并且发送成功~")
MsgBox "发送成功~", 64, "提示"
Else
Call write_daily_record("向" + Trim$(Text1.Text) + "(" + Trim$(message.phone)
+ ")" + "发送 " + Trim$(message.message) + " 命令" + ".发送失败~")
MsgBox "发送失败~", 64, "提示"
End If
Timer1.Interval = 1000
End Sub
Private Sub Command5_Click() Dim message As mes
Dim err As Boolean
message.message = "返回开关信息"
message.phone = Trim$(Text2.Text) err = SendMES(message)
If err = True Then
Call write_daily_record("向" + Trim$(Text1.Text) + "(" + Trim$(message.phone)
+ ")" + "发送 返回开关信息 命令" + ".并且发送成功~")
MsgBox "发送成功~", 64, "提示"
Else
Call write_daily_record("向" + Trim$(Text1.Text) + "(" + Trim$(message.phone)
+ ")" + "发送 返回开关信息 命令" + ".发送失败~")
MsgBox "发送失败~", 64, "提示"
End If
17
鲁东大学毕业设计
End Sub
Private Sub Form_Load()
Text1.Text = light_M(manager_index).light_N(light_index).nane
Text2.Text = light_M(manager_index).light_N(light_index).phonenumber
Text3.Text = str(light_M(manager_index).light_N(light_index).lightcount)
If light_M(manager_index).light_N(light_index).enable = True Then
Check1.Value = 1
Else
Check1.Value = 0
End If
End Sub
Private Sub Form_Unload(Cancel As Integer) MDIForm1.Timer1.Interval = 1000
Timer1.Interval = 0
End Sub
Private Sub Timer1_Timer()
Dim err As Boolean
Dim message As mes
Dim i As Integer
err = ScanGSMMode()
If err = False Then
Exit Sub
End If
i = GSMMode.MESCount
While i > 0
message = ReadMSG(GSMMode.MESNumber(GSMMode.MESCount))
If message.phone <> "" Then
Text4.Text = message.message
18
鲁东大学毕业设计
End If
GSMMode.MESCount = GSMMode.MESCount - 1
i = GSMMode.MESCount
Wend
End Sub
7总结
本设计是在熟悉掌握VB的基础上写成的,VB编程以其简约的设计风格、可视化的界面编辑和极小的体积广受程序员们的欢迎。通过本软件的设计,对VB的编程特点有了更深的理解。
本程序用于控制发射端发送短信远程控制高杆灯的亮灭,能容易地随时修改控制程序,以改变各灯的控制时间和工作状况,满足不同状况要求,有很强的现场应用性。实践证明,采用短信控制器对高杆灯的自动控制是完全可行的。
参考文献
[1] 李雁翎.Visual Basic程序设计[M].北京: 清华大学出版社, 2004. [2] 陈元春,王淮亭,陶恂. Visual Basic数据库编程[M].北京: 高等教育出版社,
2003.
[3] 王国荣编著. Visual Basic 6.0 Windows API 讲座[M]. 北京: 人民邮电出版社,
1999.
[4] 龚沛曾. Visual Basic简明教程[M].北京: 高等教育出版社出版, 2003. [5] 何光渝编著. Visual Basic 常用数值算法集[M].北京: 科学出版社, 2002. [6] 李勇帆. Visual Basic 6.0 程序设计实践指导[M].北京: 人民邮电出版社, 2006. [7] 史斌星,史佳. Visual Basic 贯通教程[M].北京: 清华大学出版社, 2003. [8] 张健主编. Visual Basic 6.0程序设计[M].江苏: 浙江大学出版社, 2007. [9] 李长林编著. Visual Basic 串口通信技术与典型实例 [M].北京: 清华大学出
版社, 2006.
致谢
本文是在周鲁平老师的悉心指导下完成的,我要感谢我的指导老师周鲁平老师对我毕业设计的悉心指导和热诚的帮助,同时还要向在完成设计论文过程中给我提供帮助的王均彬同学致以最诚挚的谢意。老师的严谨、同学的互助深深地影响了我,才使我能够顺利地完成此次毕业设计,获益匪浅。再次感谢他们~
19