VB中串口通讯的实现

时间:2019-05-14 18:43:44下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《VB中串口通讯的实现》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《VB中串口通讯的实现》。

第一篇:VB中串口通讯的实现

VB中串口通讯的实现.txt VB中串口通讯的实现

------------------

一、概述

串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。

实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通 讯,甚至其实现方法和C、汇编相比,要更加快捷方便。下面,笔者就介绍一下在VB中实现串口通讯的方法。

在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。我们只要通 过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。下面,笔者就简要地介绍一下

MSComm控件的使用方法。

二、MSComm控件的主要属性、事件

1、MSComm的属性

由于MSComm控件属性很多,在此笔者仅介绍与实现串口通讯密切相关的核心属性。

Commport:设置通讯所占用的串口号。如设成1(默认值),表示对Com1进行操作。

Setting:对串口通讯的相关参数。包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。其默认值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。

Portopen:设置串口状态,值为True时打开串口,值为False时关闭串口。

Input:从输入寄存器读取数据,返回值为从串口读取的数据内容,同时输入寄存器将被清空。

Ouput:发送数据到输出寄存器。

InBufferCount:设置输入寄存器所存储的字符数,当将其值设为0时,则输入寄存器将被清空。

InputMode:设置从输入寄存器中读取数据的形式。若值为0,则表示以文本形式读取;值为1,则表示以 二进制形式读取。

OutBufferCount:设置输出寄存器所存储的字符数,当将其值设为0时,则输出寄存器将被清空。

RThreshold:设置在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm事件之前要接受的字符 数。

CommEvent属性:返回最近的通讯事件或错误。通过对它具体属性值的查询,我们就可以获得通讯事件和通 讯错误的完整信息。当其值是comEvReceive时表示接收到数据。

2、MSComm的事件

除了公共事件之外,MSComm只有一个OnComm事件。当CommEvent属性值变化时将发生OnComm事件,指示发生 一个通讯事件或错误。当我们设置Rtheshold属性值为0时,将使得捕获comEvReceive事件无效。

三、串口通讯编程实例

在完成了对MSComm控件的简要介绍之后,笔者就以实际程序为例,介绍一下串口通讯的具体实现方法。

1、PC机间的串口通讯

(1)、实现方法:

A、新建一个窗体,在上面放两个Text控件、两个CommandButton控件和两个Label控件(如图1.bmp所示)。

具体见下表:

控件类型 名称 Caption属性 作用

-----------------

Text Text1-------输入所要发送的信息

Text Text2-------显示接收到的信息

CommandButton Command1 发 送---------CommandButton Command2 退 出---------

Label Label1 发送的数据 提示

Label Label2 接收的数据 提示

B、在控件工具箱中的空白处点击鼠标右键,在弹出的菜单中选择“部件”,在弹出的窗口中的控件列表中 找到“Microsoft Comm Control”,将其选中,在点击“应用”、“关闭”,在控件工具栏中就会出现一个电 话的小图标。

C、用串口线将两台电脑连接起来。您可以使用Com1对Com1的对应连接,也可以使用Com1和Com2的交叉连接。

本程序使用的是Com1对Com1的连接。

D、输入以下代码:

Private Sub Command1_Click()

'...发送数据

MSComm1.OutBufferCount = 0 '...清空输出寄存器

MSComm1.Output = Text1.Text '...发送数据

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

MSComm1.CommPort = 1 '...使用Com1口

MSComm1.Settings = “9600,n,8,1” '...设置通讯参数

MSComm1.PortOpen = True '...打开串口

End Sub

Private Sub Mscomm1_Oncomm()

'...通讯事件发生

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件发生

Text2.Text = MSComm1.Input '...接受显示数据

MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub

2、PC机与单片机之间的通讯

