前言:VB串口通信的方法一般有两种:一是通过Windows的通信API进行通信;另一种是通过VB的标准控件MSComm来实现。这篇文章要讲的是上位机如何通过VB的串口控件MSComm和下位机进行串口通信的过程。
以下是给VB初学者推荐的两本书籍:

  1. 《Visual+Basic+6.0基础教程》
  2. 《Visual_Basic与RS-232串行通信控制》

其中,《Visual+Basic+6.0基础教程》中主要讲解了VB6.0的基本语法和操作,而《Visual_Basic与RS-232串行通信控制》详细的讲解了VB串口通信的操作,虽然我们现在大多数用的是USB接口,但本书还是提供了非常不错的实例,便于我们触类旁通。下面的串口通信基础教程是建立于读者已经具备初级VB语法知识和操作的假设之上。

MSComm控件串口通信开发

鉴于上面推荐的《Visual_Basic与RS-232串行通信控制》一书中很详细的讲解了关于使用MSComm控件进行串口通信的各种实例,这里就挑一些基础的操作进行分析,笔者更倾向于把《Visual_Basic与RS-232串行通信控制》当作一本手册用于随时查询。
1.添加MSComm控件
VB精简版找不到串口控件,VB完整版可以。所以在安装完VB完整版后,打开->新建标准EXE工程,点击 工程->部件->MicroSoft Comm Control 6.0 (SP6),就可以看见同老式电话座机一样的串口控件出现在工具箱中。



2.关于MSComm控件的属性
该控件的属性有很多,这里只介绍最基础的常用属性。

  1. CommPort属性
    用于设置或者返回通信连接端口号码,该控件仅限于16个端口,从1开始递增,值为1~16。

  2. Settings属性
    以字符串的形式设置初始化参数,格式为"BBBB,P,D,S",其中BBBB表示联机速率,P表示奇偶校验位检查方式,D表示数据位数,S表示停止位数,默认是"9600,N,8,1"。
    例如:MSComm1.settings = “9600,N,8,1”。

  3. PortOpen属性
    用于返回或设置通信端口连接状态,值为True和False。在使用串口前,必须先打开该端口,不然会报错;在串口使用完毕后,必须关闭该串口,不然等到VB程序窗口关闭结束时,会将端口一起关闭。

  4. InputMode属性:
    用于设置和返回Input取回的数据类型,可设置的数值是ComInputModeText(值:0,以字符方式从缓冲区中读入数据),ComInputModeBinary(值:1,以字节方式从缓冲区读入数据)。
    例如:MSComm1.InputMode = 1,表示以二进制字节方式读入数据。

  5. Input属性
    用于从缓冲区读取对方输入的数据,读取成功后,从缓冲区删除已经成功读取的数据。
    例如:Buffer = MSComm1.Input 。

  6. Output属性
    将要发送的数据送入发送缓冲区,一般的数据均是在被送到缓冲区后立即送出,当控件设有发送阈值属性(SThreshold)时,会生成事件。

  7. RThreshold属性:
    用于设置引发接收事件的字符数,当接收缓冲区达到所设置的接收事件时,会引发OnComm事件中的接收事件。此属性默认值为0,意思时此时无论缓冲区中有多少字符都不触发事件。所以想要触发接收事件时,必须改动它的默认值。例如:MSComm1.RThreshold = 20 。

  8. SThreshold属性
    该属性默认值为0,此时数据传输事件不会发生OnComm中的数据传输事件,如果在传输缓冲区的字符数少于该数值时,会产生OnComm的发送事件。
    例如:MSComm1.SThreshold = 20 ,当缓冲区的字符数为19时,CommEvent属性会被设置为comEvSend,触发OnComm事件。

  9. InBufferCount属性:用于返回在接收缓冲区中的字符数,该属性在设计阶段无法使用,在运行阶段可以把它设为0来清空接收缓冲区。
    例如:Count = MSComm1.InBufferCount ,返缓冲区的已接收到的字符数。

  10. CommEvent属性
    在通信错误或者事件发生时都会生成OnComm事件,CommEvent存有该错误或者事件的数值码。
    下面展示了两个常用的通信事件常数码:
    ComEvSend: 1 传输缓冲区的字符数比SThreshold少
    ComEvReceive : 2 缓冲区中接受到RThreshold个数字符,该事件将持续生成直到用Input属性从接收缓冲区中删除数据。
    (注:这里其实还有一个Handshaking属性,用于指定双方的握手协议,实现流量管制,但笔者做的实验是上位机PC和下位机MCU之间,按照自己预设的数据帧进行通信,不存在大量的突发数据传输,所以这是选择了它默认值没有握手协议,因此省略不提。)

