1. e-works数字化企业网
  2. 书屋
  3. 书籍列表
  4. TinyOS实用编程——面向无线传感网节点软件开发
  5. 组件定义

第三章 TinyOS编程语言nesC

第二节 组件定义


    例3.4:

    configuration MainC{

    provides interface Boot;

    uses interface Init as SoftwareInit;

    }

    组件的规范部分可以为空,表明组件是顶层应用配件,如PowerupAppC。

    3.2.2  关键字as

    细心的读者会发现,上面MainC配件规范部分的第二条语句中引入了一个新的关键字as。关键字as的作用是为接口定义一个别名。这里是为接口Init定义了一个别名SoftwareInit,表明使用该接口对软件进行初始化。从这个角度来看,使用as可以提高程序的可读性。

    除了上述情况外,还有一种情况要求在组件规范中必须使用关键字as。

    在组件规范中可能需要多次提供或使用同一接口,此时必须使用关键字as来区分同一类型接口的多个实例。例如,配件LedsC通过Leds接口提供了三个二极管的抽象。LedsC是一个配件,没有可执行代码,它将二极管模块LedsP连接到更为底层的能够激励二极管的组件上。模块LedsP的规范见例3.5,通过使用关键字as,为接口GeneralIO的三个实例定义了不同的别名。总之,在组件规范中,必须确保每个接口实例都具有唯一的名字,才能保证配件实现组件连接的过程中不至于产生混乱。在模块LedsP后的“@”代表属性,详见3.7.5小节。

    例3.5:模块LedsP的规范

    module LedsP  @safe(){

    provides{

    interface Init;

    interface Leds:

      }

    uses{

    interface GeneralIO as Led0;

    interface GeneralIO as Led1;

    interface GeneralIO as Led2;

      }

    }

    事实上,接口声明中已经隐性地使用了as。下述两条nesC语句中,第一条语句实际上是第二条语句的缩写。

    uses interface Leds;

    uses interface Leds as Leds;

    关键字as不仅可以应用于组件规范中为接口设定别名,还可以应用于配件实现部分,为声明的组件设定别名。他们的作用类似于变量名字和函数名字。有效使用关键字as,会大大提高程序代码的可读性。

    3.2.3  将接口分成组

    如果组件规范中提供多个接口或者使用多个接口,可以将提供或者使用的多个接口分成组。上面提到的模块LedsP是一个典型的例子,使用大括号将提供的Init接口和Leds接口括起来,并用关键字provides标识,将使用的Led0、Led1和Led2接口括起来,用关键字uses标识。这只是一种编程风格而已,目的是使得代码更加清晰易读。也就是说,例3.6中的两个版本是等价的,这两种写法在语法和代码执行效率方面没有差异。

系列微信

数字化企业网
PLM之神
e-works制信科技
MES百科
工业自动化洞察
智能制造IM
AI智造圈
智能工厂前线
工业机器人洞察
智造人才圈
工业软件应用
智能制造网博会
ERP之家
供应链指南针
© 2002-2025  武汉制信科技有限公司  版权所有  ICP经营许可证:鄂B2-20030029-1(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号 法律声明及隐私权政策     投诉举报电话:027-87592219

关于我们    |    联系我们    |    隐私条款

ICP经营许可证:鄂B2-20080078
(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号
© 2002-2025  武汉制信科技有限公司  版权所有
投诉举报电话:027-87592219

扫码查看