Visual-Basic串口通信程序设计典型实例电子教案.doc
《Visual-Basic串口通信程序设计典型实例电子教案.doc》由会员分享,可在线阅读,更多相关《Visual-Basic串口通信程序设计典型实例电子教案.doc(38页珍藏版)》请在咨信网上搜索。
1、第6章 VB串口通信程序设计典型实例利用VB开发串口通信程序既可以使用MSComm控件也可以调用Windows API函数实现。不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。在本章提供的串口通信程序设计中,除了PC与PC串口通信外,PC与单片机、PC与智能仪表、PC与PLC、PC与GSM短信模块等串口通信任务的实现均采用MSComm控件。6.1 PC与PC串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
2、本设计通过两台PC串口3线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。6.1.1 PC与PC串口通信程序设计目的(1)掌握PC与PC串口通信的线路连接方法。(2)利用MSComm控件和API函数实现PC与PC串口通信的程序设计方法。6.1.2 PC与PC串口通信程序设计用软、硬件本设计用到的硬件和软件清单如表6-1所示。表6-1设计用软、硬件序 号名 称数 量1PC或IPC22串口通信线(三线制)13Visual Basic 6.016.1.3 PC与PC串口通信程序硬件线路图线路说明,在计算机通电前,按图6-1所示将两台PC通过串口线连接起
3、来:计算机A串口COM1端口的TXD与计算机B串口COM1端口的RXD相连,计算机A串口COM1端口的RXD与计算机B串口COM1端口的TXD相连,计算机A串口COM1端口的GND与计算机B串口COM1端口的GND相连。计算机B计算机A图6-1 PC与PC串口通信线路6.1.4 设计任务利用MSComm控件和VB API函数编写程序实现PC与PC串口通信。任务要求,两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。实际上就是编写
4、一个简单的双机聊天程序。6.1.5 任务实现6.1.5.1 利用MSComm控件实现字符型数据发送与接收1建立新工程VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要新建一个工程。一个工程由窗体、标准模块、控件及应用所需的开发环境设置等组成。运行VB程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按钮,进入VB工程集成开发环境,窗体设计器中自动出现一个名为Form1的空白窗体。2程序界面设计向空白窗体添加各种控件,以完成预定的各种功能。开始一个项目的设计时,VB的工具箱中会有许多默认的控件让设计者予以选用,这些原本就出现在工具箱中的控件是内置控件,它
5、提供了一些基本的系统设计组件给设计者,但功能比较特别的控件就不会出现在其中,如用来设计串口通信功能的控件MSComm就不在其中。(1)添加串口通信控件MSComm。由于VB的串行通信组件并不会主动出现在工具箱里中,当我们需要MSComm控件时,首先要把它加入到工具箱中。让MSComm控件出现在工具箱中的步骤如下。选择“工程”菜单下的“部件”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”复选框,单击“确定”按钮后,在工具箱中就出现了一个形似“电话”的图标,它就是MSComm控件。工具箱中有了MSComm控件,就可以选择MSCo
6、mm控件的图标后将其添加到程序窗体上,利用该控件编程,PC就可以通过VB实现与串口设备的串口通信了。图6-2 程序窗体界面由于每个使用的MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行端口,必须添加多个MSComm控件。(2)为了实现连续的自动接收,将工具箱中的Timer控件添加到程序窗体上。(3)添加两个文本框控件:Text1 和Text2,用于输入要发送的字符和显示要接收的字符。(4)添加两个标签控件:Label1和Label2,作为发送和接收字符区的标签。(5)添加一个按钮控件:Command1执行发送字符命令。程序设计界面如图6-2所示。3属性设置从属性窗口设置属性时,
7、只需从对象列表框中选择待设置属性的对象,然后从属性列表的左列选择属性,最后在属性列表的右列中输入或选择新的属性值。程序窗体、控件对象的主要属性设置如表6-2所示。表6-2窗体、控件对象的主要属性设置控 件 类 型主 要 属 性功 能Form(名称) = COMForm窗体控件BorderStyle = 3运行时窗体固定大小Caption = PC与PC串口通信窗体标题栏显示程序名称Label(名称) = Label1标签控件Caption = 显示接收字符区:标签文本Label(名称) = Label2标签控件Caption = 输入发送字符区:标签文本TextBox(名称) = Textse
8、nd文本框控件MultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用TextBox(名称) = TextReceive文本框控件MultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用CommandButton(名称) = Cmdsend按钮控件Caption = 发送字符 手动发送字符MSComm(名称) = MSComm1串口通信控件其他属性在程序中设置Timer(名称) = Timer1时钟控件Enabled = True时钟初始可用Interval = 500设置发送周期(ms)两台计算机
9、中VB程序界面及属性设置应完全相同,尤其MSComm控件的InputMode和Settings属性值应相同。4程序代码设计程序要实现自动发送或读取,在VB程序中有两个方式可以达到,一是查询方式,利用查询事件是否发生,当发生时,去执行默认的程序代码。可以使用计时器控件(Timer),该控件属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在计时器中的程序代码。下面是利用查询方式编写的PC与PC串口通信的参考程序,代码如下所示: 串口初始化Private Sub Form_Load() MSComm1.CommPort = 1 设置通信端口号为COM1 MSCo
10、mm1.Settings = 9600,n,8,1 设置串口1参数 MSComm1.InputMode = 0 接收文本型数据 MSComm1.PortOpen = True 打开通信端口1End Sub 把字符通过串口发送出去Private Sub Cmdsend_Click() If Textsend.Text = Then pp = MsgBox(发送的数据不能为空!, 16) Exit Sub End If MSComm1.Output = Trim(Textsend.Text) For i = 1 To 20000000 Next iEnd Sub 通过时钟控制来自动接收字符Priv
11、ate Sub Timer1_Timer() Dim buf$ buf = Trim(MSComm1.Input) 将缓冲区内的数据读入buf变量中 If Len(buf) 0 Then 判断缓冲区内是否存在数据 TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf /回车换行 End IfEnd Sub 关闭通信端口,停止程序运行Private Sub Cmdquit_Click() MSComm1.PortOpen = False Unload Me End Sub在Windows系统环境下,串口是系统资源的一部分。应用
12、程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows系统的系统函数中,均包含了支持通信中断的功能。二是使用事件方式。MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接收的目的。下面是利用事件方式编写的PC与PC串口通信的参考程序,界面设计与图6-2基本相同,区别是事件方式不需要时间控件。串口初始化Private Sub Form_Load() MSComm1.CommPort = 1 设置通信端口号为COM1 MSComm1.Settings = 9600,n,8,1 设置串口参数 MSComm1.In
13、putMode = 0 接收文本型数据 MSComm1.RThreshold = 1 接收缓冲区每收到一个字符都会使 MSComm 控件触发OnComm 事件 MSComm1.PortOpen = True 打开通信端口1End Sub把字符通过串口发送出去启动定时器Private Sub Cmdsend_Click() If Textsend.Text = Then pp = MsgBox(发送的数据不能为空!, 16) Exit Sub End If MSComm1.Output = Trim(Textsend.Text)End SubMSComm 的 OnComm 事件程序由 CommE
14、vent 属性值的不同,将各自的程序代码写入相关的子程序中只要 RThresold 中的设定字符数到达时便会使得 CommEvent 属性值变成 comEvReceive因此接收的子程序便会被执行Private Sub MSComm1_OnComm() Dim buf$ Select Case MSComm1.CommEvent 通过取代每一个 case 表达式来处理每个事件与错误 Case comEvCD CD 线的状态发生变化 Case comEvCTS CTS 线的状态发生变化 Case comEvDSR DSR 线的状态发生变化 Case comEvReceive buf = Trim
15、(MSComm1.Input) 将缓冲区内的数据读入buf变量中 Case comEvSend End Select TextReceive.Text = TextReceive.Text & bufEnd Sub停止程序运行Private Sub Cmdquit_Click() Unload MeEnd Sub关闭通信端口,Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = FalseEnd Sub5运行程序程序设计、调试完毕,单击工具栏快捷按钮“启动”,运行程序。两台计算机同时运行本程序。首先在一台计算机程序窗体中发送
16、字符区输入要发送的字符,如“我是第一组,收到请回话!”,单击“发送字符”按钮,发送区的字符串通过COM1口发送出去。如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,我是第2组!”,如果通信正常该字符串将显示在接收区中。程序运行界面如图6-3所示。图6-3 程序运行界面6.1.5.2 利用API函数实现字符型数据发送与接收1建立新工程运行VB,创建标准的工程项目文件,设计程序窗体。图6-4 程序窗体界面 添加两个TextBox控件,用于输入要发送的字符和显示需接收的字符。 添加两个Label控件,作为发送和接收字符区的标签。 添加一个Timer控件,用于周期性地读取串口数据。 添
17、加两个CommandButton控件,分别执行发送字符、关闭程序等命令。设计的程序界面如图6-4所示。2属性设置程序窗体、控件对象的主要属性设置如表6-3所示。表6-3窗体、控件对象的主要属性设置 控 件 类 型名 称主 要 属 性功 能FormCOMFormBorderStyle = 3运行时窗体固定大小Caption = API串口通讯窗体标题栏显示程序名称LabelLabel1Caption =发送数据区:标签LabelLabel2Caption =接收数据区:标签TextBoxTextsendMultiLine = True允许多行显示ScrollBars = 2-Vertical垂直
18、滚动条可用TextBoxTextReceiveMultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用CommandButtonBTNSendCaption = 发送数据 手动间断发送字符CommandButtonBTNCloseComCaption = 关闭程序关闭程序TimerTMRCommInterval = 500设置发送周期(ms)3程序代码设计 在程序标准模块SerialPort.bas的说明部分放置使用的API函数声明及所用的结构、常数的声明:Option ExplicitGlobal ComNum As LongGlobal bR
19、ead(255) As ByteType COMSTAT fCtsHold As Long fDsrHold As Long fRlsdHold As Long fXoffHold As Long fXoffSent As Long fEof As Long fTxim As Long fReserved As Long cbInQue As Long cbOutQue As LongEnd TypeType COMMTIMEOUTS ReadIntervalTimeout As Long ReadTotalTimeoutMultiplier As Long ReadTotalTimeoutC
20、onstant As Long WriteTotalTimeoutMultiplier As Long WriteTotalTimeoutConstant As LongEnd TypeType DCB DCBlength As Long BaudRate As Long fBinary As Long fParity As Long fOutxCtsFlow As Long fOutxDsrFlow As Long fDtrControl As Long fDsrSensitivity As Long fTXContinueOnXoff As Long fOutX As Long fInX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual Basic 串口 通信 程序设计 典型 实例 电子 教案
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。