PC机与单片机之间的通讯被广泛的用于工业、医疗测控等领域之中。在应用中,我们通常将单片机作为“感 受器”和“效应器”,负责数据采集、响应计算机发出的指令对电路进行控制,有时也进行一些简单的运算,最后再将执行数据反馈给计算机处理。本程序将实现在PC机上输入一个0-255之间的整数,将此数据发送到单片 机,单片机接收到数据后,将数据在显示管上显示,再将此数除以2,将得数返回给PC机。(运行效果如图 3.BMP所示)其实现方法如下:

A、同PC机间通讯的实现方法A-B。

B、连接电脑和单片机。注意!由于PC机端的RS232电平与单片机端TTL的并不不匹配,故应注意电平转换。

C、在VB中输入以下代码:

Private Sub Mscomm1_Oncomm()

'...通讯事件发生

Dim indata As Variant

Dim bte(0)As Byte

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件发生

indata = MSComm1.Input

'...注意!要通过MSComm控件发送或接收二进制数据必须用Variant类型的变量对二进

'...制Byte类型的变量进行转换!

bte(0)= AscB(indata)

Text2.Text = bte(0)

MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub

Private Sub Command1_Click()

'...发送数据

Dim Num As Integer

Dim outbte(0)As Byte

Num = Val(Text1.Text)

outbte(0)= CByte(Num)

MSComm1.OutBufferCount = 0 '...清空输出寄存器

MSComm1.Output = outbte(0)'...发送数据

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

MSComm1.CommPort = 1 '...使用Com1口

MSComm1.Settings = “9600,n,8,1” '...设置通讯参数

MSComm1.PortOpen = True '...打开串口

End Sub

D、单片机工作方式置于1,比特率设为9600bit/s。在单片机上,我们只得使用汇编语言编写,并且调用中 断实现对串口数据的收发工作。源代码如下:

PUSH PSW ;将程序状态字压入堆栈

PUSH ACC ;将累加器压入堆栈

CLR EA ;关闭系统中断

CLR RI ;清除中断标志位

MOV A,SBUF ;从接收寄存器中读取数据

MOV 70H,A ;分解数据百、十、个位并显示

MOV B,#100

DIV AB

MOV 52H,A ;分解百位,送入存储器52H

MOV A,B

MOV B,#10

DIV AB

MOV 51H,A ;分解十位,送入存储器51H

MOV 50H,B ;分解个位,送入存储器50H MOV A,70H

MOV B,#2

DIV AB;将接受的数据除以2

MOV SBUF,A ;将得数发送到输出寄存器

ACALL DL1 ;延时保证数据完整发送

ACALL DL1

CLR RI ;清除中断标志位

SETB EA ;打开系统中断

POP ACC;累加器出栈

POP PSW ;程序状态字出栈

RETI ;中断程序返回

3、编程环境

以上程序在Windows 2000 Professional,Visual Basic 6.0企业版,AT89C52型单片机下调试通过。

四、总结

从以上程序可以看出,在VB中利用MSComm控件,可以快速开发出串口通讯程序,从而大大提高编程效率。

演讲稿

尊敬的老师们,同学们下午好:

我是来自10级经济学(2)班的学习委,我叫张盼盼,很荣幸有这次机会和大家一起交流担任学习委员这一职务的经验。

转眼间大学生活已经过了一年多,在这一年多的时间里,我一直担任着学习委员这一职务。回望这一年多,自己走过的路,留下的或深或浅的足迹,不仅充满了欢愉,也充满了淡淡的苦涩。一年多的工作,让我学到了很多很多,下面将自己的工作经验和大家一起分享。

学习委员是班上的一个重要职位,在我当初当上它的时候,我就在想一定不要辜负老师及同学们我的信任和支持,一定要把工作做好。要认真负责,态度踏实,要有一定的组织,领导,执行能力,并且做事情要公平,公正,公开,积极落实学校学院的具体工作。作为一名合格的学习委员,要收集学生对老师的意见和老师的教学动态。在很多情况下,老师无法和那么多学生直接打交道,很多老师也无暇顾及那么多的学生,特别是大家刚进入大学,很多人一时还不适应老师的教学模式。学习委员是老师与学生之间沟通的一个桥梁,学习委员要及时地向老师提出同学们的建议和疑问,熟悉老师对学生的基本要求。再次,学习委员在学习上要做好模范带头作用,要有优异的成绩,当同学们向我提出问题时,基本上给同学一个正确的回复。

