Windows XP下串口编程与案例分析

来源 :职业·下旬 | 被引量 : 0次 | 上传用户:jrwal
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  串口通信技术广泛用于远程监控和工业自动化领域,如视频、控制和数据采集等。而在实际工程中各种实时数据的保存,以及日后的查询功能往往是必不可少的。串口具有连接线少,通讯简单,得到了广泛使用。
  
  一、PC的RS-232接头
  
  PC的机箱后面都有串口。在应用中,不同系统连接方式不同,形式多种多样,其中最常用的连接方式是三线制连接,即使用软件握手信号或不用握手信号,也就是所说的流控制。这样就可以放弃复杂的硬件交换,而只使用XON/XOFF协议,在接收方不能接收更多数据时,可以发送一个XOFF(DC3即ASC13H);当它可以接收数据时,发送一个XON(DC1即ASC11H)来通知发送方可以接收更多的数据。 但应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。
  
  二、硬件基础
  
  PC机共有四个串行端口可被寻址,但是这其中只有两个可以用来连接外部设备,每个基地址都是作为一个初始化偏移量用在八个寄存器内,这些寄存器由串行端口控制寄存器8250来使用。
  
  三、基于WindowsXP下的应用程序
  
  Visual Basic6.0(以下简称VB)以其简单易学、32位面向对象的程序设计等特点,倍受广大计算机程序开发者的青睐。一般用VB开发串行通信程序有两种方法:一是利用Windows的通信 API函数,另一种是采用VB标准控件Mscomm来实现。
  利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点在于可实现的功能更丰富、应用面更广泛,更适合于编写较为复杂的低层次通信程序。采用这种方法编写串行端口通信程序一般可分为以下几个步骤:
  1.初始化串行端口
  首先用CreateFile函数打开指定串口,置参数中访问类型为GENER IC_READ |GENERIC _WRITE、共享模式为0、创建标志为OPEN_EXISTIN G、模板句柄为NULL。
  2.配置串口
   使用CommConfigDialog函数以对话框方式,设置波特率 、数据位、奇偶校验、停止位和流控制方式,并且可以恢复缺省值。
  3.超时控制
  调用GetCcommTimeO uts函数获得当前的设置,用SetCommTim eOuts函数来完成设置。
  4.数据传输
  读写串行端口与读写文件采用的函数相同,即ReadFile、WriteFi le。读写操作可分四种方式: 查询方式、同步I/O、异步(后台)I/O和事件驱动I/O。
  5.关闭串口
  程序的终止可以自动关闭串口,也可用函数CloseHandle(),以便释放所独占资源。VB通信控件Mscomm
  在VB6.0開发环境中,MSComm通信控件可直接从VB的ToolBox中加入窗体Form,即可用其进行通信。若ToolBox中无此控件,则用Tools的Custom Controls将MSComm,VBX从Windows的System子目录中加入VB的ToolBox中。
  MSComm控件有许多属性(Property),其中一些重要的属性如下:
  CommPort:设置串口号,类型为short ;
  Settings:设置串口通信参数,类型为Csting;
  PortOpen:设置或返回通信口的状态,类型为BOOL;
  InputMode:设置从缓冲区读取数据的格式,类型为long;
  Input:从接收缓冲区读取数据,类型为VARIANT;
  Output:向发送缓冲区写入数据,类型为VARIANT;
  InBufferCount:接收缓冲区中的字节数,类型为short ,
  OutBufferCount:发送缓冲区中的字节数,类型为short ,
  CommEvent:设置或返回Input每次读出的字节数,类型为short ,
  CommEvent:串口事件,类型为short 。
  其中串口号(CommPort)设置为1、2等,表示COM1、COM2。参数设置(Settings)的格式为“B,P,D,S”,B表示波特率,P表示奇偶校验(N:无校验,E:偶校验,O:奇校验),D表示字节有效位数,S表示停止位数。串口状态为BOOL变量,TRUE表示打开串口,FALSE表示关闭串口。InputMode使程序能方便地选择从缓冲区读取数据的格式,设置为0时,为字符串格式(Text);设置为1时,为二进制格式(Binary)。InputLen设置或返回的是用Input从缓冲区读字符串时每次读出的字符个数,这个性质对于读出数据块中长数据串非常有用。
  
  四、VB标准控件Mscomm编程实例
  
  1.PC机执行串口测试(COM1口2、3短接)
  (1)添加一个MSComm控件,Name属性为MSComm1,用来建立与串口的连接;
  (2)添加二个Text控件,Name属性分别为Text1、Text2;
  (3)添加三个CommandButton控件,Name属性分别为CmdSend 、CmdReceive、CmdExit 分别用来实现传送、接收、退出。
  2.部分源程序
  (1)使用命令按钮控件关闭通信端口结束系统:
  Private Sub CmdExit_Click()
  MSComm1.PortOpen = False
  End
  End Sub
  (2)使用命令按钮控件接收由通信端口传过来的字符串,并对其进行判断:
  Private Sub CmdReceive_Click()
  Dim buf$
  buf = Trim(MSComm1.Input)
  If Len(buf) = 0 Then
  txtReceive.Text = "Empty"
  Else
  txtReceive.Text = buf
  End If
  End Sub
  (3)使用命令按钮控件将数据由通信端口传送出去:
  Private Sub CmdSend_Click()
  MSComm1.Output = Trim(txtSend.Text)
