当前位置: 首页 > news >正文

大航母网站建设流程湖北网

大航母网站建设流程,湖北网,免费行情软件的特点和优势,商务网站建设与维护(专21春)在做两个串口相互通信的实验中,当发送频率快一点时偶尔会遇到以下情景,即一次send中把原数据拆成两份发送,就会导致CRC校验错误。下图中6字节数据拆成42是把SetRThreshold()阈值设为2,当设为1的情况下则会拆成51。 一开始以为是缓…

在做两个串口相互通信的实验中,当发送频率快一点时偶尔会遇到以下情景,即一次send中把原数据拆成两份发送,就会导致CRC校验错误。下图中6字节数据拆成4+2是把SetRThreshold()阈值设为2,当设为1的情况下则会拆成5+1。
在这里插入图片描述
一开始以为是缓冲区溢出问题,然而并不是。真正的原因出在MFC的COMM组件的OnComm响应函数上,即一次发送的报文会被响应两次(检测阈值时先会响应,阈值后面的数据再次响应)。
对于此问题有两种方法:

第一种是在报文前后加上固定的包头包尾,当数据断开时,响应函数分别会收到一个带包头的和一个带包尾的数据,将它们拼在一起即可。但这种方法的问题是,有可能被截断的数据刚好也同时带有包头包尾,因此还需要加一步CRC校验,比较麻烦。

第二种方法比较简便,思路是延迟接收,即OnComm一旦响应后不急着接收数据,而是过一段时间再接收,则可以保证延迟接收的数据是完整的。

使用第二种方法需要使用MFC的定时器功能,步骤如下。

  1. 设置定时器
/* comm控件的响应函数 */
void CMODBUS_CRCDlg::OnOnCommMscomm1()
{SetTimer(1,50,NULL); //表示1号定时器、计时50毫秒
}

使用50ms是因为基本上能保证收到完整的串口数据且大于发送频率。

  1. 编写定时逻辑
    对选择的类右键ClassWizard,找到WM_TIMER并引入响应函数OnTimer。
    在这里插入图片描述
    在OnTimer里编写定时器停止的逻辑。
void CMODBUS_CRCDlg::OnTimer(UINT nIDEvent) 
{switch (nIDEvent){case 1:receiveData();KillTimer(1);break;default:break;}CDialog::OnTimer(nIDEvent);
}

nIDEvent表示定时器的id,每当满50ms时一号定时器就会触发OnTimer事件,设置KillTimer(1)即为触发一次,否则将反复触发。
receiveData()为接收数据后所做的处理,包括拆包、CRC校验、进行展示等环节。

补:Qt遇到类似问题的解决方法

http://www.yayakq.cn/news/573758/

相关文章:

  • 做电商什么外推网站好wordpress小工具九宫格
  • 书籍设计网站推荐wordpress500错误解决
  • 建设网站是公司资产网络营销是什么内容
  • 可信网站是什么意思网页跳转到别的网站
  • 有网站制作app要多长时间免费的网站生成app
  • 网站新版建设中商会小程序开发一个多少钱啊
  • 扬州网站建设推广做网站一年
  • 外贸网站建设公司排名Wordpress+仿站+工具
  • 网站seo诊断湖南岚鸿诊断常州微信网站建设公司
  • 网站建设开题报告设计详情页设计理念怎么写
  • 做网站app需要多少钱网络技术专业就业方向
  • 手机网站可以做英文版本吗wordpress 配置域名
  • 怎么做局域网网站营销推广型网站公司
  • 专门做奢侈品的网站eclipse 制作网站开发
  • 太原建站方法百度搜索热度查询
  • 电子商务网站设计原则wordpress 去掉作者
  • 做外贸网站用什么软件翻强的产品设计毕业设计作品
  • 家居企业网站建设服务微网站系统
  • 全网vip影视网站一键搭建企业推广网
  • 江苏优化网站哪家好wordpress 用户上传头像
  • 城阳网站制作上海大都会app官网下载
  • 网站销售源码小程序代理开发费用
  • 福州网站建设方案服务网站建设管理流程
  • 网站营销应该怎么做如何弄小程序
  • 网站的目的和意义无锡做app的公司有哪些
  • 策划设计网站服装厂招代理
  • 做柱状图好看的网站网站空间哪家做的好
  • 中国联通网站备案及ip地址备案管理要求私人推流服务器
  • 自己做的网站如何调入dede网站 伪静态
  • 厦门网站建站公司asp网站做安全