总之,在一学年的工作之中,我懂得如何落实各项工作,如何和班委有效地分工合作,如何和同学沟通交流并且提高大家的学习积极性。当然,我的工作还存在着很多不足之处。比日:有的时候得不到同学们的响应,同学们不积极主动支持我的工作;在收集同学们对自己工作意见方面做得不够,有些事情做错了,没有周围同学的提醒,自己也没有发觉等等。最严重的一次是,我没有把英语四六级报名的时间,地点通知到位,导致我们班有4名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。

在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家!

第二篇:VB实现PC与欧姆龙PLC通讯的串口编程

Private Sub Form_Load()

Dim i As Integer'OPEN COM1

If ComTrue(1)= 0 Then

If ComOpen(1, 38400, 7, 1, 1, “sjh”)= 1 Then 'MsgBox(“已注册”)'sjh为你的注册账号Call SetDelayNum(64)

End If

End If

jisu

jisu1

jisu2

End Sub

第三篇:串口通讯实验报告

网络编程与实践实验报告

实验内容:串口通信编程 学号:S201502189 姓名:职荣豪 日期:2015-9-28

一、实验要求

使用VS2010编写基于对话框的MFC应用程序,两个窗口分别使用两个串口,使得这两个窗口可以进行通信,包括数据的发送与接收。

二、实验原理

本实验使用Microsoft Communications Control控件,利用这个ActiveX控件,只需要编写少量代码即可轻松进行通信。

该控件相关的函数如下: put__CommPort:设置串口号

put_Settings:以字符串的形式设置波特率、奇偶校验位(n-无校验,e-偶校验,o-奇校验)、数据位数、停止位数

put_InputMode:设置接收数据的类型(0-文本类型,1-二进制类型)put_InputLen:设置从接收缓冲区读取的字节数,0表示全部读取 put_InBufferSize:设置接收缓冲区大小 put_OutBufferSize:设置发送缓冲区大小

put_RThreshold:设定当接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符就产生一个事件

put_SThreshold:设定在触发OnComm事件前,发送缓冲区内所允许的最少的字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件

put_PortOpen:打开或关闭串口,传入参数为true时打开串口,传入参数为false时关闭串口 get_CommEvent:获得串口上刚发生的事件,事件值为2表示接收到数据

get_InBufferCount:获得缓冲区中的数据位数

get_Input:获取缓冲区数据,返回类型为VARIANT put_Output:发送数据

三、设计思路

需要添加一个Microsoft Communications Control控件,用于进行串口通信。由于要求同一程序可运行两个窗口进行相互通信,需要两个窗口开启两个不同串口,故需要添加一个Edit Control控件用于输入串口号,并添加打开串口按钮,在点击该按钮时对串口控件的参数进行设置并开启串口。同时添加关闭串口按钮,点击后关闭串口并可以对串口号进行修改。

需要添加两个Edit Control 分别用于显示接收到的数据以及输入要发送的数据。需要添加一个发送按钮,点击后发送输入的数据。

四、实验步骤

1.建立基于对话框的MFC应用程序 2.添加界面控件并设置ID与Caption 添加Microsoft Communications Control控件,用于进行串口通信 添加一个Edit Control控件,用于输入串口号,ID设置为IDC_PORT 添加一个Static Text控件,用于标注端口号,将Caption设置为“串口号:”

添加两个按钮,分别用于打开串口、关闭串口。IDC分别设置为IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分别设置为“打开”、“关闭” 添加两个Edit Control,分别用于显示接收到的数据以及输入要发送的数据,ID分别设置为IDC_RECEIVE、IDC_SEND 添加两个Static Text控件,用于标注接收区与发送区,Caption分别设置为“接收区”、“发送区”