其他文献
乌镇,又一次吸引了世界的目光!政要聚首,巨贾云集,互联网成了寒冬里的热话题。
党的十九大是在全面建成小康社会决胜阶段、中国特色社会主义进入新时代的关键时期召开的一次具有里程碑意义的大会。十九大报告对金融工作做出重要论述,是习近平新时代中国特
[摘 要]多媒体教学技术日新月异,电子课件演示已经成为当下使用频率最高的教学方式。但是数学课堂上使用多媒体仍需慎重,如果使用得当,固然会事半功倍,反之就会适得其反,因为多媒体教学仍存在不足之处。为了弥补多媒体教学的缺陷和不足,传统教学模式应继续保留并发挥其“剩余”价值。  [关键词]多媒体;学习主体;思维能力  [中图分类号] G623.5 [文献标识码] A [文章编号] 1007-9068
智能制造在广东又出亮点。近日,全国智能制造试点示范经验交流会暨智能制造装备应用现场经验交流会在东莞市召开,工业和信息化部部长苗圩、中国工程院院长周济、广东省省长朱
近年来,崇信县紧扣主基调、主战略,充分发挥国家可持续发展实验区、智慧城市试点和省级新型工业化、统筹城乡综合配套改革、电子商务进农村综合示范区等改革创新平台作用,发
[摘 要]语文教材是学生课堂学习最主要的载体,是学生认识世界、了解人生的重要抓手。我们应充分利用教材的特点,对学生进行积极的人格培养。在具体的课堂教学中,教师要从阅读教学的实际出发,以学生为教学的出发点,引导学生抓住文题、抓住人物、抓住内容,让学生走入文本,体验作者的情感,受到人格教育。  [关键词]阅读教学;积极人格;策略  [中图分类号] G623.2 [文献标识码] A [文章编号] 100
本文利用2006-2012年中国29个省市的国内生产总值、固定资产投资总额、就业人员数、能源消费量和资源税收入等数据,并基于这些数据构建计量模型,分析征收碳税对中国各省市经
[摘 要]语文教材中的选文大都文质兼美。对这样文章的教学,我们应引导学生朗读,让他们读出自我, 读出意蕴。在课堂上,教师要尊重学生的朗读主体地位,通过自己的适时范读,以唤醒学生的“自我”。只有这样,才能提高学生的朗读能力,让他们积累和运用语言,获得语文素养的提升。  [关键词]朗读;范读;意蕴  [中图分类号] G623.2 [文献标识码] A [文章编号] 1007-9068(2018)19-0
[摘 要]简约课堂是洗尽铅华的课堂,是本真的课堂。打造简约课堂,可以从教学目标、教学内容、教学方法、教学手段以及教学语言等方面进行设计,真正实现以学生为主体的课堂理想,让学生真学习,从而达到提升阅读教学质量的目的。  [关键词]课堂教学;简约课堂;教学目标;教学内容  [中图分类号] G623.2 [文献标识码] A [文章编号] 1007-9068(2018)28-0037-02  何谓“简约”
作文教学是小学语文教学的一个重点,也是一个难点,小学三年级作文起步更是让很多小学语文教师感到头疼。结合实践,探讨小学起步作文的教学方法:回顾主题,温习课文;引入课题,