【ZigBee/ZStack快速入门】04-1-协议栈串口回调函数(接收数据)

弄了两天终于让我试出来了

参考了大佬的代码,大佬的代码只能存放64个数,但是我的需求要高一点,所以在大佬的基础上改了一下,先放上代码,后面再分析


void SampleApp_CallBack(uint8 port, uint8 event)
{uint8 UART0_RX_FINISH_FLAG = 0;#if 1 //uint8 Res;(void)event;// Intentionally unreferenced parameter  while (Hal_UART_RxBufLen(port))  {      uint8 Res;HalUARTRead (port, &Res, 1);//读取数据,存入字符RES中UART0_RX_BUFF[UART0_RX_STA&0x7F]=Res;//将数据存到BUFF中,表示总共能存127个数     UART0_RX_STA++; //数据+1if(UART0_RX_FINISH_FLAG == 0){//接收未完成if(UART0_RX_STA&0x80)//前一个接收到的数据结束符的“前一半”{if     (Res==0x0A)UART0_RX_FINISH_FLAG = 1;//接收完成了else if(Res!=0x0D)UART0_RX_STA &= 0x7F;//不是结束符,则将前半个结束符标志置0 }else{if(Res==0x0D)UART0_RX_STA |= 0x80;}} if(UART0_RX_FINISH_FLAG == 1){UART0_RX_LEN = (UART0_RX_STA&0x7F)-2;memset(rxBuffer, 0, sizeof(rxBuffer));//将rxBuffer数字内容清空,重新写入数据memcpy(rxBuffer, UART0_RX_BUFF, sizeof(UART0_RX_BUFF));//将串口接收到的数据写入全局变量rxBuffer中memset(UART0_RX_BUFF,0,UART0_RX_BUFF_MAX);//将UART0_RX_BUFF数据清空-Reset//HalUARTWrite(HAL_UART_PORT_0,UART0_RX_BUFF, osal_strlen((char*)UART0_RX_BUFF));HalUARTWrite(HAL_UART_PORT_0,rxBuffer, osal_strlen((char*)rxBuffer));if(SampleApp_NwkState != DEV_ZB_COORD){osal_set_event(SampleApp_TaskID,SAMPLE_TestOfWhile);//SQ_P2P(RXBUFF);}UART0_RX_STA = 0;break;}           }
#endif
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云贝教育 |【技术文章】pg_bulkload介绍

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 pg_bulkload 是一个高性能的数据加载工具,专门为PostgreSQL数据库设计,用于大批量数据的快速导入。pg_bulk…

【MySQL】MySQL小结

MySQL数据库的基本信息 数据:记录事物的信息 表:数据的集合,由行和列组成;将多条数据组合在一起 数据库:是表的集合,是存储以统一格式且相互有关数据的仓库 DBMS的主要功能:1.数据库的建立和维…

JetPack之DataBinding基础使用

目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定,能大大减少绑定app逻辑…

【C语言】huffman编码实现数据压缩

目录 原理类型定义完整代码实验无重复数据的压缩情况有重复数据的压缩情况数据中只有一种字符的情况 原理 huffman统计数据中字符的出现次数,根据每个字符的出现次数来编码,出现次数越多的数据使用越短的编码长度,从而实现数据压缩的目的。 …

如何利用InternLM2的开源大型语言模型编写代码解释的agent

InternLM2作为一个开源的大型语言模型,具备了强大的编码能力和长文本处理能力,同时也在工具调用方面有所探索。要利用InternLM2编写代码解释的agent,可以依据文章中提及的“Tool-Augmented LLMs”部分进行设计。这部分探讨了如何通过特定的方…

南京观海微电子---Vitis HLS的工作机制——Vitis HLS教程

1. 前言 Vitis HLS(原VivadoHLS)是一个高级综合工具。用户可以通过该工具直接将C、 C编写的函数翻译成HDL硬件描述语言,最终再映射成FPGA内部的LUT、DSP资源以及RAM资源等。 用户通过Vitis HLS,使用C/C代码来开发RTL IP核&#x…

VSCode 如何同步显示网页在手机或者平板上

首先要确保 ①电脑上安装了VsCode ②VsCode安装插件LiveServer 安装成功之后 连续按住 Alt L 、Alt O 会跳转到对应的html页面上 http://127.0.0.1:5500/....... 是这个开头的 然后打开网络 如果桌面有网上邻居的可以直接点桌面的网上邻居 进来找到WLAN这个…

RabbitMQ安装及使用笔记

RabbitMQ安装及使用笔记 RabbitMQ是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP),用于在分布式系统中进行消息传递。 1.安装 利用docker load命令加载mq镜像 docker load -i mq.tar 基于Docker来安装RabbitMQ&#xff…