Win10下VB6.0开发之串口通信基础(一)控件属性篇相关推荐

  1. Win10下VB6.0开发之串口通信基础(二)代码功能篇

    MSComm控件串口通信开发 1. MSComm控件的处理流程   MSComm在适当时候引发控件的处理流程主要分为两步: 1)通过事件驱动处理连接端口通信   在收发一个字符或者生一个事件时,不管是 ...

  2. Win10下VB6.0开发之错误--无法打开对象窗口和代码窗口

    错误:Win10下使用VB6.0打开一个.vbp文件时,打不开对象窗口和代码窗口 解决办法:找了很久之后才发现,笔者所用笔记本外接了扩展显示屏,在断开外接显示屏连接后,打开VB,再重新外接显示屏即可. ...

  3. visual studio开发工具的C#主流控件属性一览表

    visual studio开发工具的C#主流控件属性一览表 visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体  1.常 ...

  4. Windows10下VB6.0开发——常见控件使用整理

    前言:以下整理了一些常见控件的使用,关于串口通信的控件的使用,在之前文章介绍过. 1. 单选按钮 -- OptionButton   有很多场景中会需要用到单选按钮,使用单选按钮的基本原则是:在同一个 ...

  5. Win10下VB6.0开发之VB6.0的安装

    日前在做一个工控软件的开发项目,由于软件最终的运行环境是在Windows XP的下,考虑到兼容性问题,选择了visual basis 6.0.第一次上手VB6.0的开发,遇到了很多问题,在这里开个系列 ...

  6. Windows10下VB6.0开发——利用PictureBox控件实现数据点实时绘图

    前言:VB中可以利用PictureBox控件实现数据点实时绘图功能. 1. 控件PictureBox   下面是PictureBox的图标:   将该控件拖到目标位置后调整它的形状大小,修改它的背景色 ...

  7. Windows下VB6.0开发——VB程序断点调试与顺序执行不一致问题(通信原因)

    前言:这几天手上写的一段VB程序出现了断点调试与顺序执行结果不一致的情况,找问题找了很久,最后发现其实也是个能够注意的小问题,特此记录. 1. 程序架构   本次的实验结构如下,PC端的VB通过串口和 ...

  8. Windows10下VB6.0开发——常用数值处理函数工具

    前言:下面记录整理了VB中经常使用用于数据转换的工具函数. 数值处理 1. 取不大于n的最大整数--Int a = Int(-5.6) '=-6 a = Int(4.88) '=4 2. 四舍五入取整 ...

  9. Windows10下VB6.0开发——常用的字符串处理函数工具

    前言:下面记录整理了VB中经常使用用于字符串转换的工具函数. 字符串处理 1. 获取字符串长度--Len   Len函数中的一个参数是目标字符串,返回目标字符串的长度,例如num = Len(&quo ...

最新文章

  1. Fragment导入包的问题
  2. 让我去健身的不是漂亮小姐姐,居然是贝叶斯统计
  3. 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程
  4. Go基础:产生随机数
  5. P2525 Uim的情人节礼物·其之壱-全排列
  6. 什么是servlet?---总结一
  7. jsmind 线条_jsMind思维导图模式数据展示
  8. Excel中表单控件和ACTIVEX控件主要区别
  9. 爱企查爬虫selenium
  10. mysql驱动有什么用_什么是数据库驱动?
  11. 冯诺依曼计算机的英文简称,冯诺依曼计算机,von neumann machine,音标,读音,翻译,英文例句,英语词典...
  12. H2数据库入门,看这篇就对了
  13. WinSetupFromUSB制作多系统U盘引导启动
  14. 【豌豆荚 360助手】发布第一个私人项目
  15. 多线程管程法(生产者消费者问题)
  16. 以低功耗蓝牙便携医疗设备帮助改善癫痫患者治疗管理
  17. P1658 购物(贪心算法)
  18. Python-base编码和解码方法
  19. web前端培训多长时间
  20. 2016 UESTC Training for Dynamic Programming F - 柱爷与三叉戟不得不说的故事 压位dp

热门文章

  1. reinterpret_cast 最小demo
  2. iOS ffmpeg + libfdk-aac
  3. Matlab意识流速成班
  4. distinct返回null报错_在Java中如何避免“!=null”式的判空语句?
  5. 邮局解决方案 发邮件邮箱使用 系统邮件自动发送 邮件发送提醒 网易免费企业邮 设置自己的域名邮箱
  6. Python字符串的截取|Python练习题
  7. 大容量nc文件解析_分布式文件系统浅谈
  8. oracle怎样查询能利用索引,oracle怎样查询索引的使用情况
  9. mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍
  10. 表单提交_django 的ajax提交与表单提交记录