第2章 nesC语言基础 2.1 nesC概述 nesC(Network Embedded System C)是专门为编写TinyOS以及进行TinyOS编写应用程序而发明的一种语言,用nesC而不是C语言编写TinyOS(TinyOS最初是由C和汇编编写的)主要基于以下两点: nesC在语法上支持TinyOS需要的并发执行模型。 nesC编写的源码为编译器的优化提供了可能,最终可以缩小可执行代码尺寸。 因此,使用nesC生成的程序,更加适合无线传感网络节点。由于nesC的学习有点难度,建议从C和nesC的区别入手,辅之以示例,逐渐掌握其编程规则。 nesC的版本并没有遵循与TinyOS的版本标识一同发布,TinyOS目前的最新版本是2.1.2,而nesC语言的最新版是1.3。nesC的主要版本变化如表2-1所示。 2.2 nesC和C的比较 按照TinyOS官方说法,nesC来源于C,是C语言的一种变种,所有的C语言中的结构体、函数、甚至指针(建议少使用指针)、数据类型以及注释格式在nesC中依然是合法的,对于C程序员来说,nesC提出了三个“新概念”: 组件:一组可重用的代码和数据组合,类似于C++中的类。 接口:一组可为其他组件服务的函数和事件集合,是组件之间交互的界面。 并发执行模型:基于任务和中断的处理机制,定义了组件之间如何调用,以及中断代码和非中断代码如何交互执行规则。nesC与C语言的区别主要有程序组成主体、模块之间的调用、命名空间、编程思想等几方面,下面将对这几个方面进行分析。 2.2.1 程序组成主体 C程序是由一系列的函数组成的,而nesC程序是由“组件”组成的。用C语言实现第1章中的LedOn示例如示例2-1所示。 【示例2-1】 main.c、LedOn.h、LedOn.c /*C语言实现LedOn示例*/ //main.c文件 #include “LedOn.h” int main() { LedOn(); while(1) { ; } } //LedOn.h文件#include iocc2530.hvoid LedOn();//LedOn.c文件#include LedOn.hvoid LedOn(){ //将P1_0设置为输出 P1DIR |= 0x01; //点亮LED1P1_0 = 0;} 上述C程序符合一般项目的编写规则,共分为3个文件: main.c:main( )函数所在文件,包含程序的主逻辑代码。LedOn.h:头文件,配合LedOn.c文件实现函数声明,即LedOn模块的接口声明文件。 LedOn.c:LedOn模块的实现文件,通过LedOn( )函数实现LED的点亮。 通过上述代码与第1章中的nesC程序示例相比较可以看出: nesC程序组成:以文件为单位来组织程序,每个文件由一个“组件”组成,“组件”是nesC程序的基本“模块”,在组件中可以声明“使用(uses)”接口或“提供(provides)”接口,可以定义变量和函数。 C程序组成:以文件为单位来组织程序,文件由一系列函数组成,函数是C程序的基本“模块”。 nesC“接口”类似于C语言中的头文件,它声明了一系列的函数集合,为组件提供服务,即被组件使用或由某个组件向外提供其实现。 2.2.2 模块之间的调用 C程序与nesC程序的模块之间调用规则有以下不同: nesC程序模块(即组件)之间的调用,需要显示指定(通过“配件”指定,如第1章示例中的“LedOnAppC”组件)其连接关系,其在编译之前就已经明确了,因此是“静态”调用关系。 C程序模块(即函数)之间的调用,根据代码逻辑可以“随意”调用,甚至可以通过“函数指针”动态改变调用关系。 2.2.3 命名空间 从语法上看,nesC“组件”本质上是由C语言的变量和函数组成的,nesC组件、函数和变量的作用域(命名空间)有以下特点: 在nesC中也可以定义全局变量,但建议尽量少使用全局变量。 nesC组件作用域是全局的。 nesC组件中的变量和函数对整个组件可见,组件外部不可以访问。 2.2.4 编程思想 相对于C语言来说,nesC的程序组成主体、模块调用等不同所带来的直接结果就是编程思想的不同,这也是nesC与C语言最本质的区别。 nesC编程思想就是事件驱动、组件式编程。基于此,程序设计时要注意以下两点: 通过使用“组件”来划分程序的业务功能。 要注意捕捉系统事件(如硬件中断),并且通过处理事件来完成整个程序的运行。 另外,在进
您可能关注的文档
- Photoshop CS 5基础与实例教程第4章应用图层编辑图像的基础.ppt
- Photoshop CS 5基础与实例教程第5章图像绘制工具.ppt
- Photoshop CS 5基础与实例教程第6章修饰与仿制工具运用.ppt
- Photoshop CS 5基础与实例教程第7章路径与形状运用.ppt
- Photoshop CS 5基础与实例教程第8章文字处理.ppt
- Photoshop CS 5基础与实例教程第9章图像的色彩和色调运用.ppt
- Photoshop CS 5基础与实例教程第10章蒙版.ppt
- Photoshop CS 5基础与实例教程第11章通道.ppt
- Photoshop CS 5基础与实例教程第12章滤镜的应用.ppt
- Photoshop CS 5基础与实例教程第13章Photoshop高级应用.ppt
原创力文档

文档评论(0)