串行通讯及其在VB中的实现

来源 :成功•教育 | 被引量 : 0次 | 上传用户:happyyoung
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  一、串行通讯的基本原理
  
  串行通讯是指外设和计算机之间使用一根数据信号线,数据在该信号线上按位进行传输,每一位数据都占据一个固定的时间长度。串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串并转换器),即当数据从外围设备输入计算机时,数据格式由位(bit)转化为字节数据;反之,当计算机发送下行数据到外围设备时,串口又将字节数据转化为位数据。
  串行通讯方式常采用RS-232串行通讯方式,一个完整的RS-232接口有22根线,采用标准的25芯插头座(或者9芯插头座),25芯和9芯的主要信号线相同。串行通讯口的连接采用7根线直接连接方式,通过两对应答信号线相连,可进行全双工传输。
  在Windows操作系统下,串行通讯在程序设计中实现一般有四种实现途径:① 汇编嵌入技术;②利用Windows API函数;③利用面向对象的软件开发工具编写串行通信类(即第3方提供的动态链接库)来实现;④利用串行通信控件MSComm实现。无论使用哪一种途径,其基本的操作步骤大致是一样的:首先初始化串口,比如端口号,波特率等属性,然后打开端口,通过接收缓冲区读上行数据,通过发送缓冲区写下行数据。最后通过事件驱动反映数据的到达与发送过程。
  
  二、串行通讯在VB中的实现
  
  Visual Basic 6.0提供的标准控件MSComm (Microsoft Communications Contro1)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。使用MSComm控件主要是通过事件来处理串行口的交互,例如,在串口接收缓冲区中有字符,CD或者RTS线上一个字符到达或一个变化发生时,可以利用MSComm 控件的OnComm事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。在实际应用中,一个MSComm控件对应一个串行端口。如果应用程序需要访问多个串行端口,必须有相应数量的MSComm控件与之对应。下面介绍一下此控件的主要属性:
  CommPort——设置或者返回串行端口号
  Settings——以字符串的形式设置和返回波特率,奇偶校验,数据位和停止位
  PortOpen——设置或返回通讯端口的状态,也可以打开和关闭一个端口
  Input——从接收缓冲区里获取或删除数据
  Output——给发送缓冲区里写数据
  在VB6开发环境当中,单击“工程”菜单栏,在下拉列表框中选择“部件”,之后将“Microsoft Comm Control 6.0”前面的方框打勾,再单击“确定”命令按钮即可。在窗体中添加一个加入MSComm控件,简单安排好窗体布局。
  (1)通讯参数设置:使用MSComm控件进行串口通讯之前,首先要对MSComm删控件进行初始化设置,初始化设置工作包括选择端口号、波特率、奇偶校验、数据位和停止位;设置通讯协议;设置输入、输出缓冲区的大小并清除输入输出缓冲区;设置接收到多少个字符才产生OnComm的接收事件;设置1次读取的字符数;设置接收数据的格式是二进制形式还是字符形式;最后打开串口。具体有关程序及说明如下。
  Option Explicit
  Public bdl As String’波特率
  Public jym As String’校验位
  Public sjw As String’数据位数
  Public tzw As String’停止位数
  Public dkh As String’端口号
  Public jymsz As String’端口设置字符串
  Private Sub Command1_Click()
  ’设置波特率
  bdl = Combo1.Text
  ’设置校验码
  If Combo2.Text = "无校验" Thenjym = "n"
  Else If Combo2.Text = "偶数校验" Thenjym = "e"
  Else If Combo2.Text = "标记校验" Thenjym = "m"
  Else If Combo2.Text = "奇数校验" Thenjym = "o"
  Else If Combo2.Text = "空格校验" Thenjym = "s"
  End If
  ’设置使用的端口号
  dkh = Combo3.Text
  ’设置数据位数
  sjw = Combo4.Text
  ’设置停止位数
  tzw = Combo5.Text
  ’设置使用的校验码方式
  jymsz = bdl & "," & jym & "," & sjw & "," & tzw
  Form2.Show
  Unload Me
  Unload Me
  End Sub
  Private Sub Form2_Load()
  Combo1.Text = bdl
  Combo2.Text = jym
  Combo3.Text = sjw
  Combo4.Text = tzw
  Combo5.Text = dkh
  MSComm1.Settings = jymsz
  ’设置输入、输出缓冲区的大小
  MSComm1.InBufferSize = 1024
  MSComm1.OutBufferSize = 512
  ’清除输入、输出缓冲区
  MSComm1.InBufferCount = 0
  MSComm1.OutBufferCount = 0
  ’设置接收到1个字符就产生接收的OnComm事件
  MSComm1.RThreshold = 1
  ’设置一次读取所有的字符
  MSComm1.InputLen = 0
  ’设置接收数据的格式为文本形式
  MSComm1.InputMode = comInput ModeText
  If MSComm1.PortOpen = False Then
  MSComm1.PortOpen = True
  End If
  ’打开串口
  If MSComm1.PortOpen = False Then
  MSComm1.PortOpen = True
  End If
  End Sub
  (2)发送过程。数据的发送是将数据发送到计算机的串口缓存,通过调用MSComm控件的Output属性来实现。发送过程:
  Private Sub Command1_Click()
  MSComm1.Output = Text1.Text
  End Sub
  (3)接收过程。数据的接收是一个从计算机串口缓存读取数据的过程。采用MSComm控件的OnComm事件处理,利用MSComm控件INPUT属性实现数据的接收。接收过程:
  Private Sub MSComm1_OnComm()
  ’先将原文本框清空
  Text2.Text = ""
  ’接收发送的文本数据,如果收到则在文本框中显示,否则该文本框无显示
  Text2.Text = Trim(MSComm1.Input)
  End Sub
  (4)程序执行完后关闭端口。
  Private Sub Form_Unload(Cancel As Integer)
  MSComm1.PortOpen = False
  Unload Me
  End Sub
  
  三、小结
  
  本文的例子虽然实现的功能很简单,但通过VB控件MSComm的Input和Output属性可以很方便的接收和发送串口缓冲区的数据,当然如果要编制较完善的通讯应用程序,还需要进行更深入的研究,比如通过使用“握手”的机制来增强通讯的安全性和稳定性,另外通过数据的重复发送达到收发数据的准确性等。
