nesC编程.ppt

上传人:b****1 文档编号:1399628 上传时间:2022-10-22 格式:PPT 页数:27 大小:435.50KB
下载 相关 举报
nesC编程.ppt_第1页
第1页 / 共27页
nesC编程.ppt_第2页
第2页 / 共27页
nesC编程.ppt_第3页
第3页 / 共27页
nesC编程.ppt_第4页
第4页 / 共27页
nesC编程.ppt_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

nesC编程.ppt

《nesC编程.ppt》由会员分享,可在线阅读,更多相关《nesC编程.ppt(27页珍藏版)》请在冰豆网上搜索。

nesC编程.ppt

无线传感器网络nesC编程,nesC编程,nesC语言介绍nesC编程基本概念接口(interface)模块(module)组件(configuration、components)命令(command)、事件(event)、任务(task),nesC语言介绍,nesC语言一种在C基础上扩展的编程语言,主要用于传感器网络的编程开发加州大学伯克利分校研发人员开发的这套nesC编程语言用nesC编写的微型操作系统TinyOS目前国内外很多大学和机构利用这一平台进行相关问题的研究,nesC语言介绍,TinyOS专用语言类C语言组件编程事件驱动自己的编译器编译生成C程序镜像,可移植性强编写用户程序方便,nesC编程基本概念,1、结构和内容的分离:

程序由组件构成,它们装配在一起(“配线”)构成完整程序。

2、根据接口的设置说明组件功能。

接口可以由组件提供或使用。

被提供的接口表现它为使用者提供的功能,被使用的接口表现使用者完成它的作业所需要的功能。

nesC编程基本概念,3、接口有双向性:

它们描述一组接口供给者(指令)提供的函数和一组被接口的使用者(事件)实现的函数。

4、组件通过接口彼此静态地相连。

这增加运行时效率,而且允许更好的程序静态分析。

接口(interface),nesC的接口有双向性:

它们描述一个多功能的两组件(供给者和使用者)之间的交互渠道,即描述了两组件的调用关系。

接口可以理解为函数原型的集合。

接口(interface),如何定义接口:

接口放在一个单独的文件中*.nc接口的名称应与文件名对应例如interface1的接口则必须对应于文件名interface1.nc接口定义描述了一系列函数原型(command和event),接口(interface),SendMsg.nc:

interfaceSendMsgcommandresult_tsend(uint16_taddress,uint8_tlength,message_t*msg);eventresult_tsendDone(message_t*msg,result_tsuccess);SendMsg接口类型提供者必须实现发送指令,而使用者必须实现sendDone事件.,接口(interface),providesinterfaceA1;/*提供接口*/usesinterfaceA1;/*使用接口*/providesinterfaceA1asA2;/*接口别名*/usesinterfaceA1asA2;,模块(module),模块是接口的实现者和使用者模块包含两部分内容:

模块使用和提供的接口描述模块内部的实现代码模块名也必须与文件名同名,模块(module),例如:

M1.ncmoduleM1/*声明部分*/providesinterfaceA1;usesinterfaceB1;implementation/*实现部分,C代码*/commandvoidA1.cmd1()callB1.cmd2();eventvoidA1.event1().,组件(configuration、component),组件是一个完整的配置列表,组件可以像模块一样使用外部的接口并且对外提供接口。

也可以直译成配置(configuration)组件与模块一样包含两部分内容:

组件使用和提供的接口描述组件内部的实现代码(配置列表)组件名也必须与文件名同名,组件(configuration、component),例如:

C1.ncconfigurationC1providesinterfaceA1;implementationcomponentsM1;componentsM2;A1=M1.A1;M1.B1M2.B1;components指令引出需要配置的组件。

组件(configuration、component),配置的方法:

接口调用:

usertoprovider接口实现=:

接口实现指定(相当于),组件(configuration、component),组件(configuration),使用模块,接口1,接口2,接口1,接口2,实现模块,也是组件,接口1,接口2,接口3,命令(command),是在接口中的一种函数,这种函数要求接口的提供者实现,而接口的使用者则会调用这种函数。

形象的称为command,即为接口提供的可供调用的命令。

语法结构类C语言,只是在最前面增加command关键字。

命令(command),command定义:

interfaceA1commandintcmd1(intarg);,命令(command),command实现:

moduleM1providesinterfaceA1;implementationcommandintA1.cmd1(intarg),命令(command),command使用:

moduleM2usesinterfaceA1;implementationintret=callA1.cmd1(0x11);调用command时一定要用call命令,否则编译会出错。

事件(event),也是在接口中的一种函数,这种函数要求接口的提供者调用,而接口的使用者则会实现这种函数。

形象的称为event,即为接口使用者所实现的事件处理函数。

语法结构类C语言,只是在最前面增加event关键字。

事件(event),event定义:

interfaceA1eventvoidevent1(intarg1,intarg2);可以拥有参数和返回值。

事件(event),event实现:

moduleM1providesinterfaceA1;implementationpostA1.event1(0x1,0x2);/*发出对应的事件,实际上类同于调用事件处理函数*/接口的提供者在发出事件时,必须使用关键字post,否则编译会出错,事件(event),event使用:

moduleM2usesinterfaceA1;implementationeventvoidA1.event1(intarg1,intarg2)接口使用者必须实现event的具体内容,如同事件处理函数一样。

任务(task),任务是TinyOS系统提供的一种特殊的机制,类同于线程。

task一般为一个函数,无参数,无返回值。

task可以在一般的TinyOS程序中发出,而task的执行是由TinyOS系统内核来实现的。

并且task的执行是不影响调用者的,将会在发出task后的某一个时刻被调度运行,任务(task),task的特点:

无参数、无返回值系统会按特定的顺序调度这些tasktask间不能抢占,但是可以被中断所抢占在task未执行时,发出多少个task,都将只运行一次这个task系统执行完一个task后才会去执行其它task,所以task一般要求短小,不至于影响其它task,任务(task),task的定义:

一般也是放在module中的moduleM1implementationtaskvoidtask1()voidf1()posttask1();,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1