Windows下VB6.0开发——VB程序断点调试与顺序执行不一致问题(通信原因)
前言:这几天手上写的一段VB程序出现了断点调试与顺序执行结果不一致的情况,找问题找了很久,最后发现其实也是个能够注意的小问题,特此记录。
1. 程序架构
本次的实验结构如下,PC端的VB通过串口和转接板通信,而转接板又通过串口和控制器通信。
2. 通信转接
上述架构中的两个UART通信条件如下:
2.1 PC
- 通信设置:“115200,o,8,2”
- 发送数据帧间隔:50ms
- 接收数据帧:实时接收数据到缓冲区,将接收数据填充到缓冲区末尾
2.2 转接板
2.2.1 与PC通信
- 通信设置:“115200,o,8,2”
- 发送数据帧间隔:50ms
- 接收数据帧间隔:20ms,接收缓冲区数据覆盖
2.2.1 与控制器通信
- 通信设置:“1200,o,8,1”
- 发送数据帧间隔:20ms
- 接收数据帧间隔:2.5ms,接收缓冲区数据覆盖
2.3 控制器
- 通信设置:“1200,o,8,1”
- 发送数据间隔:收到数据马上发送,否则间隔1s一次
- 接收数据间隔:80ms,接收缓冲区数据覆盖
3. 原因分析
- 顺序执行:PC端程序在顺序执行时,PC发送数据请求命令给转接板,转接板收到命令后处理命令,并向控制器请求数据。在上述参数情况下,一个数据请求命令,控制器最多花80ms实现更新数据返回,而转接板以50ms的间隔向PC端返回数据,在这种情况下,对于PC端来说,发送了数据请求命令后,紧接着等到的返回数据帧还是上一次命令请求的数据。
- 断点调试:相对于顺序执行,断点调试后,转接板有足够时间返回新的数据帧,这样PC端就会收到正确的对应数据帧。
4. 问题解决
究其原因,还是增加了转接板,数据收发速率不一致问题。为了解决这个问题,在通信数据包中增加了一个数据标识,PC端每发一个数据包,再接收数据包时,查看是否找到对应标识,若找到对应标识,则为目标数据包。计算机网络数据包中的帧序列也是一样的道理,帧序列同时也可以解决数据排序的问题。
Windows下VB6.0开发——VB程序断点调试与顺序执行不一致问题(通信原因)相关推荐
- Windows下VB6.0开发——关于String类型数据的思考
前言:之前做工程时候出现了打不开VB工程或者EXE文件打开就闪退的现象,最后一步步调试发现是程序出错.出错的地方竟然是一个小小的String类型数据处理引起的,记录下来. 1. 字符数组和字符串 1. ...
- Win10下VB6.0开发之串口通信基础(一)控件属性篇
前言:VB串口通信的方法一般有两种:一是通过Windows的通信API进行通信:另一种是通过VB的标准控件MSComm来实现.这篇文章要讲的是上位机如何通过VB的串口控件MSComm和下位机进行串口通 ...
- Win10下VB6.0开发之串口通信基础(二)代码功能篇
MSComm控件串口通信开发 1. MSComm控件的处理流程 MSComm在适当时候引发控件的处理流程主要分为两步: 1)通过事件驱动处理连接端口通信 在收发一个字符或者生一个事件时,不管是 ...
- Windows下使用Eclipse开发Arduino程序
Arduino IDE功能简单,对于不熟悉编程环境的用户十分容易上手:但是对于大型的Arduino项目开发,如果再使用自带的IDE就会多少显得不便.之前我曾经使用过Eclipse + CDT + av ...
- Win10下VB6.0开发之错误--无法打开对象窗口和代码窗口
错误:Win10下使用VB6.0打开一个.vbp文件时,打不开对象窗口和代码窗口 解决办法:找了很久之后才发现,笔者所用笔记本外接了扩展显示屏,在断开外接显示屏连接后,打开VB,再重新外接显示屏即可. ...
- Windows10下VB6.0开发——常用的字符串处理函数工具
前言:下面记录整理了VB中经常使用用于字符串转换的工具函数. 字符串处理 1. 获取字符串长度--Len Len函数中的一个参数是目标字符串,返回目标字符串的长度,例如num = Len(&quo ...
- Windows10下VB6.0开发——ini文件存储参数信息
前言:在使用VB编写上位机程序时,想要实现一个功能--每次修改Text文本框中的值后,使得关闭程序后该数值能够保存,在下次打开时可以直接使用.本文介绍了INI文件对该功能的支持. 1.INI文件 ...
- Windows10下VB6.0开发——常见控件使用整理
前言:以下整理了一些常见控件的使用,关于串口通信的控件的使用,在之前文章介绍过. 1. 单选按钮 -- OptionButton 有很多场景中会需要用到单选按钮,使用单选按钮的基本原则是:在同一个 ...
- Windows10下VB6.0开发——常用数值处理函数工具
前言:下面记录整理了VB中经常使用用于数据转换的工具函数. 数值处理 1. 取不大于n的最大整数--Int a = Int(-5.6) '=-6 a = Int(4.88) '=4 2. 四舍五入取整 ...
最新文章
- python隐藏部分代码_python隐藏类中属性的3种实现方法
- mysql9索引实战_课程介绍目录索引
- mysql repalication_mysql replication(主从复制)(一)MS模式
- Java将小数转换为成百分比输出
- 50本.NTE、C#相关技术书籍免费下载
- npm安装vue 解决VUE无法打开图形界面工具,输入vue ui无反应 vue-cli版本2.9.6无法升级 npm uninstall vue-cli卸载时失败
- vue动画transition(笔记)
- IE与FF的常见兼容问题及总结
- 雪色光晕(计算几何+暴力)
- Android pm命令(持续更新中...)
- Java httpClient 发送http请求
- 移动端分享链接给微信好友
- 文字转换片假字_模仿文字转换笔迹,word手写字体在线生成器网站
- 疯狂HTML5 CSS 3 JavaScript讲义 (李刚) 高清PDF扫描版
- 杂记(git标签,echo命令,ps命令,gdb调试)
- 基于LabVIEW的WIFI通信人机交互界面设计
- java cnzz_cnzz 模拟请求登录(传入url get data ) demo
- android集成sdk 马甲包,Android配置马甲包
- 用户登录很重要,实现游戏陪玩app源码注册功能
- 产品经理到底是做什么的?|️ 什么是产品经理?
热门文章
- 启动另一个Activity、Service、应用程序
- android之读取相册照片并显示
- 解决OpenCV3+VS2015(VS2017)运行时出现debug error abort()has been called的问题
- CNN中input,output的计算推导
- html复选框控制元素禁用,如何勾选复选框时禁用HTML必需属性?
- %02 java_Java基础02—变量、运算符和数据类型转换(示例代码)
- linux学习笔记:linux中磁盘管理常用的几个命令
- linux shell locate,shell学习之locate和find命令
- 文本圆角背景_ppt模板航天日PPT,半透明几何圆角长方形文本框
- nand flash和nor flash区别_从闪存的发展历史看,eMMC与NAND Flash有什么区别与联系?...