接收节点无线广播发送的数据,并printf打印出来(含核心代码)_物联网挑战赛第四届第一题

简介: 接收节点无线广播发送的数据,并printf打印出来(含核心代码)_物联网挑战赛第四届第一题

目录


题目

赛题

格式说明

计分规则

评分步骤

题目解析

右上角节点代码解析

其余11个节点代码解析

比赛时的思考

具体解析

核心代码

右上角节点代码

其余11个节点代码


正文


题目


赛题


00000.png

数据广播节点—>

如图所示,平台节点不安装天线,12 个节点 ID 号随机,左上角的节点作为数据广播节

点,每隔 1 秒往外重复广播负载为 1 个字节的数据包(该广播代码由组委会提供),参赛队

需编写其他 11 个节点的代码,在考虑多跳传输的情况下,获取到该广播包的负载,最终 11

个节点通过 printf 语句将该负载打印到平台,从而表明任务的完成。


1) 11 个节点只允许编写一份代码,代码中可通过宏 TOS_NODE_ID 获取自身 ID 号;

2)本题开销指的是除左上角节点外的另外 11 个节点无线通信发送数据包的总和;

3)左上角节点代码由组委会提供,参赛队可自行查阅和修改负载内容(不可修改格式)

以验证代码;

4)左上角节点烧录完成 10 秒后停止评分,参赛队需在 10 秒内完成数据包的发送;

5)广播的数据为同一数据,参赛队无需多次接收并转发,多次转发时需考虑其造成的

网络开销;

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

最终结果输出错误。


格式说明


1)左上角广播的数据包的负载为一个字节,示例如下:

00 FF FF 00 00 01 00 06 12

前 8 个字节 00 FF FF 00 00 01 00 06 固定,后 1 个字节 12 为随机的某字节,参赛队

需编写代码接收此结构的数据包;

2) Printf 输出的格式为:标志位(Data)+1 个字节负载(十进制,并以空格隔开,结

尾应加上换行符“In”以表明语句的完结)

广播数据包:00 FF FF 00 00 01 00 06 12

正确的输出结果:Data 18

注意:输出的结果应完整正确,数据必须以十进制输出,例如上述示例的 0x12 的

十进制为 18;

3)每个节点的结果可重复输出,计分时只会以每个节点最后一组含有标志位 Data 的

行作为判分依据;


计分规则


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

1)正确性得分:共 22 分,正确性得分不少于 14 分才可以获得开销分;

正确性得分        (m≥7)

m 为 11 个节点正确输出结果的数量

2)开销得分:共 8 分,开销超过 50 得分 0 分,小于 50 按如下公式如下:

开销得分       (0<n<50)

n 为 11 个节点的开销总和


评分步骤


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

2)编译烧录参赛队代码(参赛队的 11 个节点);

3)对 11 个节点进行 printf 监听;

4)烧录左上角数据广播节点代码,烧录完成后,开始计时;

5) 10 秒后停止监听,核实各节点的输出结果和开销量,计算出得分;


题目解析


由题目可知,右上角的节点是由主委会给出的,但因为我们这是平时练习,所以右上角节点的无线发送数据的代码,也由我们自己来写吧。


右上角节点代码解析


由题意可知,右上角这个节点,是个工具节点,其目的就是给其余11个节点每隔一秒发一个固定数据包,所以我们只需要用到无线通信的发包函数就可,再用一个定时器每隔1000毫秒调用以下无线发包函数,就完成啦。


其余11个节点代码解析


比赛时的思考


这11个节点的代码也很简单,但我们比赛更要注意分数,在每个节点都完成任务的同时,要使发包数达到最小,才算胜利。而这道题目,这11个节点根本不用发包,也能完成任务。


具体解析


只需要用到无线接收函数即可。先定义一个与右上角发送数据包同类型的结构体,这个结构体在收包的时候进行判断是否是我们需要的数据包,判断成功后,printf打印出来即可。这里不用限制打印次数,反正发包数还是为0。


核心代码


右上角节点代码