添加一个按钮用于发送数据,ID设置为IDC_BTN_SEND,Caption设置为“发送” 调整控件的大小与位置。

完成后如图:

3.给控件绑定变量

右键单击Microsoft Communications Control控件,选择“添加变量”,变量名为m_com 打开类向导给控件添加变量:

给IDC_PORT绑定变量,用于存放输入的端口号,数据类型为int,变量名为m_port 给IDC_RECEIVE绑定变量,用于存放接收到的数据,数据类型为CString,变量名为m_strReceive 给IDC_SEND绑定变量,用于存放输入的待发送的数据,数据类型为CString,变量名为m_strSend

4.给控件添加事件响应函数

右键单击Microsoft Communications Control控件,选择“添加事件处理程序”,点击“添加编辑”,生成响应函数,此函数用于接收数据。

在函数中添加以下代码:

UpdateData(TRUE);if(nEvent == 2){

} UpdateData(FALSE);//将m_strReceive的值显示到控件中

//更新m_strReceive的值

//获取事件值

//获取缓冲区位数

//时间值为2,此时为收到数据 int nEvent = m_com.get_CommEvent();int k = m_com.get_InBufferCount();if(k <= 0)//位数小于等于0时则返回 return;char* str =(char*)m_com.get_Input().parray->pvData;//获取接收到数据的字*(str + k)= '';//字符数组最后一位的下一位设置为'',为字符串的结尾标志 m_strReceive +=(const char *)str;//在用于显示的字符串末尾添加刚接收到的符数组的首地址

字符串

双击IDC_BTN_OPEN控件,即“打开”按钮,生成响应函数,此函数用于设置串口参数并打开串口。

在函数中添加以下代码:

UpdateData(TRUE);

if(m_port <= 0){

} m_com.put__CommPort(m_port);//设定串口为m_port的值 m_com.put_Settings(“9600,n,8,1”);

//设定波特率9600,无奇偶校验位,8作为数据位,AfxMessageBox(“请输入正确的串口号!”);return;

//更新m_port的值 //端口号不小于等于0

1作为停止位

m_com.put_InputMode(1);//设定数据接收模式,1为二进制方式

m_com.put_InputLen(0);//设置从接收缓冲区读取的字节数,0表示全部读取

m_com.put_InBufferSize(1024);//设置输入缓冲区大小为1024byte

m_com.put_OutBufferSize(1024);//设置输出缓冲区大小为1024byte m_com.put_RThreshold(1);//每接收到一个字符时,触发OnComm事件 m_com.put_SThreshold(0);//每发送一个字符时,不触发OnComm事件 m_com.put_PortOpen(true);

//打开串口

GetDlgItem(IDC_BTN_OPEN)->EnableWindow(FALSE);//打开按钮设为不可用 GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(TRUE);//关闭按钮设为可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(TRUE);

//发送按钮设为可用

双击IDC_BTN_CLOSE控件,即“关闭”按钮,生成响应函数,该函数用于关闭串口。在函数中添加以下代码:

m_com.put_PortOpen(false);//关闭串口

GetDlgItem(IDC_BTN_OPEN)->EnableWindow(TRUE);

//打开按钮设为可用

GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE);//关闭按钮设为不可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE);//发送按钮设为不可用

双击IDC_BTN_SEND控件,即“发送”按钮,生成响应函数,该函数用于发送数据。在函数中添加以下代码:

UpdateData(TRUE);//更新m_strSend的值,读取编辑框内容 m_com.put_Output(COleVariant(m_strSend));//发送数据

5.在对话框初始化函数中添加额外初始化代码

在对话框刚打开时,此时串口没有开启,故“关闭”按钮与“发送”按钮需设为不可用。在OnInitDialog函数中添加以下代码:

GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE);//关闭按钮设为不可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE);//发送按钮设为不可用

五、实验结果

对话框1 运行结果如下:

对话框2 运行结果如下:

六、实验心得

通过课上的学习,我学习到了数据通信的基础知识,对网络的分层结构以及相关协议有了进一步的认识。

