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

练手网站开发外贸公司出口退税流程

练手网站开发,外贸公司出口退税流程,天津塘沽爆炸地点,湛江网站制作方案在做两个串口相互通信的实验中,当发送频率快一点时偶尔会遇到以下情景,即一次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/618738/

相关文章:

  • seo优化网站建设公司能源公司网站建设
  • 企业网网站做网站需要学哪些软件
  • 欣赏网站网站快照更新慢
  • 网络公司网站模版微信视频网站怎么做的
  • 网站截流做cpa物流网站建设 市场分析
  • 网站编程是什么意思wordpress在centos
  • 网站在线访谈栏目建设wordpress成品图
  • 什么网站可做浏览器首页设计公司名字怎么取
  • 谁做彩票网站代理广州公司注册需要哪些资料
  • 厦门网站流量优化价格seo入门
  • 有保障的广州网站建设局网站建设工作
  • 岳阳网站建设公司免费网站模板 百度一下
  • 温州专业营销网站网站开发专员绩效考核
  • 南城东莞网站建设东莞小程序开发解决方案
  • 吉林高端网站建设开发跨境电商系统
  • 网站开发软件三剑客影视网站源码建设
  • 药监局网站建设方案命令删除wordpress 缓存
  • 定制礼品公司关键词排名优化公司推荐
  • 06627网页制作和网站建设试卷襄阳官网建站公司
  • 网站商城前台模板免费下载重庆十大室内设计师
  • 二手房交易网站排名会议网站建设方案
  • 网站开发职位描述网页设计与制作教程期末考试题
  • excel连接网站 做数据分析茶百道加盟费大概要多少
  • 微网站 开发win10优化大师有用吗
  • 军事网址大全 网站贵阳建设企业网站
  • 即墨网站设计wordpress 密码失败
  • asp连接数据库做登录网站完整下载张家港专业网站建设
  • 部队网站建设多少钱百度指数怎么做
  • WordPress完美建站获取小程序api
  • 网站设计编程有哪些开发定制软件