ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:728.49KB ,
资源ID:17522041      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17522041.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB串口通信程序实例Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB串口通信程序实例Word格式文档下载.docx

1、VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要新建一个工程。一个工程由窗体、标准模块、控件及应用所需的开发环境设置等组成。运行VB程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按钮,进入VB工程集成开发环境,窗体设计器中自动出现一个名为Form1的空白窗体。2程序界面设计向空白窗体添加各种控件,以完成预定的各种功能。开始一个项目的设计时,VB的工具箱中会有许多默认的控件让设计者予以选用,这些原本就出现在工具箱中的控件是内置控件,它提供了一些基本的系统设计组件给设计者,但功能比较特别的控件就不会出现在其中,如用来设计串口通信功能的控件MSComm

2、就不在其中。(1)添加串口通信控件MSComm。由于VB的串行通信组件并不会主动出现在工具箱里中,当我们需要MSComm控件时,首先要把它加入到工具箱中。让MSComm控件出现在工具箱中的步骤如下。选择“工程”菜单下的“部件”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”复选框,单击“确定”按钮后,在工具箱中就出现了一个形似“电话”的图标,它就是MSComm控件。工具箱中有了MSComm控件,就可以选择MSComm控件的图标后将其添加到程序窗体上,利用该控件编程,PC就可以通过VB实现与串口设备的串口通信了。图6-2 程序窗

3、体界面由于每个使用的MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行端口,必须添加多个MSComm控件。(2)为了实现连续的自动接收,将工具箱中的Timer控件添加到程序窗体上。(3)添加两个文本框控件:Text1 和Text2,用于输入要发送的字符和显示要接收的字符。(4)添加两个标签控件:Label1和Label2,作为发送和接收字符区的标签。(5)添加一个按钮控件:Command1执行发送字符命令。程序设计界面如图6-2所示。3属性设置从属性窗口设置属性时,只需从对象列表框中选择待设置属性的对象,然后从属性列表的左列选择属性,最后在属性列表的右列中输入或选择新的属性值。程

4、序窗体、控件对象的主要属性设置如表6-2所示。表6-2 窗体、控件对象的主要属性设置控 件 类 型主 要 属 性功 能Form(名称) = COMForm窗体控件BorderStyle = 3运行时窗体固定大小Caption = PC与PC串口通信窗体标题栏显示程序名称Label(名称) = Label1标签控件Caption = 显示接收字符区:标签文本(名称) = Label2Caption = 输入发送字符区:TextBox(名称) = Textsend文本框控件MultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用(名称) = Text

5、ReceiveCommandButton(名称) = Cmdsend按钮控件Caption = 发送字符 手动发送字符MSComm(名称) = MSComm1串口通信控件其他属性在程序中设置Timer(名称) = Timer1时钟控件Enabled = True时钟初始可用Interval = 500设置发送周期(ms)两台计算机中VB程序界面及属性设置应完全相同,尤其MSComm控件的InputMode和Settings属性值应相同。4程序代码设计程序要实现自动发送或读取,在VB程序中有两个方式可以达到,一是查询方式,利用查询事件是否发生,当发生时,去执行默认的程序代码。可以使用计时器控件(

6、Timer),该控件属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在计时器中的程序代码。下面是利用查询方式编写的PC与PC串口通信的参考程序,代码如下所示: 串口初始化Private Sub Form_Load() MSComm1.CommPort = 1 设置通信端口号为COM1 MSComm1.Settings = 9600,n,8,1 设置串口1参数 MSComm1.InputMode = 0 接收文本型数据 MSComm1.PortOpen = True 打开通信端口1End Sub 把字符通过串口发送出去Private Sub Cmdsend_

7、Click() If Textsend.Text = Then pp = MsgBox(发送的数据不能为空!, 16) Exit Sub End If MSComm1.Output = Trim(Textsend.Text) For i = 1 To 20000000 Next i 通过时钟控制来自动接收字符Private Sub Timer1_Timer() Dim buf$ buf = Trim(MSComm1.Input) 将缓冲区内的数据读入buf变量中 If Len(buf) 0 Then 判断缓冲区内是否存在数据 TextReceive.Text = TextReceive.Tex

8、t + Chr(13) + Chr(10) + buf /回车换行 关闭通信端口,停止程序运行Private Sub Cmdquit_Click() MSComm1.PortOpen = False Unload Me End Sub在Windows系统环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows系统的系统函数中,均包含了支持通信中断的功能。二是使用事件方式。MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接收的目的。下面是利用事件方式编写的PC与PC串口通信

9、的参考程序,界面设计与图6-2基本相同,区别是事件方式不需要时间控件。串口初始化设置通信端口号为COM1设置串口参数接收文本型数据 MSComm1.RThreshold = 1 接收缓冲区每收到一个字符都会使 MSComm 控件触发OnComm 事件打开通信端口1把字符通过串口发送出去启动定时器MSComm 的 OnComm 事件程序 由 CommEvent 属性值的不同,将各自的程序代码写入相关的子程序中只要 RThresold 中的设定字符数到达时便会使得 CommEvent 属性值变成 comEvReceive因此接收的子程序便会被执行Private Sub MSComm1_OnComm