通过本次实验,我对串口通信的原理有了更深的认识与理解,并对MFC界面制作更加熟练。总之,在本课程中我收获很多,不仅在通信方面的知识有所提升,同时也锻炼了编程能力,VC++软件的使用更加熟练。

第四篇:串口通讯的工作方式

串口通讯的工作方式

由于 CPU 与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有 “ 接收移位寄存器 ”(串→并)和 “ 发送移位寄存器 ”(并→串).1.在数据输入过程中,数据 1 位 1 位地从外设进入接口的 “ 接收移位寄存器 ”,2.当 “ 接收移位寄存器 ” 中已接收完 1 个字符的各位后,数据就从 “ 接收移位寄存器 ” 进入 “ 数据输入寄存器 ”.3.CPU 从 “ 数据输入寄存器 ” 中读取接收到的字符.(并行读取,即 D7~D0 同时被读至累加器中).“ 接收移位寄存器 ” 的移位速度由 “ 接收时钟 ” 确定.1.在数据输出过程中,CPU 把要输出的字符(并行地)送入 “ 数据输出寄存器 ”,2.“ 数据输出寄存器 ” 的内容传输到 “ 发送移位寄存器 ”

3,然后由 “ 发送移位寄存器 ” 移位,把数据 1 位 1 位地送到外设.“ 发送移位寄存器 ” 的移位速度由 “ 发送时钟 ” 确定.接口中的 “ 控制寄存器 ” 用来容纳 CPU 送给此接口的各种控制信息,这些控制信息决定接口的工作方式.“ 状态寄存器 ” 的各位称为 “ 状态位 ”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误.例如,用状态寄存器的 D5 位为 “1” 表示 “ 数据输出寄存器 ” 空,用 D0 位表示 “ 数据输入寄存器满 ”,用 D2 位表示 “ 奇偶检验错 ” 等.能够完成上述 “ 串 <--> 并 ” 转换功能的电路,通常称为 “ 通用异步收发器 ”(UART :Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251,16550

第五篇:ATM系统实现报告(VB)

面向对象方法设计与实现报告

—ATM机系统

软件0802班

高晓亮

200807040203

一、概要

根据ATM的需求分析,该系统设计为2个子系统:用户系统、银行工作人员系统。其中用户系统主要使用户在ATM上完成一些基本操作,例如:存款、取款、转账、查询余额、修改账户密码等银行工作人员系统主要用来管理用户账户、ATM机、事务。其具体功能和界面及代码将在下文叙述。

说明:该系统主要代码是用vb编写,数据库使用的是单机数据库access。

二、用户系统

A:主要界面介绍: 一)、待机界面:

1、功能:系统欢迎界面,点击模拟按钮开始模拟ATM机工作。

2、说明:由于没有找到合适的广告图片,所以待机默认先用蓝色背景代替。

3、界面文字动画代码如下:If Label5(0).Left > Me.ScaleWidth Then

Label5(0).Left = Me.Left100 End If

Label5(1).Move Label5(1).Left + 120

4、界面截图如下:

二)、登陆界面:

1、功能:a、密码框设置只能输入6位

B、密码输入3次错误,将冻结该账户

C、银行卡号不存在、冻结或密码错误,均不能进入系统

2、说明:因为各银行卡号位数不太一样,银行卡号位数并未设置。

3、登陆确认按钮代码如下: Private Sub Command27_Click()If Not Text7.Text = “" And Not Text8.Text = ”“ Then Dim sql As String sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”'“

Adodc1.RecordSource = sql

Adodc1.Refresh

If Adodc1.Recordset(”状态“)= ”冻结“ Then '判断该账户状态

MsgBox ”该账户已冻结!“

Text7.Text = ”“

Text8.Text = ”“

Else

sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”' and 密码=“ & Trim(Text8.Text)& ”“

Adodc1.RecordSource = sql

Adodc1.Refresh

If Adodc1.Recordset.EOF Then

MsgBox ”密码错误!“, 48, ”错误提示“

Text8.Text = ”“