其他文献
[摘 要]新课标对以“字字落实”为目标、以串讲为手段的传统文言文教学提出了新的要求:“提高学生文化素养”,“重视优秀文化遗产的继承”、“用现代观念审视作品,评价其积极意义与历史局限”。本文以《劝学》的教学为例子,对这一目标作初步的实践与思考。  [关键词]文言文教学课标思想和文化现代观念    一、案例背景    《劝学》是高中语文教材中的传统篇目,苏教版《语文》把它列在了必修专题的第一篇,目的在
期刊
编者按:党的创新理论是我国社会发展的思想支撑和核心动力,是我国建设和谐社会,实现共同富裕的重要保障。大连舰艇学院教授方永刚始终把传播党的创新理论工作作为自己的神圣使命,为党的理论武装工作做出了突出的贡献。  20多年来,他真学、真信、真情传播、真诚实践党的理论,充分体现了共产党人的高度政治觉悟和优秀教师的高尚师德师风,受到党和政府的高度赞誉。日前,教育部党组下发通知,号召广大教师和教育工作者向方永
期刊
郭金来简介:  郭金来,男,1972年8月出生,工学博士,中共党员。  现任中国研究生人才网CEO,中国研究生人才网创始人。  武汉市青年联合会常委。  武汉市信息化青年人才协会副会长(共青团武汉市委主管)。  湖北省人才行业协会副会长(湖北省人事局主管)。  2002年,荣获第四届“武汉优秀青年科技创新奖”;  获“武汉市新长征突击手”称号;  2004年,荣获“武汉首届工厂青年十大新锐”的荣誉
期刊
编者按:2003年5月26日,国家教育部批准华中科技大学文华学院成立。文华学院的创业者们在几个月内创造出了当年筹建、当年通过国家教育部门审批、当年招生办学、当年进入正常教学运行轨道的“文华速度”。  ——创办第二年,文华学院在湖北的录取分数线高出全省同批次录取分近50分。  ——2005、2006年,报考文华学院的理工类考生人数居湖北省同批次院校的首位。  ——2005、2006年,文华学院连续两
期刊
顺应新一轮基础教育课程改革而产生的小组合作学习因其能充分发挥学生的主体作用,改善课堂内的社会心理气氛,大面积提高学生的学习成绩,促进学生养成良好的非认知的心理品质,被人们誉为是近十几年来,最重要和最成功的教学改革。我在平时的历史与社会课堂教学中多次尝试这一形式,初步领略到它的“魅力”,主要体现在以下方面:  第二,集思广益,拓展视野。子曰:“三人行,必有我师焉。”小组合作学习是同学之间互教互学、彼
期刊
[摘要]作为一个画家,埃舍尔所构造的世界中,每一种形象竟都是经过严密计算的结果。数学(主要在几何学方面)是他艺术的灵魂,但抛开其作品背后的数学命题,我们感受到的是美的秩序。通过对他作品的系统研究,我们能发现埃舍尔对连续、对称、变换、循环、无穷这些念头的着迷,他很擅长用平面和形象表达他内心的感受。  [关键词]艺术 科学 镶嵌图形 平面分割     古希腊的人们认为艺术与科学是造成世界平衡和谐的两个
期刊
《英语课程标准》倡导在教学中应积极促进英语学科和其他学科间的相互渗透和联系,培养学生的创新素质。因此,我注意将德育、科学、环保、艺术教育、健康教育渗透到英语课教学中,通过各学科的交融和优势互补,培养了学生的学习兴趣和自学能力,使学生的创新意识与创新能力有了很大提高。    一、以思想品德教育净化人,奠定创造性人才的思想基础    目前,大家正如火如荼地贯彻《纲要》精神,要有意识地将德育融入英语教学
期刊
班主任是一个班级的组织者、教育者和指导者,是学校领导实施开展教育、教学工作的得力助手,是学生学习、生活的导师。在新课程标准的新形势下,如何做好班主任工作,这是从事学生管理工作者亟待解决的首要问题。通过多年的班主任管理实践,我总结出了以下几点,与同行们商榷。    一、详细了解掌握学生情况    班主任应当比较详细和真实的了解、掌握学生各方面的情况,如学生家庭经济情况,父母的职业,家庭成员情况,特别
期刊
[摘 要]《阿Q正传》是中国新文学运动史上小说创作的一座丰碑,它通过阿Q典型形象的塑造,真实地反映了辛亥革命前后农村的经济生活、政治生活、意识形态上的斗争生活,形象地总结了辛亥革命失败的经验教训。《阿Q正传》以其深刻而广泛的政治历史内容,形象地反映了中国旧民主主义革命向新民主主义革命转变的历史必然要求。  [关键词]《阿Q正传》 辛亥革命 形象反映    《阿Q正传》所反映的是辛亥革命时期,大约在
期刊
[摘要]素质教育作为新形势下新的教育理论和方式,提上了中国教育改革的议事日程。如何在高校中开展和推进素质教育,成为摆在高校教育工作者面前的重要课题。本文详细论述了大学生素质教育的内涵及其特点,提出加强和改进大学生素质教育的几个途径。  [关键词]素质教育 “两课”教育 开拓创新    素质教育作为新形势下新的教育理论和方式,提上了中国教育改革的议事日程。转变教育思想,更新教育观念,深化教育改革,提
期刊