专栏首页嵌入式程序猿一个++操作引发的bug

一个++操作引发的bug

最近在做基于模型的设计,在matlab的sateflow工具箱和simulink下实现基于模型的设计,在设计模型,并生成代码的时候,因为stateflow不支持类似下面的表达式

所以必须拆开成++和>=两种方式,

方式1:

j1939tp_txbuf[index].num_cur++;

if(j1939tp_txbuf[index].num_cur>=j1939tp_txbuf[index].num_packes)

方式2:

if(j1939tp_txbuf[index].num_cur>=j1939tp_txbuf[index].num_packes)

j1939tp_txbuf[index].num_cur++;

由于大意在模型中采用了第一种方式,结果在收发多帧的时候每次只能收到第一帧数据,引入了bug,随分析模型,并调整模型修改为第二种模式

编译生成代码

可以看到生成的代码符合预期,bug也消除,整个收发都正常,

因为stateflow和C语言在有的语法上不兼容,所以在设计的时候要仔细设计符合自己预期的模型。另外建议大家都学学基于模型的设计,现在很流行的开发方法。在国外基于模型的设计起步早,国内这几年才慢慢流行起来,从传统手动代码的思维到基于模型的设计,主要是思维要转变,需要一个过程,可以慢慢联系,引导工程师多学习基于模型设计的关注,在项目设计时候引入模型设计,和验证,加速开发流程和周期,提升产品的上市时间和质量。另外模型设计也利于维护和升级。当然模型设计也分好坏,设计不好的模型还不如手工代码,所以基于模型设计也要划分好状态和层次。希望这种设计模式可以给你带来启发。

本文分享自微信公众号 - 嵌入式程序猿(InterruptISR)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 让SDK成为你的得力助手

    可能用过PWM的童鞋应该清楚,根据应用不同,有的时候需要调占空比,有的时候需要调频率,尤其在调速的应用中,我们需要调节PWM的频率,之前在公众号中,PWM的内容...

    用户1605515
  • FreeMaster和你有个约会

    FreeMaster 其实这工具好多年了,只是最近有了更新,在加上最近在调试BLDC电机,用这个工具挺好,FreeMASTER是一个用户友好型实时调试监测器和数...

    用户1605515
  • 你应该学会的串口仿真

    新年伊始,万象更新,在新的一年里,有没有给自己的嵌入式开发之路做一个很好的规划呢?开工第一天,就让自己动手学起来吧,小猿带你一步一步成长为一名合格的嵌入式开发人...

    用户1605515
  • Vue + Node + Mongodb 开发一个完整博客流程

    前言 前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统。 服务端用的是 koa2框架 进行开发。 技术栈 ...

    IT派
  • 小冰拉开人生第二幕:AI时代的“Office”问世,你的虚拟男友“复活”了

    2014年,小冰正式推出第一代产品,以对话式聊天机器人形式迅速积累训练数据。2020年8月20日,已从微软独立分拆的小冰团队宣布,第八代小冰“出炉”了。

    AI科技大本营
  • 前端构建:Source Maps详解

    一、前言                            当使用CoffeeScript、ClojureScript编写前端脚本时,当使用Less、Sa...

    ^_^肥仔John
  • 别错过这张AI商用清单:你的生产难题可能被一个应用解决(续篇)

    大数据文摘
  • 扩大Android攻击面:React Native Android应用程序分析

    React Native是一款移动端应用程序框架,由于该框架允许开发人员使用React和原生平台功能,目前有很多Android和iOS应用程序都是基于该框架进行...

    FB客服
  • 动态语言的灵活性是把双刃剑:以 Python 语言为例

    新媒体管家 关键时刻,第一时间送达! 本文有些零碎,总题来说,包括两个问题:(1)可变对象(最常见的是list dict)被意外修改的问题,(2)对参数(par...

    企鹅号小编
  • HBase+SpringBoot分布式文件存储实战(二)-HBase简介与环境部署(更新 ing)1 HBase简介及其在大数据生态圈的位置

    JavaEdge

扫码关注云+社区

领取腾讯云代金券