count1 = count1 + 1

If count1 >= 3 Then '三次输入错误冻结该账户

Adodc1.Refresh

sql = ”select * from 账户 where 银行卡号='“ & Trim(Text7.Text)& ”'“

Adodc1.RecordSource = sql

Adodc1.Refresh

Adodc1.Recordset(”状态“)= ”冻结“

Adodc1.Recordset.Update

MsgBox(”三次输入错误,该账户已被冻结“)

End If

Else

Label10.Visible = False

Label11.Visible = False

Text7.Visible = False

Text8.Visible = False

Command27.Visible = False Command28.Visible = False Command14.Visible = True Command15.Visible = True Command16.Visible = True Command17.Visible = True Command18.Visible = True Command19.Visible = True Command24.Visible = True Ynum = Text7.Text Adodc2.Refresh ’添加事务 Adodc2.Recordset.AddNew

Adodc2.Recordset(”银行卡号“)= Ynum

Adodc2.Recordset(”事务类型“)= ”用户登录“

Adodc2.Recordset(”时间“)= Now()

Adodc2.Recordset(”事务描述“)= ”用户完成登陆“

Adodc2.Recordset.Update

Adodc2.Refresh Text7.Text = ”“ Text8.Text = ”“ End If End If Else MsgBox(”信息不全!请确认“)End If End Sub

4、界面截图如下:

三)、系统主界面

1、功能:ATM的主要功能陈列,供用户选择,其中包括存款、取款、转账、查询余额、修改密码、取卡、返回。当账户登录时,将在事务表中记录登录时间。

2、说明:由于所有按钮均只是用来调出对应的功能的界面,并没有实际功能,所以在此省略其按钮代码。

3、界面截图如下:

四)、存款界面

1、功能:a、只允许用户输入100的整数值

b、当文本框为空时报错

c、实现用户的存款功能

d、每存入一笔款,都将在事务表中记录该操作

2、存款代码如下:If Not Text12.Text = ”“ Then If Val(Text12.Text)Mod 100 = 0 Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)+ Val(Text12.Text)Adodc1.Recordset.Update Adodc1.Refresh Label15.Caption = ”存款成功“ ye = ye + Text12.Text Adodc2.Refresh Adodc2.Recordset.AddNew

Adodc2.Recordset(”银行卡号“)= Ynum

Adodc2.Recordset(”事务类型“)= ”存款“

Adodc2.Recordset(”时间“)= Now()

Adodc2.Recordset(”事务描述“)= ”用户存入“ & Text12.Text & ”元“

Adodc2.Recordset.Update

Adodc2.Refresh Text12.Text = ”“ Command33.Enabled = True Command32.Enabled = False Else MsgBox ”请输入100的整数“ End If Else Label15.Caption = ”无款可存“ End If End Sub

3、界面截图如下:

四)、取款界面

1、功能:a、用户按相对应数值的按钮进行取款

b、每个账户每天取款数不能超过2500

c、账户余额不足时,报错

d、用户每取走一笔款额,都将在事务表中记录取走金额和时间

2、说明:由于不同数值按钮的代码很相似,所以这里仅给出100按钮的代码

3、存款代码如下:Private Sub Command20_Click()Adodc1.Refresh If Adodc1.Recordset(”余额“)>= 100 Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)100 Adodc2.Refresh Adodc2.Recordset.AddNew

Adodc2.Recordset(”银行卡号“)= Ynum

Adodc2.Recordset(”事务类型“)= ”取款“

Adodc2.Recordset(”时间“)= Now()

Adodc2.Recordset(”事务描述“)= ”用户取走100元“

Adodc2.Recordset.Update

Adodc2.Refresh Else Label15.Caption = ”余额不足,取款失败“ End If End Sub

4、取款界面截图如下:

五)、查询余额界面

1、功能:实现用户查询对应账户的余额

2、查询余额代码如下:Private Sub Command17_Click()Command14.Visible = False Command15.Visible = False Command16.Visible = False Command17.Visible = False Command18.Visible = False Command19.Visible = False Label6.Visible = False Label7.Visible = False sql = ”select 余额 from 账户

