ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:1.21MB ,
资源ID:3238859      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3238859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AOTS实验报告材料.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

AOTS实验报告材料.docx

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