1、AOTS实验报告材料计算机科学与技术学院、软件学院学生实验报告实验题目: 基于ATOS平台的物联网实验 学生: 指导教师: 专业班级: 提交日期: 实验一 LED组件1.1 实验要求绿灯一直处于熄灭的状态,红灯不停闪烁(注意:工具箱提供的代码有bug,对于基站节点LED_BLUE - 红灯 LED_YELLOW - 绿灯 ON和OFF逻辑相反)1.2 实验思路将绿灯状态改为OFF,红灯通过时间延迟控制其的亮灭。1.3 实验关键代码/* LED 示例程序的实现模块,简单的点亮3个LED灯date 2010-1*/module LedM uses interface Boot;implementa
2、tion /* LED灯演示 */ task void DemoLed() /* 目前节点上提供两个LED灯 LED_BLUE - 蓝灯 LED_YELLOW - 黄灯 */ int i,j; while(1) for(i=0;i1000;i+) for(j=0;j500;j+); LED_BLUE_OFF; /* 熄灭蓝色LED灯 */ LED_YELLOW_OFF; /* 点亮黄色LED灯 */ for(i=0;i1000;i+) for(j=0;j500;j+); LED_BLUE_ON; /* 熄灭蓝色LED灯 */ LED_YELLOW_OFF; /* 点亮黄色LED灯 */ /*
3、启动事件处理函数,在LED.nc已经关联到MainC.Boot接口 系统启动后会调用此函数 */ event void Boot.booted() post DemoLed(); 1.4 实验截图1.5 实验心得通过这次实验,掌握了对 LED的简单控制,受益匪浅,并且对此次实验的运作过程开始了解。 实验二 定时器组件1.1 实验要求通过定时器让绿色灯闪烁,并且闪烁三次后停止闪烁。1.2 实验思路设置一个变量,在计时器每计数一次自加一次,加到三时,停止计时器。1.3 实验关键代码#define DBG_LEV 5module TimerLedM uses interface Boot; /* T
4、imer为系统接口TMilli指明了定时器的精度为毫秒 */ uses interface Timer as Timer1; /* as关键字为接口别名 */ uses interface Timer as Timer2;implementation /* 任务: 切换黄色LED灯 */ int i=0; /* 启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口 系统启动后会调用此函数 */ event void Boot.booted() /* 定时器1: 持续工作,每隔1s触发一次 */ call Timer1.startPeriodic(1000); /* 定时
5、器2: 持续工作,每隔3s触发一次*/ /call Timer2.startPeriodic(5000); /* 定时器1的事件处理函数 */ event void Timer1.fired() /* 事件处理中直接切换蓝色LED灯 */ /ADBG(5, led blue toggle.rn); /LED_BLUE_TOGGLE; ADBG(5, led yellow toggle.rn); /post ToggleLedYellow(); LED_YELLOW_TOGGLE; i=i+1; if(i=3) call Timer1.stop(); /通过stop函数使定时器停止 /* 定时器
6、2的事件处理函数 */ event void Timer2.fired() /ADBG(5, led yellow toggle.rn); /post ToggleLedYellow(); 1.4 实验截图1.5 实验心得通过此次实验,加强了我对代码的思考,更加了解定时器函数的使用。实验三 串口调试1.1 实验要求通过级别控制,使得某些调试语句没有被输出到串口。1.2 实验思路默认的ADBG_LEV为3000,将语句中的DBG_LEV参数改为比默认的ADBG_LEV小即可1.3 实验关键代码/* 串口调试程序的实现模块date */* 定义调试级别,参加Makefile的ADBG_LEVEL定
7、义,设置大于等于ADBG_LEVEL */#define DBG_LEV 3000module SerialDebugM uses interface Boot;implementation /* 任务: 通过串口打印信息来调试 */ task void DebugSerial() uint8_t num1 = 0x39; uint32_t num2 = 0x12345678; float float1 = 123.1234; /* ADBG,格式类似于printf, 第一个参数为调试等级,可以参见tos/lib/common/antdebug.h */ /* 打印字符和字符串 */ ADBG
8、(DBG_LEV, rnrnDEMO of Serial Debugrn, x); ADBG(DBG_LEV, 1. This is a string, and this is char %crn, x); /* 打印8位的数字 */ ADBG(DBG_LEV, 2. NUM1: HEX=0x%x, DEC=%drn, (int)(num1), (int)(num1); /* 打印32位数字 */ ADBG(2000, 2. NUM2: HEX=0x%lx, DEC=%ldrn, (uint32_t)(num2), (uint32_t) (num2); /* 打印浮点数*/ ADBG(DBG_
9、LEV, 3. FLOAT: %frn, float1); /* 启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口 系统启动后会调用此函数 */ event void Boot.booted() post DebugSerial(); 1.4 实验截图图1 未屏蔽前图2 屏蔽后1.5 实验心得此次实验加深了我对串口的了解与使用,是一次非常好的实验材料,受益匪浅。实验四 串口通信1.1 实验要求实现一个串口实验,在串口助手中实现回显的功能。(键盘键入的任何容回车后显示在串口助手的终端)1.2 实验思路直接在原有的UartStream.receivedByte函数
10、基础上修改,直接输出结果1.3 实验关键代码/* 串口输入输出程序的实现模块authordate */#include /* 定义此宏,将演示UartStream.receive函数,允许一次指定数量的数据 */#define SERIALIO_RECEIVE#define DBG_LEV 3000module SerialIoM uses interface Boot; uses interface StdControl as UartStdControl; uses interface UartStream;implementation uint8_t m_receive_len; uin
11、t8_t m_echo_buf; uint8_t m_send_buf100; /* 显示一个菜单提示用户 */ void showMenu() strcpy(m_send_buf, rnrnDemo of Serio I/Orn1 Toggle BLUE LEDrn2 Toggle YELLOW LEDrn); /* 通过UartStream.send可以发送字节数据 */ call UartStream.send(m_send_buf, strlen(m_send_buf); /* 启动事件处理函数,在SerialIo.nc已经关联到MainC.Boot接口 系统启动后会调用此函数 */
12、event void Boot.booted() LED_BLUE_ON; LED_YELLOW_ON; call UartStdControl.start(); showMenu(); async event void UartStream.sendDone(uint8_t *buf, uint16_t len, error_t error) /* 重新发送刚才接收的字符进行回显 */ task void showMenuTask() showMenu(); task void lightLED() if(m_echo_buf=1) LED_BLUE_TOGGLE; /* 切换蓝色LED灯
13、*/ ADBG(DBG_LEV, You choose to toggle BLUE LEDrn); else if (m_echo_buf = 2) LED_YELLOW_TOGGLE; /* 切换黄色LED灯 */ ADBG(DBG_LEV, You choose to toggle YELLOW LEDrn); /* 如果没有调用receive接收,则每接收到一个数据就会触发此事件 */ async event void UartStream.receivedByte(uint8_t byte) m_echo_buf = byte; ADBG(DBG_LEV, %cr,m_echo_buf); /将byte直接输出 post lightLED(); /* 在接收完receive命令欲接收的长度后会调用此事件 */ async event void UartStream.receiveDone(uint8_t *buf, uint16_t len, error_t error) 1.4 实验截图1.5 实验心得通过这次实验,对串口通信的原理有了大
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1