10、() Select Case MSComm1.CommEvent 通过取代每一个 case 表达式来处理每个事件与错误 Case comEvCD CD 线的状态发生变化 Case comEvCTS CTS 线的状态发生变化 Case comEvDSR DSR 线的状态发生变化 Case comEvReceive buf = Trim(MSComm1.Input) 将缓冲区内的数据读入buf变量中 Case comEvSend End Select TextReceive.Text = TextReceive.Text & buf停止程序运行关闭通信端口,Private Sub Form_Unl

11、oad(Cancel As Integer)5运行程序程序设计、调试完毕,单击工具栏快捷按钮“启动”,运行程序。两台计算机同时运行本程序。首先在一台计算机程序窗体中发送字符区输入要发送的字符,如“我是第一组,收到请回话!”,单击“发送字符”按钮,发送区的字符串通过COM1口发送出去。如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,我是第2组!”,如果通信正常该字符串将显示在接收区中。程序运行界面如图6-3所示。图6-3 程序运行界面6.1.5.2 利用API函数实现字符型数据发送与接收运行VB,创,作为发送和接收字符区的标签。建标准的工程项目文件,设计程序窗体。图6-4 程序窗

12、体界面 添加两个TextBox控件,用于输入要发送的字符和显示需接收的字符。 添加两个Label控件 添加一个Timer控件,用于周期性地读取串口数据。 添加两个CommandButton控件,分别执行发送字符、关闭程序等命令。设计的程序界面如图6-4所示。2属性设置程序窗体、控件对象的主要属性设置如表6-3所示。表6-3 窗体、控件对象的主要属性设置 COMFormCaption = API串口通讯Label1Caption =发送数据区:标签Label2Caption =接收数据区:TextsendTextReceiveBTNSendCaption = 发送数据 手动间断发送字符BTNCl

13、oseComCaption = 关闭程序关闭程序TMRComm3程序代码设计 在程序标准模块SerialPort.bas的说明部分放置使用的API函数声明及所用的结构、常数的声明:Option ExplicitGlobal ComNum As LongGlobal bRead(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 cbI

14、nQue As Long cbOutQue As LongEnd TypeType COMMTIMEOUTS ReadIntervalTimeout As Long ReadTotalTimeoutMultiplier As Long ReadTotalTimeoutConstant As Long WriteTotalTimeoutMultiplier As Long WriteTotalTimeoutConstant As LongType DCB DCBlength As Long BaudRate As Long fBinary As Long fParity As Long fOut

15、xCtsFlow As Long fOutxDsrFlow As Long fDtrControl As Long fDsrSensitivity As Long fTXContinueOnXoff As Long fOutX As Long fInX As Long fErrorChar As Long fNull As Long fRtsControl As Long fAbortOnError As Long fDummy2 As Long wReserved As Integer XonLim As Integer XoffLim As Integer ByteSize As Byte

16、 Parity As Byte StopBits As Byte XonChar As Byte XoffChar As Byte ErrorChar As Byte EofChar As Byte EvtChar As ByteType OVERLAPPED Internal As Long InternalHigh As Long offset As Long OffsetHigh As Long hEvent As LongType SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandl

17、e As LongDeclare Function CloseHandle Lib kernel32 (ByVal hObject As Long) As LongDeclare Function GetLastError Lib () As LongDeclare Function ReadFile Lib (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As LongDeclare Fun

18、ction WriteFile Lib (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As LongDeclare Function SetCommTimeouts Lib (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As LongDeclare Function GetCommTimeouts Lib Declare

19、Function BuildCommDCB Lib Alias BuildCommDCBA (ByVal lpDef As String, lpDCB As DCB) As LongDeclare Function SetCommState Lib (ByVal hCommDev As Long, lpDCB As DCB) As LongDeclare Function CreateFile Lib CreateFileA (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long

20、, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As LongDeclare Function FlushFileBuffers Lib (ByVal hFile As Long) As Long窗体模块程序如下:初始化串口 If Not Init_Com(COM1:, ) Then MsgBox 端口 & 无效!发送字符Private Sub BTNSend_Cl

21、ick() If WriteCOM32(txt(2) & vbCr 255 Then WriteCOM32 Left$(COMString, 255) WriteCOM32 Right$(COMString, Len(COMString) - 255) Exit Function For LenVal = 0 To Len(COMString) - 1 bRead(LenVal) = Asc(Mid$(COMString, LenVal + 1, 1) Next LenVal retval = WriteFile(ComNum, bRead(0), Len(COMString), RetByt

22、es, 0) WriteCOM32 = RetByteshandelwritelpt:End Function读取数据Private Sub TMRComm_Timer() Dim Ans As String, i As Integer, RtnStr As String Ans = ReadCommPure() If Ans = Then Exit Sub RtnStr = RtnStr & CleanStr(Ans) txtRec.Text = RtnStr FlushComm从串口读取数据Function ReadCommPure() As StringOn Error GoTo handelpurecom Dim RetBytes As Long, i As Integer, ReadStr As String, retval As Long Dim CheckTotal As Integer, CheckDigitLC As Integer retval = ReadFile(ComNum, bRead(0), 255, RetBytes, 0) ReadStr = If (RetBytes 0) Then For i = 0 To RetBytes - 1 ReadStr = ReadStr & Chr(bRead(i) Else ReadCo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1