一体化模块程序设计样例V.pptVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一体化模块程序设计样例V

工程创建 一体化程序代码主要包括两个部分,一个是用户程序代码,这部分代码在完成后可编译成m0烧入模块程序中,并且状态机的应用主要在这里;另一部分是模拟器代码,这部分代码作用是可以在windows平台下对用户程序代码进行调试并且提供一个简单友好的人机界面。 以下是工程的创建步骤: 1、运行VC6.0 2、新建工程,在Workspaces中选择Blank Workspace项,输入工程名称后,点击确定 3、新建工程,在Project中选择MFC AppWizard(dll),并且选择Add to current workspace,点击确定。此后可一直选择默认选项,直至工程建立完毕。以后用户程序的所有代码都会放在这个工程里进行调试,当然为了配合模拟器的使用,工程里还带有部分模拟器的代码段。 4、新建工程,在Project中选择MFC AppWizard(exe),并且选择Add to current workspace,点击确定。该工程将来会作为模拟器来使用,我们这里选择比较简单的对话框工程,如果对VC比较熟悉的,可以选择其他的工程类型来作为模拟器的平台 模拟器和用户代码之间的通信 用户代码是运行在嵌入式系统下的,为了让这些代码可以在windows下进行调试,我们可以把代码封装在动态链接库中,并在模拟器中进行加载。同时创建一个线程,在线程开启后可通过statewizard提供的一些API函数完成模拟器和用户代码之间的通信。基本流程如图所示: 样例 该样例的功能是实现模块开机后自动搜网的功能 1、状态分析 下面我们先对模块的各个状态进行一个简要分析。 开发板在按下复位键后,模块开始上电运行。模块此时的状态从下电状态切换到上电状态,同样的道理,关机的过程的状态切换则为上电状态到下电状态。除此之外,模块不会再有第三种状态存在。也许有人会说模块也有可能上电失败阿,没错,上电失败确实是第三种状态,不过,我们做的是用户程序,对于用户程序来说开始只有STOP和START,上电失败后用户程序仍然是处于STOP。因此,我们可以设定,模块的初始状态由两种,这两种状态可互相进行切换。 根据我们的最初目的,在模块开始后,需要其执行一段搜网的操作,也就是说模块不会立即进入IDLE状态。我们可定义搜网过程的状态为REGISTER。此时的模块状态关系可如图所示: 进入IDLE状态后,模块的搜网算是结束,这个程序中我们只实现开机搜网的这一功能,至于后续由于键盘操作或是其他操作造成的一些状态。我们统统把其划分为IDLE范围内。在REGISTER中,我们需要执行多个AT命令已达到搜网的目的,也就是说我们可以根据这些AT命令来对REGISTER进行细分。以下是我们设定的搜网步骤: 把上面几幅图整合起来,就是模块搜网时的所有状态 2、事件分析 从STOP状态切换到START状态,是由于收到了一个POWER_UP的事件;同样从START切换到STOP是由事件POWER_DOWN导致。在REGISTER中,我们一般是通过AT命令来进行判断下一步该做什么操作的,因此对外来说,状态间的切换是受到事件AT_CNF引起,至于切换到哪一个状态则要根据AT命令的回应内容进行判断,我们这里简单定义AT命令回应正常时为AT_CNF_OK,不正常时为AT_CNF_ERROR。 列举的事件列表如下: EVENT_POWER_UP EVENT_POWER_DOWN EVENT_AT_CNF EVENT_AT_CNF_OK EVENT_AT_CNF_ERROR 3、编码 刚才我们已经把模块开机搜网的状态分析完毕,接下来我们所要做的就是在代码中实现这些状态切换。在statewizard开发包(以下简称state)中,我们可以通过简单的一些菜单操作,即可方便的实现这些代码。State的安装步骤可参考《UML StateWizard》,这里不做详述。 另外,在两个工程中都需要加入state提供的一个链接库,可以在vc中进行加载,链接库文件可在state的样例中找到。 3.1 文件类型设计 首先,需要更改state设定的插入的文件类型 (默认是.cpp文件,我们用的是.c文件)。在state工具栏中点击settings图标,弹出对话框,如下图进行设置。 3.2 应用添加 安装好state后,在workspace边框中会有statetree的页面选项,选择它。在页面框中我们可以看到之前我们创建的两个子项目的状态树,目前里面只有项目名称及挂在其下的几个初时文件名。 选择app application(s),右键菜单中选择

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档