数据结构(四)顺序表与链表的深层次讲解

我们在数据结构(二),对链表和顺序表已经讲解过了。但很多同学表示有点晦涩难懂那我就出一篇深层次讲解,一步一步来带领大家学习。 我们从头(数据结构)开始完整的来为大家讲解,大家好好看好好学。…

vue3.0开发手册(实用版)

vue3 .2看一遍就会的setup语法糖 起初vue3.0暴露变量必须return出来,template才能使用 vue3.2中,只需要在script标签上加上setup属性,组件在编译的过程中代码运行的上下文是在setup0函数中,无需retuen template 可之间使用 文件…

人工智能在产业中应用--生成智能

二、生成式人工智能 前面介绍了很多人工智能的应用,接下来部分我们会介绍当前正在进行的生成智能。生成智能和以往的人工智能有什么区别,个人觉得主要区别就在于“度”。在表现上就是以前的人工智能更多是利用既有的数据集分布挖掘和解决在这个数据集下…

Python人工智能:气象数据可视化的新工具

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

单片机原理及应用

单片机时钟电路及时序 时钟电路用于产生AT89S51单片机工作时所必需的时钟脉冲信号(工作频率);AT89S51单片机的CPU正是在时钟脉冲信号的控制下,严格地按时序执行指令进行工作的。AT89S51单片机的最高时钟频率为33MHz。 时钟电路 AT89S51单片机常用的时…

文件披露,Facebook秘密项目中偷窥用户的Snapchat流量

2016年,Facebook启动了一个秘密项目,旨在拦截并解密人们使用Snapchat应用程序及其服务器之间的网络流量。根据新近公开的法庭文件,该项目的目标是了解用户的行为,并帮助Facebook与Snapchat竞争。Facebook将此称为“鬼busters项目”…

Snowflake 时钟回拨问题 解决方案

Snowflake是一种分布式数据存储和计算服务,它使用一种特殊的ID生成策略来确保在分布式系统中生成唯一的ID。这种策略通常被称为Snowflake算法,它由Twitter开发用于生成64位的唯一ID,并且在多个系统和服务中被广泛采用。 Snowflake算法生成的…

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)、logisim工具

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费,70元。据说可以导出 Verilog ! logisim及其衍生版本 都需要安装java环境。 http://www.cburch.com/logisim/ 是原版, 下载页面&#…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

垃圾回收机制--GC 垃圾收集器--JVM调优-面试题

1.触发垃圾回收的条件 新生代 Eden区域满了&#xff0c;触发young gc (ygc)老年代区域满了&#xff0c;触发full gc (fgc)通过ygc后进入老年代的平均大小大于老年代的可用内存,触发full gc(fgc).程序中主动调用的System.gc()强制执行gc,是full gc&#xff0c;但是不必然执行。…

蓝桥杯(3):python搜索DFS

目录 1 DFS简介 1.1 DFS与n重循环 1.2 代码实现 1.3 例题 1.3.1 分糖果 1.3.2 买瓜 2 回溯 2.1 定义 2.2 代码实例 2.1.1 排列数 2.1.2 找子集 2.3 例题 2.3.1 N皇后 2.3.2 小朋友崇拜圈 2.3.3 全球变暖 3 剪枝 3.1 定义 3.2 分类 3.3 例子 3.3.1 数字王国之…

自动化测试:Selenium中的时间等待

在 Selenium 中&#xff0c;时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待&#xff0c;包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见&…