1 / 72

第 2 章 PC 串行通信编程

第 2 章 PC 串行通信编程. 第四讲 串口通信控件的基本知识. 一 . Mscom 控件的引用 1 引入原因 硬件 : RS-232 接口、 RS232 串口 软件: Mscomm 控件(又称电话盒控件) 2 引用方法 方法 1. VB — 工 程 — 部件 —“ Microsoft comm Control 6.0 ”— 确 定 方法 2. VB — 工 程 — 部件 — 浏 览 — MScomm32.ocx —“ Microsoft comm Control 6.0 ”— 确 定. 3 注意事项

apollo
Download Presentation

第 2 章 PC 串行通信编程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 PC串行通信编程

  2. 第四讲 串口通信控件的基本知识

  3. 一. Mscom控件的引用 1 引入原因 硬件: RS-232接口、RS232串口 软件:Mscomm控件(又称电话盒控件) 2 引用方法 方法1. VB—工程—部件—“Microsoft comm Control 6.0”—确定 方法 2. VB—工程—部件—浏览—MScomm32.ocx—“Microsoft comm Control 6.0”—确定

  4. 3 注意事项 (1)mscomm控件只有在vb的企业版及专业版里应用,在学习版中无法使用 (2)每开启一个新的项目,都要重新引入一个mscomm控件,如果开启的是以前的项目,则项目会自动搜索并加载此控件 (3)每个mscomm控件对应一个串行端口,如果应用程序要访问多个串行端口,必须使用多个mscomm控件 (4)大多数计算机只有1个端口,Com1

  5. 二. Mscomm控件简介 1 简介 Mscomm(Microsoft Communication Controls)是微软公司提供的简化windows下的串行通信编程的Active控件,它为应用程序提供了通过串行接口收发数据的简便方法。

  6. 2 Mscomm控件处理通信的方式 (1)事件驱动方式 事件驱动通信方式是处理穿行端口交互作用的一种非常有效的方法。 (2)查询方式(轮询) 在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式

  7. 3 Mscomm控件操作的步骤 (1)对象:首先要了解所要操作的对象—mscomm控件 (2)属性:设定该对象所具备的特性 (3)事件:该对象在系统执行的过程中因其他事件而发生的事情 (4)方法:当该对象被引发了某个事件后,系统或程序应该采用的相应步骤

  8. 三. Mscomm属性 1 Commport属性 设定或传回通信连接端口代号,程序必须指定所要使用的串行端口的号码 程序代码:Mscomm1.commport=1

  9. 2 settings:设定初始化参数。以字符串的形式设定或传回联机速度、同位位检查、数据位、停止位四个参数(BBBB,P,D,S) eg: Mscomm1.settings=“9600,n,8,1” 同 位 位 检 查

  10. 3 Portopen:设定或传回通信连接端口的状态

  11. 4 Input:从输入缓冲区传回并移除字符串 程序代码:text1.text=mscomm1.input 数据流动方向:缓冲区 程序 5 output:将一个字符串写入传输缓冲区 程序代码:mscomm1.output=“谁没有听课?” 数据流动方向:缓冲区 程序 6 inputlen :指定由串行端口读入的字符串长度 程序代码: Mscomm1.inputlen=10

  12. 7 Handshaking :指定通信两方的交握协议即流量控制。 交握协议的设定: 程序代码:mscomm1.Handshakin=1 思考:可以传送chr(19)吗?

  13. 8 Rthreshold:设定或传回引发接收事件的字符数 程序代码:对象名称.Rthreshold=20 9 Sthreshold:设定或传回引发传送事件的字符数 程序代码:对象名称.sthreshold=20 Rthreshold =20,字符数>=20程序才会从缓冲区读入信息 Rthreshold = 0,无论有多少字符均会被读取 Sthreshold =20,字符数<20程序才会把信息传入缓冲区 Rthreshold = 0,无论有多少字符均不会被传送

  14. 10 Commevent: 返回通信错误或事件发生时产生的oncomm事件的代码。 通 信 错 误 设 定:

  15. 通信事件设定

  16. 11 DTREnable:判断在通信是是否启用DTR线路 程序代码:对象名称.DTREnable=true 12 RTSEnable:决定是否使RTS线有效 程序代码:对象名称.RTSEnable=false 13 InbufferCount:传回在接收缓冲区的字符数 程序代码: Count%=对象名称.inbuffercount

  17. 14 InputMode:设定或传回Input属性传回的数据的形态 程序代码:mscomm1.inputmode=1 使用二进制形式: (1)在数据中嵌入了NULL等控制字符 (2)所运用的字符超过了ASCⅡ128 其他场合使用文本形式传出

  18. 四. Mscomm事件 • VB中mscomm控件可以产生oncomm事件。

  19. 第五讲串口通信的基本过程

  20. 一.RS-232串口通信的步骤 1 加入通信对象 2 设定通信端口号码,Commport属性 3 设定通信协议,Handshaking 4 设定传输速度等参数,Setting属性 5 设定其他参数,若必要时再加上其他的属性设定 6 开启通信端口,portopen属性 7 送出或读入字符串。使用input或output属性 8 完成后关闭通信端口

  21. 二. 回路测试 1. 原理:利用RS232上的接脚位置,将第二脚与第三脚连接在一起,形成短路。因此,第二脚与第三脚的电位变化将会相同,第二脚用于接收数据,第三脚用于发送数据,数据因此被接收,如此的流程形成数据自己传送自己接收的现象,即回路测试

  22. 2. 硬件连接 3. 画面设计

  23. (1)通信端口的打开 Private Sub Form_Load() MSComm1.PortOpen = True End Sub (2)传送信息 Private Sub Command1_Click() • MSComm1.output=txtsend.Text • End Sub 4. 程 序 代 码

  24. (3) 接收信息 • Private Sub Command2_Click() • Dim buf$ • buf = Trim(MSComm1.Input) • If Len(buf) = 0 Then • txtrecieve.Text = "empty" • Else • txtrecieve.Text = txtrecieve.Text &buf • End If • End Sub

  25. 4) 关闭通信端口 Private Sub Command3_Click() MSComm1.PortOpen = False End End Sub

  26. 5. 知识点 (1) Trim()函数 作用:使用附加的形势不断地将文字加上去 Eg:text1.text=Trim(text2.text) 注意:trim()指令会将所接收字符串前后的空格拿掉 (2) len() 作用:求字符串或文本的长度 Eg: text1.text=len(abcdef)

  27. 四. 自动读取传入的字符串 1. 原理:利用定时器的方式达到自动接收信息的目的 2.硬件连接

  28. 3. 画面设计

  29. 4.程序代码 (1)打开通信端口 Private Sub Form_Load() MSComm1.PortOpen = True End Sub (2)利用定时器控件实现信息的自动接收 Private Sub Timer1_Timer() If MSComm1.InBufferCount > 0 Then txtrecieve2.Text = txtrecieve2.Text + MSComm1.Input End If End Sub

  30. (3) 定时器控件的 激活\停止 Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled End Sub (4) 关闭通信端口 Private Sub Command2_Click() MSComm1.PortOpen = False End End Sub

  31. 五. 利用commevent属性与事件实现自动读取 1. 原理:利用Oncomm事件达到自动接收信息的目的 Select Case MSComm1.CommEvent Case comEvCD Case comEvCTS Case comEvDSR Case comEvRing Case comEvrecieve comEvSend End Select

  32. 2. 硬件连接

  33. 3. 画面设计

  34. 4. 程序代码 1) Private Sub Form_Load() MSComm1.PortOpen = True End Sub 2) Private Sub Command1_Click() MSComm1.Output =Trim(txtsend.Text) End 3)Private Sub Command3_Click() txtrecieve.Text = "" End Sub

  35. 4) 利用控件属性实现自动接收 Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvCD Case comEvCTS Case comEvDSR Case comEvRing Case comevrecieve txtrecieve.Text = txtrecieve.Text + Trim(MSComm1.Input) Case comEvSend End Select End Sub

  36. 5) Sub Private Sub Command2_Click() MSComm1.PortOpen = False End End Sub

  37. 六. 字符与字节 1. 数据的交换编码: Text模式:可见字符 Binary二进制模式:8位二进制码 UniCode:双字节字符(DBCS) 如“A”为4100,“中”为164,154 2. Inputmode的属性值 Inputmode=0 文本 Inputmode=1 二进制

  38. 3 字符转换成ASCII 格式:Asc(“要转换的字符”) Asc(“A”) ASCII转换成字符 格式:Chr(ascii值) Chr(65) 例题:Asc(chr(133))

  39. 4. Hex(Asc(“电”)) 答案:B971 5. 字符数计算 Len(“ABC中文”) LenB(“ABC中文”) 字符数 字节数

  40. 6.StrConv()函数 功能:英文以一个字节表示,中文以两个字节表示 格式:StrConv(“转换的字符串”,VBFromUnicode) VBFromUnicode:由Unicode转换成系统默认的字符码 VbUnicode:由系统默认的字符码转换成Unicode. A=lenB(StrConv(“ABC英文”, VBFromUnicode)

  41. 7.字节的传送 Private Sub Command1_Click() buf = Trim(Text1.Text) OutByte = StrConv(buf, vbFromUnicode) Comm1.Output = OutByte End Sub

  42. 8.字节的接收 Private Sub Command3_Click() buf = "" InByte = Comm1.Input For i = LBound(InByte) To UBound(InByte) buf = buf + Hex(InByte) + Chr(32) nest i Text2.Text = buf End Sub

  43. 第六讲 串口通信实例

  44. 一. 计算机与设备数据交换的步骤: • PC发出一个命令串:前导码、站号、数据、校验位 • 设备收到后,送出PC要求的数据 PC告诉设备已收到,或再次要求

  45. SOH 表头 STX 本文 ETX EOT 校验 ASCII码中的控制字符: • NUL 空项 • SOH 表头开始字符 • STX 本文开始 • ETX 本文结束 • EOT 发送结束 • ENQ 查询 • ACK 认可 • NAK 否认 • SYN 同步 • ESC 跳脱(打印机用)

  46. 二 .数据服务器的仿真 1. 目的:实现数据服务器的仿真。远程通过命令来获取相应的信息

  47. 2. 硬件连接

  48. 3. 画面设置

More Related