logo资料库

基于VB6.0的PC机与单片机间的串口通信.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
1 2 基于 VB6. 0 的 PC 机与单片机间的串口通信 (1. 湖北工学院 ,湖北 武汉 430068 ;2 武汉理工大学 ,湖北 武汉 430063) 丁建军1 ,2 ,周国柱1 ,陈定方2 SCM between PC and Single Chip Microcomputer Based on VB6. 0 DING Jian jun1 ,2 ,ZHOU Guo zhu1 ,CHEN Ding fang2 (1. Hubei Polytechnic University ,Wuhan 430068 ,China ;2. Wuhan University of Technology ,Wuhan 430063 ,China)   摘要 :介绍了如何使用 VB6. 0 实现 PC 机与现 场监控单片机之间的串口通信 ,包括 RS 232 串口 , 通信控件 MSComm 的属性 、事件和方法 ,给出了利用 MSComm 控件的现场监控串口通信程序的设计 。 关键词 :串行通信 ;VB6. 0 ;微机 中图分类号 :TP311 文献标识码 :B 文章编号 :1001 2257 (2004) 02 0047 03 Abstract :This paper instruduces how to realize the communication between PC and single chip microcomputer of monitoring on It includes RS 232 ,and the propertys ,the events and the methods of MSCom. At last , the paper designs a simple communication pro spot. gramme based on MSCom for monitoring on the spot. the Key words :SCM ;VB6. 0 ;microcomputer 0  引言 VB6. 0 是一种功能强大 、简单易学 、可视化的程 序设计语言 。其中 MSComm 通信控件提供了一系列 标准通信命令的接口 ,它允许上位机与其他通信设 备 (如 Modem) 建立串口连接 ,还可以发送命令 、进行 数据交换以及监视和响应在通信过程中可能发生的 各种错误和事件 ,从而可以利用它创建高效实用的 串行通信程序 。 另外 ,单片机以其体积小 、价格低 、抗干扰性能 好等优点 ,在现场监控和数据采集系统中得到广泛 的应用 ,单片机采集到的数据和现场状态通过串行 通讯 ,传送到 PC 机 ,进行分析 、存储或显示 ,PC 机的 命令和控制通过串行口传送到单片机 ,以监控其他 设备的运转 。因此 ,串行通讯成为了现场监控系统与 收稿日期 :2003 06 23 机械与电子 2004 (2) 上位机联系的桥梁 。 1  串口通信的基本知识1 - 3 ] PC 机一般都有 1 个或 2 个串行端口 ,依次为 COM1 、COM2 。这些串口提供了外部设备与计算机进 行数据传输和通信的通道 。RS 232 是美国电子工 业协会 ( EIA) 制定的关于数据终端通讯装置 (如 Mo dem) 之间相互连接的标准接口 。在数据采集和现现 场监控系统中得到广泛的应用 。 由于 PC 机串行口 RS 232 的电气特性符合 EIA RS232C 标准 ,而单片机的串行口的电气特性 为 TTL 电平 。因此为了使两者的硬件连接 ,通常用 1489 ,1488 芯片对两者进行电平转换 。 2  MSComm 控件介绍 4 ] 在标准串口通信方面 ,VB6. 0 提供了具有强大 功能的通信控件 MSComm ,文件名为 MSComm. VBX。 该控件可设置串行通信的数据发送和接收 ,包括对 串口状态 、串口通信的信息格式和协议进行设置 。采 用标准的十位串行通信 ,包括 8 位标准数据 、1 位数 据的起始位和 1 位数据的停止位 。每个通信控件对 应一个串口 ,可以设计多个通信控件来访问多个通 信口 。 MSComm 控件提供了一系列标准通讯属性和方 法 。使用它可以建立起应用程序与串行端口的联结 。 该控件屏蔽了通信过程中的底层操作 ,开发人员只 需要设置和监视 MSComm 控件的属性和事件 ,就很 容易的实现串行通讯 。 2. 1  在工程中加入 MSComm 控件 由于 MSComm 控件不属于 VB6. 0 工具箱中提 供的最基本的控件 ,要调用该控件 ,首先要在 VB 环 境中添加该部件 ,即在菜单“工程" 的选项“部件" 中 的控件列表中添选择 Microsoft Comm Control 6. 0 即 ·74·
1 2 串的长度 。Visual Basic 程序可使用 Input 命令将存放 在输入缓存区的字符读入 ,但要指定所读入的字符 长度则需要设置这个属性 。InputLen 的默认值为 0 , 此值会使 Input 命令一次读取所有缓存区中的数据 。 对固定字符串的长度进行特别的运算或判断 ,就必 须使用 InputLen 属性 。 g. InBufferCount 属性 。用于返回在接收缓存区的 中的字符数 。该属性在设计阶段无法使用 。InBuffer Count 是指已经接收 ,并在接收缓存区中等待读取的 字符数 。可以把其设置为 0 ,以清除接收缓存区 。 h. InputMode 属性 。用于设置或返回 Input 属性 取回的数据形态 。有文本形式和二进制形式 。 i. Rthreshold 属性 。用于设置或返回引发接收事 件的字符数 ;即属性页上的“最小接收字符数" 。当接 收缓存区达到所设置的字符数时 , 将会引发 On Comm 事件中的接收事件 。此属性的默认值是 0 ,其 意义是无论缓存区中有多少字符均不引发接收事 件 。当其属性值为 1 时 ,则缓冲区中每接收到一个字 符就引发一次 OnComm 事件 ,以便及时从缓冲区取 走数据 。 j. Sthreshold 属性 。设置或返回发送缓冲区中的 最少字符数 。 k. CommEvent 属性 。返回最近的通讯事件或错 误的数字代码 。当 CommEvent 属性值为常数 ComEv Receive = 2 时 ,收到 Rthreshold 个字符 , 就会触发 OnComm 事件 ,直到用 Input 属性从接收缓冲区中取 出数据 。 2. 3  MSComm 控件的 OnComm 事件 控件 MSComm 提供了一个事件 OnComm ,该事 件可以截取串口的任何消息 ,转入事件处理程序 。当 有串口事件或错误发生时 ,VB 会立刻触发一个 On Comm 事件 ,程序就会自动转入 OnComm 事件处理程 序中 。在 OnComm 事件处理过程中 ,可以通过判断 CommEvent 属性值 ,对于不同的属性值转入不同的 事件处理过程中 。 2. 4  处理通讯方式 MSComm 控件提供下列 2 种处理通讯的方式 : a . 查询方式 。查询方式实质上还是事件驱动 ,但 在有些情况下 ,这种方式显得更为便捷 。在程序的每 个关键功能之后 ,可以通过检查 CommEvent 属性的 值来查询事件和错误 。如果应用程序较小 ,并且是自 保持的 ,这种方法可能是更可取的 。 机械与电子 2004 (2) 可 ,通过如上步骤 ,工具栏中就会出现我们需要的通 信控件 MCSomm ,选中该控件 ,再放置到窗体上就能 在程序中方便的使用了 。 2. 2  与程序设计有关的 MSComm 控件属性 在程序设计中要用到很多 MSComm 控件的重要 属性 ,其中常用的属性有 : a . Commport 属性 。设置或返回通信连接端口号 。 程序必须指定所要使用的串行端口号 ,Windows 系 统会自动使用所设置的通信端口与外界进行通信 。 程序也可以借助此属性返回所使用的端口号 。通信 端口号可以设置为 1 到 16 ,超过 16 会产生错误信 息 。为保证通信控件的正常运行 ,通信端口是否正 常 ,可参考控制面板 设备管理器中的端口项 目 ,一般只有 COM1 和 COM2 2 个端口可供选择 。 系统 b. Settings 属性 。用于设置初始化参数 。以字符 串形式设置或返回传输数据速率 、校验位 、数据位和 停止位 4 个参数. 其格式为“BBBB , P ,D , S" , 其中 BBBB 表示数据传输速率 (波特率) ,P 为校验方式 ,D 表示数据位 ,S 表示停止位数 。缺省值为“9 600 ,N , 8 ,1" ,表示所使用的通信端口以每秒 9 600 位的速度 进行数据传输 ,不做奇偶校验 ,每个数据单元是 8 位 ,停 止 位 为 1 位 。传 输 速 率 可 以 是 110 、300 、 6 0 0 、1 2 0 0 、2 4 0 0 、9 6 0 0 、1 4 4 0 0 、1 9 2 0 0 、2 8 8 0 0 、 38 400 、56 000 、128 000 、256 000 ,其中后 4 个为保留 给高速传输装置使用 ,可以根据具体通信设备以及 工作要求设定合适的波特率 。Settings 设置完成之 后 ,所传输和接受的字符串便以此设置为准 ,使用 RS 232 通信的双方 ,设置必须一样 ,彼此才能正常 顺利的通信 ,否则双方不能正确地接收到所传输的 数据信号 。 c. PortOpen 属性 。用于设置或返回通信连接端 口的状态 。使用前必须将要使用的串行接口打开 ;而 在使用完毕后 ,也必须执行关闭操作 。串行通信的各 项功能都是在 PortOpen 的 Ture 和 False 之间完成 的 。 d. Input 属性 。用于从输入缓存区返回并删除字 符 。程序靠这个命令将双方传到输入缓存区中的字 符读进来 ,并清除缓存区中已经被读取的字符 。 e. Output 属性 。用于将一个字符串写入输入缓 存区 。当程序需要向对方传输字符串的时候 ,可以使 用此命令字将字符串写入缓存区 。 f . InputLen 属性 。用于指定由串行端口读入字符 ·84·
1 2 b. 事件驱动方式 。事件驱动通讯是处理串行端 口交互作用的一种非常有效的方法 。在许多情况下 , 在事件发生时需要得到通知 ,如在串口接收缓冲区 中有字符 , 或者 Carrier Detect ( CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时 。 在这些情况下 ,可以利用 MSComm 控件的 On Comm 事件捕获并处理这些通讯事件 。只要 Com mEvent 属性发生变化 (即产生了通信事件或通信错 误) 就能产生 OnComm 事件 ,然后在该事件中来判断 CommEvent 的属性值 ,并作出相应的处理 。这种方法 的优点是程序响应及时 ,可靠性高 。 3  设计串行通信程序 首先约定 ,PC 机与单片机通信使用 PC 机的串 口 1 (COM1) ,波特率为 9 600 ,信息格式为 8 个数据 位 ,1 个停止位 ,无奇偶校验位 。 采用事件驱动方式 ,利用 MSComm 控件的 On Comm 事件捕获并处理通信事件 。 程序源代码如下 : Private Sub Form1-load() Form1. show ‘设置串口 comm1. commport = 1  ‘使用串口 1 comm1. settings = “9 600 , n , 8 , 1"  ‘波 特 率 9 comm1. Output = outstring  ‘发送数据 Do Until InStr (instring ,“$" &vbCrlf)  ‘接收单片机 回传数据 ,直到收到“$" DoEvents instring = instring&comm1. input Loop Text2. Text = instring  ‘显示接收到的数据 Comm1. PortOpen = false  ‘关闭串口 End Sub Private Sub Command2- Click() End  ‘退出 End Sub 将上述程序进行稍微修改 ,就可应用到数据采 集和现场监控系统中 ,实现数据的串行通信 。 4  结束语 目前 ,PC 机与单片机串口通信在很多领域得到 了广泛的应用 ,并朝着远程通信 、网络通信的方向发 展 ,如多台 PC 机和多台单片机连接形成网络 ,或 PC 机串口通过 Modem 与远程的单片机通信 5 - 6 ] 。另外 , 在 Windows 环境下的串口通信编程更具备设备无关 性 ,用户对串口的控制变得相对容易 ,大大缩短了软 件开发周期 。 600 ,无奇偶校验位 ,8 位数据位 ,1 位停止位 comm1. Inputlen = 0  ‘读取接收缓冲区的所有 参考文献 : 1 ]  杨光友. 单片微型计算机原理与接口技术 M . 北京 : 字符 comm1. OutBufferSize = 512  ‘设置发送缓冲区 为 512 字节 comm1. InBufferSize = 512  ‘设置接收缓冲区为 512 字节 comm1. InputMode = 0  ‘设置接收的数据格式 为文本格式 中国水利水电出版社 ,2002. 2 ]  王福瑞. 单片微机测控系统大全 M . 北京 :北京航空 航天出版社 ,1997. 3 ]  何  维. WIN 环境下微机与 8031 单片机的串行异步通 信J ]半导体技术. 2001 , (5) :29 - 54. 4 ]  清源计算机工作室. Visual Basic 6. 0 开发宝典 M . 北 京 :机械工业出版社 ,1999. 5 ]  王锡淮. 船舶主机遥控仿真系统中串行通信的实现. 船 comm1. Rthreshold = 1  ‘设置每一个字符到接 舶J . 2001 , (4) :56 - 59. 收缓冲区都会触发接收事件 comm1. Portopen = true  ‘打开串口 End Sub Private Sub Command1- Click() Dim outstring ,instring As String outstring = Text1. Text &“$"  ‘输出字符串 6 ]  王令其. 基于 VB 的 P FMS 现场监控系统. 制造技术 与机床 J . 2003 , (2) :59 - 61. 作者简介 :丁建军  (1969 - ) ,男 ,湖南益阳人 ,湖北工学院讲 师 ,武汉理工大学博士研究生 ,研究方向为智能制造与控制。 机械与电子 2004 (2) ·94·
分享到:
收藏