栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

物联网竞赛入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

物联网竞赛入门

文章目录
  • 物联网竞赛入门
    • 第一天
      • 初识TinyOS
        • TinyOS是什么?
        • TinyOS的编程方式
            • Modules(模块)
            • Configuration(配置)
            • Interfaces(接口)
            • Headers(头文件)
          • NesC语言编程格式

物联网竞赛入门

by:阿程 vx:1764930806

本文章使用GEN-0200B新型物联网传感器节点硬件作为实验器材

使用平台:物联网教学平台

第一天 初识TinyOS TinyOS是什么?

简单来说就是一个专为嵌入式无线传感网络设计的操作系统

TinyOS的编程方式

TinyOS的编程方式采用NesC语言,这是一种类C语言。NesC语言重要概念(组件,接口,模块)

Modules(模块)

provide code that implements one or more interfaces and internal behavior

提供实现一个或多个接口和内部行为的代码

Configuration(配置)

link together components to yield new component

将组件链接在一起以生成新的组件

Interfaces(接口)

logically related set of commands and events

逻辑上相关的命令和事件集

Headers(头文件)

Define parameters

定义参数

NesC语言编程格式
  • Makefile 文件
  • ~AppC.nc 文件
  • ~C.nc 文件
  • ~.h 头文件

Makefile文件

可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。其中包含了那些文件需要编译,那些文件不需要编译,那些文件需要先编译,那些文件需要后编译,那些文件需要重建等等。编译整个工程需要涉及到的,在 Makefile 中都可以进行描述。换句话说,Makefile 可以使得我们的项目工程的编译变得自动化,不需要每次都手动输入一堆源文件和参数。

~AppC.nc 文件

配置(configuration)命名以AppC.nc结尾。申明组件及定义组件的使用关系。包含在接口和配置中的事件是你决定执行的逻辑连接

configuration BlinkAppC //表示这是一个名为BlinkAppC的配置  
{  
}  
implementation  
{   //组件申明   
    components MainC, BlinkC, LedsC;  
    components new TimerMilliC() as Timer0;  
    components new TimerMilliC() as Timer1;  
    components new TimerMilliC() as Timer2;  
    //组件间使用关系定义   
    BlinkC -> MainC.Boot;   
    BlinkC.Timer0 -> Timer0;   
    BlinkC.Timer1 -> Timer1;  
    BlinkC.Timer2 -> Timer2;  
    BlinkC.Leds -> LedsC;
    //在这里我们通常把一个组件的申明和使用关系定义写在一起,区分为一个个模块,上述组件可写成:
    //main组件
    components MainC, BlinkC;
    BlinkC -> MainC.Boot;
    //leds组件
    components LedsC;
    BlinkC.Leds -> LedsC;
    //timer组件
    components new TimerMilliC() as Timer0;  
    components new TimerMilliC() as Timer1;  
    components new TimerMilliC() as Timer2;
    BlinkC.Timer0 -> Timer0;   
    BlinkC.Timer1 -> Timer1;  
    BlinkC.Timer2 -> Timer2;
    
}  

~C.nc 文件

模块(module) 命名以C.nc结尾。模块是公共事务的体现

module BlinkC @safe() //声明了使用到的接口名称
{
  uses interface Timer as Timer0;
  uses interface Leds;
  uses interface Boot;
}

implementation
{
 event void Boot.booted()
  {
    call Timer0.startPeriodic( 250 ); //每250ms触发一次event void Timer0.fired()  
    call Timer1.startPeriodic( 500 );  
    call Timer2.startPeriodic( 1000 );
  }

  event void Timer0.fired()  
  {  
      dbg("BlinkC", "Timer 0 fired @ %s.n", sim_time_string());  
      call Leds.led0Toggle(); //使0号LED灯状态反转  
  }  
      
  event void Timer1.fired()  
  {  
      dbg("BlinkC","Timer 1 fired @ %s n", sim_time_string());  
      call Leds.led1Toggle();  
  }  
      
  event void Timer2.fired()  
  {  
      dbg("BlinkC", "Timer 2 fired @ %s.n", sim_time_string());  
      call Leds.led2Toggle();  
  }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号