nesC编程语言在无线网络传感器设计中的应用

时间:2025-04-27

新型编程语言——nesC其最大的特点是,将组件化/模块化思想和基于事件驱动的执行模型相结合。现TinyOS操作系统和基于TinyOS的应用程序都 是用nesC语言编写的,大大提高了应用开发的方便性和应用执行的可靠性。本文以WSN为背景,通过一个基于TinyOS的灯闪烁实例——Blink,详 细介绍nesC语言的结构以及用该语言如何实现组件化/模块化的应用程序,为深入研究TinyOS的应用开发提供一种实现方法。

nesC编程语言在无线网络传感器设计中的应用

新型编程语言——nesC其最大的特点是,将组件化/模块化思想和基于事件驱动的执行模型相结合。现TinyOS操作系统和基于TinyOS的应用程序都 是用nesC语言编写的,大大提高了应用开发的方便性和应用执行的可靠性。本文以WSN为背景,通过一个基于TinyOS的灯闪烁实例——Blink,详 细介绍nesC语言的结构以及用该语言如何实现组件化/模块化的应用程序,为深入研究TinyOS的应用开发提供一种实现方法。

1 nosC语言结构

nesC是C语言的扩展,精通C语言的程序员掌握这种语言相对比较快。与C语言的存储格式不同,用nesC语言编写的文件是以“.nc”为后 缀。每个nc文件实现一个组件功能(组件化/模块化)。在nesC程序中,主要定义两种功能不同的组件——模块(module)和配件 (configuration)。

模块主要用于描述组件的接口函数功能以及具体的实现过程,每个模块的具体执行都由4个相关部分组成:命令函数、事件函数、数据帧和一组执行线程。其中,命令函数是可直接执行,也可调用底层模块的命令,但必须有返回值,来表示命令是否完成。返回值有3种可能:成功(见BlinkM.nc代码部 分)、失败、分步执行。事件函数是由硬件事件触发执行的,底层模块的事件函数跟硬件中断直接关联,包括外部事件、时钟事件、计数器事件。一个事件函数将事件信息放置在自己的数据帧中,后通过产生线程、触发上层模块的事件函数、调用底层模块的命令函数等方式进行相应处理,因此节点的硬件事件会触发两条可能的执行方向——模块间向上的事件函数调用和模块间向下的命令函数调用。

配件主要是描述组件不同接口的关系,完成各个组件接口之间的相互连接和调用。相关执行部分主要包含提供给其他组件的接口和配件要使用的接口的组件接口列表和如何将各个组件接口连接在一起的执行连接列表。

模块和配件的定义格式如下:

在模块中,关键字“implementation”必须包含实现模块提供和使用接口声明的全部命令和事件。在配件中,关键字 “implementation”定义执行部分,连接用“->”、“=”、“<-”等符号表示,“->”表示位于左边的组件接口要调用 位于右边的组件接口。

不管是模块还是配件,每个组件都包含了定义和实现两部分。被提供者和被使用者都是通过调用接口来实现各个接口的通信和函数的功能,不同的模块也可以实现相同的接口。接

新型编程语言——nesC其最大的特点是,将组件化/模块化思想和基于事件驱动的执行模型相结合。现TinyOS操作系统和基于TinyOS的应用程序都 是用nesC语言编写的,大大提高了应用开发的方便性和应用执行的可靠性。本文以WSN为背景,通过一个基于TinyOS的灯闪烁实例——Blink,详 细介绍nesC语言的结构以及用该语言如何实现组件化/模块化的应用程序,为深入研究TinyOS的应用开发提供一种实现方法。

口可以是命令和事件,也可以是单独定义的一组命令。在应用程序中存在多个配置文件,并且配件之间存在一个层次关系,最上面的为顶层配件文件(每个应用程序必须有一个顶层配件),定义了Main组件接口与其他组件接口的连接方式以及各个接口间的调用关系。具体框架图可参见文献[6]中 的关于nesC的一般结构。

2 nesC应用程序的分析

每一个nesC应用程序都是由一个或多个组件通过接口链接起来,并通过ncc/gcc编译生成一个完整的可执行程序。下面以TinyOS软件中的Blink应用程序为例,具体介绍nesC应用程序结构。

Blink程序是一个简单的nesC应用程序。它的主要功能是每隔1 s的时间间隔亮一次,关闭系统时红灯亮。其程序主要包括3个子文件Blink.nc、BlinkM.nc和SingleTimer.nc。

(1)Blink.nc文件

这个文件为整个程序的顶层配件文件,关键字为configuration,通过“->”连接各个对应的接口。文件关键内容如下:

从上述代码中可看出,该配件使用了Main组件,定义了Main接口和其他组件的调用关系,是整个程序的主文件,每个nesC应用程序都必须包含一个顶层配置文件。

(2)BlinkM.nc文件

BlinkM.nc为模块文件,关键字为module、command,通过其调用StdControl接口中的3个命令“init,start,stop”连接接口,是实现Blink程序的具体功能。内容如下:

新型编程语言——nesC其最大的特点是,将组件化/模块化思想和基于事件驱动的执行模型相结合。现TinyOS操作系统和基于TinyOS的应用程序都 是用nesC语言编写的,大大提高了应用开发的方便性和应用执行的可靠性。本文以WSN为背景,通过一个基于TinyOS的灯闪烁实例——Blink,详 细介绍nesC语言的结构以及用该语言如何实现组件化/模块化的应用程序,为深入研究TinyOS的应用开发提供一种实现方法。

(3)SingleTimer.nc文件 …… 此处隐藏:2121字,全部文档内容请下载后查看。喜欢就下载吧 ……

nesC编程语言在无线网络传感器设计中的应用.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219