event void MilliTimer.fired() {
    if (locked) {    //锁机制的实现AMSend.sendDone判断发包正确后,会解除锁机制
        return;
    }
    else {
        radio_count_msg_t* rcm = (radio_count_msg_t*)call Packet.getPayload(&packet, sizeof(radio_count_msg_t));    //rcm指向packet的负载
        if (rcm == NULL) {
            return;
        }
        //如果负载不为空,就将counter的值赋值给rcm->counter
        rcm->counter = 0x16;        //定义发包的内容
        //AM_BROADCAST_ADDR:无线通信中,代表广播
        //如果改成  0x01,那就是向1号节点发送单播
        if (call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(radio_count_msg_t)) == SUCCESS) {    //无线发包
            locked = TRUE;                                                                                //打开锁机制 ,锁住后,转到senddone
        }
    }
}


其余11个节点代码


event message_t* Receive.receive(message_t* bufPtr, void* payload, uint8_t len) {    //节点接收数据,无线收包
    if (len != sizeof(radio_count_msg_t)) {return bufPtr;}    //判断是否是我想要的包
    else {                                                    //如果是我想要的包
    radio_count_msg_t* rcm = (radio_count_msg_t*)payload;    //rcm指向包的负载
    //如果rcm->counter == 1,那么 1 & 0x1 == 0x1,所以LED0会亮,以下同理
    printf("Data %d",rcm->counter);
    printfflush();
    return bufPtr;
    }
}
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
100 1
|
3月前
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。
|
4月前
|
物联网
好的资源链接,gitee全糖咖啡,B站视频转成mp4,全糖咖啡 / 物联网网关数据上传,,全糖咖啡 / springboot+百度智能车牌检测
好的资源链接,gitee全糖咖啡,B站视频转成mp4,全糖咖啡 / 物联网网关数据上传,,全糖咖啡 / springboot+百度智能车牌检测
|
4月前
|
边缘计算 运维 安全
云上物联网边缘节点:重塑连接智能世界的桥梁
结语 云上物联网边缘节点作为物联网技术的重要组成部分,正以其独特的优势和潜力推动着物联网的快速发展。面对未来的机遇和挑战,我们需要不断创新和完善边缘节点的技术架构和应用模式,推动物联网技术的深度融合和广泛应用,为构建智慧社会贡献力量。
121 0
|
5月前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
154 0
|
5月前
|
存储 安全 算法
物联网中的数据加密技术
【6月更文挑战第1天】物联网中的数据加密技术
611 0
|
6月前
|
传感器 存储 监控
编写Arduino代码:构建物联网设备,实现上网行为管理软件对网络的实时监控
使用Arduino和ESP8266/ESP32等Wi-Fi模块,结合传感器监控网络活动,本文展示了如何编写代码实现实时监控并自动将数据提交至网站。示例代码展示如何连接Wi-Fi并检测网络状态,当连接成功时,通过HTTP POST请求将“Network activity detected.”发送到服务器。通过调整POST请求的目标URL和数据,可将监控数据上传至所需网站进行处理和存储。
197 0
|
6月前
|
物联网 定位技术
【技术探讨】一种多节点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速率。
|
15天前
|
存储 供应链 物联网
探索未来:区块链、物联网与虚拟现实技术的融合与创新
【10月更文挑战第15天】本文深入探讨了新兴技术如区块链、物联网(IoT)和虚拟现实(VR)的发展趋势及其在现代社会的应用。通过分析这些技术的独特属性和它们如何相互补充,我们揭示了一个由高度互联、智能化和沉浸式体验定义的未来图景。文章不仅讨论了这些技术当前的挑战,还展望了它们在未来可能带来的转变,旨在为读者提供对这些令人兴奋的技术趋势的全面理解。
|
15天前
|
安全 物联网 区块链
未来已来:探索区块链技术、物联网与虚拟现实的融合趋势
【10月更文挑战第15天】 在数字化浪潮中,区块链、物联网(IoT)和虚拟现实(VR)技术正引领着一场革命。本文将深入探讨这三种技术的发展趋势和相互融合的潜力,以及它们如何共同塑造我们的未来。我们将从基本概念入手,逐步揭示这些技术如何影响经济、社会和日常生活,同时提供具体应用场景以展示其变革力量。

热门文章

最新文章

相关产品

  • 物联网平台