where 银行卡号= '“ & Ynum & ”'“ Adodc1.RecordSource = sql Adodc1.Refresh Label8.Caption = Adodc1.Recordset.Fields(”余额“)Adodc2.Refresh Adodc2.Recordset.AddNew

Adodc2.Recordset(”银行卡号“)= Ynum

Adodc2.Recordset(”事务类型“)= ”查询余额“

Adodc2.Recordset(”时间“)= Now()

Adodc2.Recordset(”事务描述“)= ”查询余额“

Adodc2.Recordset.Update

Adodc2.Refresh Label9.Visible = True Label8.Visible = True End Sub

3、查询余额界面截图如下:

六)、转账界面

1、功能:a、实现用户转账

b、需2次确认账户信息,若信息输入不全,账户余额不足,2次输入不一样,均不可完成转账

c、用户每转一笔账,均将在事务表中记录转账金额和时间

2、转账代码如下:Private Sub Command30_Click()If Not Text11.Text = ”“ And Not Text10.Text = ”“ And Not Text9.Text = ”“ Then If Text10.Text = Text9.Text Then Adodc1.Refresh If Adodc1.Recordset(”余额“)>= Val(Text11.Text)Then Adodc1.Refresh Adodc1.Recordset(”余额“)= Adodc1.Recordset(”余额“)Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2Me.picLOAD.Width)/ 2 'Me.picLOAD.Top = Me.ScaleHeight / 2-Me.picLOAD.Height Me.picLOAD.Visible = True 'DoEvents '释放控制权

Me.ListView1.ListItems.Clear Dim addLIST As ListItem Dim ss As String Dim sql As String ss = App.Path + ”datadata.mdb“ Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=gxl;Persist Security Info=False;Data Source=“ & ss Adodc1.CommandType = adCmdText sql = ”select * from ATM“ Adodc1.RecordSource = sql Adodc1.Refresh '连接数据库

Do While Not Adodc1.Recordset.EOF Set addLIST = ListView1.ListItems.Add(, , Adodc1.Recordset!ATM机编号, , i)addLIST.SubItems(1)= IIf(IsNull(Adodc1.Recordset.Fields(”状态“).Value), Adodc1.Recordset.Fields(”状态“).Value)addLIST.SubItems(2)= IIf(IsNull(Adodc1.Recordset.Fields(”余额“).Value), Adodc1.Recordset.Fields(”余额“).Value)Adodc1.Recordset.MoveNext Loop Me.picLOAD.Visible = False End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index

Case Is = 2 '

ZhZCfrm.Show 1

Case Is = 3

' ZHZXfrm.Show 1

Case Is = 4

Call addLIST End Select End Sub

3、界面截图:

”“, ”“,六)、单位信息界面

1、功能:显示单位信息

2、代码: Private Sub cmdBC_Click()'修改银行信息 Dim s As String If Not Text1(0).Text = ”“ And Not Text1(1).Text = ”“ And Not Text1(2).Text = ”“ And Not Text1(3).Text = ”“ And Not Text1(4).Text = ”“ Then

s = ”update 银行信息 set 银行名称='“ & Text1(0).Text & ”',银行地址='“ & Text1(1).Text & ”',邮政编号='“ & Text1(2).Text & ”',负责人='“ & Text1(3).Text & ”', 联系电话='“ & Text1(4).Text & ”'“

Adodc1.RecordSource = s

MsgBox(”修改成功“)

Adodc1.Recordset.Update

Else

MsgBox ”修改信息不全,请检查!“

End If End Sub

Private Sub Form_Load()Dim ss As String Dim sql As String ss = App.Path + ”datadata.mdb“ Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=gxl;Persist Security Info=False;Data Source=“ & ss Adodc1.CommandType = adCmdText sql = ”select * from 银行信息“ Adodc1.RecordSource = sql Adodc1.Refresh '连接数据库 End Sub

