无线通信0号节点接收其他节点的ID号,并printf打印出来(含核心代码)_物联网挑战赛第四届(2020)第二题

简介: 无线通信0号节点接收其他节点的ID号,并printf打印出来(含核心代码)_物联网挑战赛第四届(2020)第二题

目录


题目

赛题

格式说明

计分规则

评分步骤

题目解析

核心代码


正文


题目


赛题


443.png

    如图所示,平台节点不安装天线,已知0号节点位于左上角,其他11个节点ID号随机(0<ID<255),参赛队需编写所有12个节点的代码,完成节点间的信息传递,并通过0号节点打印输出ID号未知的11个节点的ID号,以表明完成了节点间的数据通信。

       1) 12个节点只允许编写一份代码;

       2)本题开销指的是12个节点无线通信发送数据包的总和;

       3)代码中可通过宏TOS_NODE_ID 获取节点自身ID号;

       4)参赛队编写的和结果无关的printf 调试语句,必须在最终代码中注释掉,

以免造成最终结果输出错误;


格式说明


   1) Printf输出的格式为:标志位(ID)+11个ID号(十进制,空格隔开顺序不限,结尾应加上换行符“\n”以表明语句的完结)输出结果示例:ID135678 10 20 12 33 44

若0号节点输出的ID号个数低于11个,则只核对这几位的ID号的正确性;

若0号节点输出的ID号个数超过11个,则只会取前11个作为依据,并去掉重复和错误的ID号来计算得分。

       2)0号节点可重复输出结果,多次输出结果时评冗在予只云以u了m日人l山口

有ID标志位的行作为判分依据;


计分规则


本赛题满分为30分,其中正确性得分22分,开销得分8分;


       1)正确性得分:共22分,正确性得分不小于14分才可以获得开销分;正确性得分=2 ×mm为正确的ID号数量

       2)开销得分:共8分,开销超过200得分0分,小于200按如下公式计算:开销得分=8×30-"(200-nrn20nm >7)n为12个节点的开销总和


评分步骤


1)烧录Null程序,清空所有节点状态;

2)编译烧录参赛队代码(所有节点);

3)对12个节点进行Printf 监听并开始计时;

4)检测到0号节点输出ID标志位或10秒时间到停止评分,核对结果和开销,计算出得分;


题目解析


    12个节点编写一套代码,但据题意很明显0号节点与其他节点的代码不一样,0号节点只负责无线接收,而其他11个节点负责无线发包。


核心代码


主要是利用数据汇聚的知识点

这一部分是设置根节点与非根节点的

 event void Timer1.fired() {
        if (rootid == 0) {
            call RootControl.setRoot();         //设置位根节点
            rootid = TOS_NODE_ID;               //用宏定义将自己ID号存储在变量rootid中
            rms->rootid = rootid;
            rms->stop = stop;
            call Update.change(rms);            //?
        }
        if (TOS_NODE_ID != rootid && rootid != 0) {     //节点ID不等于0,并且rootid也不为0(rootid初始化位0)
            call RootControl.unsetRoot();               //设置为非根节点
            call Leds.led0On();
        }
        call Timer0.startPeriodic(2000);
    }

这一部分是只有根节点会相应的Receive.receive函数

event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) {      //Receive.receive只有根节点相应
        uint16_t flag = 0, i = 0;
        call Leds.led1Toggle();
        if (len == sizeof(EasyCollectionMsg))       //接收到的包的长度是否和节点结构体的长度一样
        {
            EasyCollectionMsg* btrpkt= (EasyCollectionMsg*)payload;
            for (i=0; i<count; i++) {               //判断是否是已接受的ID号,如果是,则flag==1;
                if (btrpkt->nodeid == nodes[i]) {
                    flag = 1;
                    break;
                }
            }
            if (flag == 0 && btrpkt->nodeid != 0) {                    //接收到的是新节点的id号
                nodes[count] = btrpkt->nodeid;  //加到nodes数组里面去
                count++;
            }
            if (count > 10) {                  //如果已经收集到11个ID号了
                stop = TRUE;
                for (i=0; i<11; i++) {
                    rms->data[i] = nodes[i];
                }
                rms->stop = stop;
                call Leds.led2On();
                call Update.change(rms);
            }
            flag = 0;
        }
        return msg;
    }
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
1月前
|
SQL Oracle 关系型数据库
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
62 0
|
1月前
|
传感器 存储 监控
编写Arduino代码:构建物联网设备,实现上网行为管理软件对网络的实时监控
使用Arduino和ESP8266/ESP32等Wi-Fi模块,结合传感器监控网络活动,本文展示了如何编写代码实现实时监控并自动将数据提交至网站。示例代码展示如何连接Wi-Fi并检测网络状态,当连接成功时,通过HTTP POST请求将“Network activity detected.”发送到服务器。通过调整POST请求的目标URL和数据,可将监控数据上传至所需网站进行处理和存储。
113 0
|
1月前
|
物联网 定位技术
【技术探讨】一种多节点5Km(1.2M bps速率)实时Sub-G无线通信的物联网通讯解决方案
针对在高速公路上货车行驶过程中收集5公里范围内的GPS定位数据,上报云服务器端,最终实时显示每一辆货车的运行轨迹,用户的项目需求如下:200辆货车(无线从站节点),要求很高的实时性,每秒发5包,每个GPS定位数据报文30个字节,这样200辆车同时上报每秒需要发送30K的字节(200 x 5 x 3 0 =30K字节),30K字节 x 8bit=240 k bps速率。
|
1月前
|
SQL Oracle 关系型数据库
助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】
助力工业物联网,工业大数据之ODS层构建:申明分区代码及测试【十】
60 0
|
1月前
|
数据采集 监控 物联网
物联网时代的电脑行为监控软件:代码实现与设备连接
随着物联网技术的飞速发展,电脑行为监控软件在日常生活和商业领域中变得愈发重要。这种软件通过对电脑用户行为的监测,提供了有益的数据,有助于改善用户体验、增强安全性,甚至在一些场景中实现自动化操作。本文将探讨物联网时代的电脑行为监控软件的代码实现与设备连接,并重点介绍监控到的数据如何自动提交到网站。
298 0
|
8天前
|
供应链 监控 物联网
未来技术的潮流:区块链、物联网与虚拟现实的融合与创新
【6月更文挑战第20天】在技术不断进步的时代,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将深入探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,创造出新的商业模式和用户体验。我们将看到,随着这些技术的成熟和应用,未来的世界将变得更加智能、互联和沉浸。
|
1天前
|
供应链 物联网 区块链
新技术趋势与应用:探讨新兴技术如区块链、物联网、虚拟现实等的发展趋势和应用场景
在科技日新月异的今天,新兴技术的发展趋势和应用成为我们关注的焦点。本文将深入探讨区块链技术、物联网以及虚拟现实等新兴技术的发展趋势和应用场景。我们将从数据导向的角度出发,引用权威的研究和统计数据,科学严谨地分析这些技术的发展现状和未来前景。同时,我们也将逻辑严密地探讨这些技术在不同领域的实际应用,以期为读者提供一个全面而深入的理解。
|
3天前
|
供应链 物联网 区块链
未来已来:探索区块链、物联网与虚拟现实技术的融合趋势
本文旨在探讨区块链技术、物联网(IoT)以及虚拟现实(VR)技术在当前和未来社会中的发展趋势及其应用场景。文章将通过分析这些技术各自的优势,并着重讨论它们如何相互结合,为多个行业带来革命性的变化。我们将从技术原理入手,进而深入到实际应用案例,最后预测这些新兴技术融合后可能带来的影响。
|
3天前
|
存储 供应链 物联网
未来已来:探索区块链技术在物联网与虚拟现实中的融合应用
【6月更文挑战第25天】 随着技术的不断进步,新兴技术如区块链、物联网(IoT)、虚拟现实(VR)正逐渐从概念走向实际应用。本文将深入探讨这些技术各自的发展趋势,并着重分析它们在融合应用时所产生的协同效应。我们将看到,区块链为物联网设备提供了安全的数据交互框架,而虚拟现实技术则为用户提供了沉浸式的数据体验平台。通过案例分析,本文旨在揭示这些技术如何共同塑造未来的数字经济和社会结构。
14 2
|
4天前
|
传感器 物联网 区块链
新技术趋势与应用:探讨新兴技术如区块链、物联网、虚拟现实等的发展趋势和应用场景
【6月更文挑战第24天】本文将深入探讨当前最为热门的新兴技术,包括区块链、物联网和虚拟现实等。我们将分析这些技术的发展趋势,并探讨它们在各种应用场景中的可能性。我们将看到,这些技术不仅改变了我们的生活方式,也正在重塑我们的未来。

热门文章

最新文章

相关产品

  • 物联网平台