3、界面截图:

七)、下面给出数据备份还原的代码 Private Sub a14_Click()On Error GoTo ERR_line newname = App.Path & ”datadata.mdb“ datapath = App.Path & ”backup“ & Date & ” 备份卡.bak“ FileCopy newname, datapath MsgBox ”数据已备份到

“ & datapath, 64, ”提示“ Exit Sub ERR_line: MsgBox ”不能完成数据备份!“, 48, ”运行错误“ End Sub

Private Sub a15_Click()On Error GoTo ERR_line

Me.CommonDialog1.ShowOpen

snewname = Me.CommonDialog1.FileName

sdatapath = App.Path & ”datadata.mdb“

If snewname <> ”“ Then

If MsgBox(”还原后将覆盖原有数据,确定还原吗?“, vbInformation + vbYesNo, ”提示“)= vbYes Then

FileCopy snewname, sdatapath

MsgBox ”数据已经成功还原!请重新登陆 “, 48, ”提示“

Unload Me

Formload.Show

Else

Exit Sub End If

End If Exit Sub

ERR_line: MsgBox ”不能完成数据还原,请进入系统后未做任何操作时进行!“, 48, ”运行错误" End Sub

四、数据库

本系统使用的是access数据库。数据库密码为gxl。本系统共有5张表,分别为:ATM,事务,系统用户表,银行信息,账户。

下面给出数据库的相关截图。

1、表图:

2、ATM的设计视图

3、事务的设计视图

4、系统用户表的设计视图

5、银行信息的设计视图

6、账户的设计视图

下载VB中串口通讯的实现word格式文档
下载VB中串口通讯的实现.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《VB编程实现文字闪烁》教案

    《VB编程实现文字闪烁》教案 授课课题:VB编程实现文字闪烁 授课时间: 授课地点: 授课班级: 授 课 人: 教学目的: 一、认知目标 1、理解文字闪烁程序的设计思想和设计方法 2、理解Select......

    VB实现窗口最小化小任务栏

    要实现窗口最小化必须满足以下条件:1:按下最小化按钮,窗体不可见2:最小化后,最小化窗体的图标必须出现在任务栏的通知区域中3:当双击通知区域中的图标时,窗体又显示出来,同......

    在WinCC中实现串行通讯的两种方法

    在WinCC中实现串行通讯的两种方法 0 引言 WinCC即Windows Ccontrol Center(视窗控制中心),是一个功能强大的全面开放的上位机监控系统,既可以用于小规模简单的过程监控, 也可以用......

    在DELPHI中实现与AB PLC的通讯

    在DELPHI中实现与AB PLC的通讯 【字体:大 中 小】 1 引言 美国罗克韦尔自动化公司的Allen-Bradley系列PLC是一个著名的可编程控制器产品,其产品体系基本上涵盖了工业控制产品......

    三菱PLC与PC上位机VB通讯

    三菱PLC通讯 三菱PLC与PC上位机VB通讯 三菱PLC:FX1N + FX1N-232-BD FX2N + FX2N-232-BD 计算机:Windows XP中文企业版 + Visual Basic 6.0中文企业版 Windows 98中文版 + Visu......

    基于VB实现复杂报表设计(合集)

    陕西理工学院毕业设计 基于VB实现复杂报表设计 (陕西理工学院 物理系 电子信息科学与技术07级2班,陕西 汉中 723000) [摘要] 本文介绍了报表设计的几种方法和以往报表设计......

    VB遍历文件目录的实现方法总结

    VB遍历文件目录的实现方法总结 2009-04-25 20:44VB遍历文件夹的实现方法总结一共三种,如下: 1 使用FSO对象模型 '=============================== '描述:需要Scripting类型......

    RS232转网络串口联网服务器帮助实现电力配网自动化

    RS232转网络串口联网服务器帮助实现电力配网自动化 在配网自动化中RTU/FTU/TTU之间的通讯连接正在从传统的串行通讯、无线通讯和电力线通讯向以太网方向转变。对于电力系统......