串口数据处理

news2024/9/21 0:35:53

1.在串口接收中断中接收到的数据写入环形缓冲区;唤醒解析线程(发出任务通知)或释放信号量。

2.开一个解析线程:

void AT_Parser()
{
    while(1)
    {
        1.等待任务通知;
          读环形缓冲区(将数据存起来);            
        2.常规解析(遇到\r\n才去解析);
          解析数据包:
                1)放入Data_Buf;
                2)唤醒“等待网络数据的线程”
        3.唤醒等待at命令的结果的线程;
    }  
}    

但是在环形缓冲区中大部分时间是没有数据的,如果一直去读环形缓冲区很浪费资源。
引入休眠与唤醒的机制:
1)等待任务通知,休眠状态;如果被唤醒就去读环形缓冲区。
2)使用信号量或事件集。

 3.环形缓冲区:
是全局的数组,但是限定了只有一个生成与一个消费者(不需要保护措施);
在中断函数中会去写环形缓冲区,只有一个解析数据的线程会去读环形缓冲区。
不能有多个线程去读或多个线程去写环形缓冲区;
如果有多个线程去读或多个线程去写环形缓冲区,就需要做好多种保护措施。
 
加了互斥量,A与B就都可以去调用uart_at_send发送函数;如果不加互斥量,A与B只有一个函数可以调用uart_at_send发送函数。

使用信号量表示资源。

 二个线程与一个中断,大部分时间都是不占用系统资源的,代码效率比较高。

 uart_at_send函数阻塞后,要向下继续执行,只能是三个情况中的一种:1.ok唤醒;2.error唤醒;3.超时退出;

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

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

相关文章

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序): 普通流(标准流)浮动定位 1 标准流(普通流/文档流) 所谓的标准流: 就是标签按照规定…

LAMP架构与网站搭建实例

一.LAMP概述 1、LAMP的概念 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境 LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、…

53 openEuler搭建PostgreSQL数据库服务器-管理数据库

文章目录53 openEuler搭建PostgreSQL数据库服务器-管理数据库53.1 创建数据库创建数据库示例53.2 选择数据库选择数据库示例53.3 查看数据库查看数据库示例53.4 删除数据库删除数据库示例53.5 备份数据库备份数据库示例53.6 恢复数据库恢复数据库示例53 openEuler搭建PostgreSQ…

第十四届蓝桥杯省赛c/c++大学B组题解

第十四届蓝桥杯省赛c/c大学B组题解 个人答案,有错漏感谢指正哈 试题 A: 日期统计 本题总分:5 分 【问题描述】   小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示&#xff…

Linux应用编程(文件属性与目录)

本章将会讨论如下主题内容。 ⚫ Linux 系统的文件类型; ⚫ stat 系统调用; ⚫ 文件各种属性介绍:文件属主、访问权限、时间戳; ⚫ 符号链接与硬链接; ⚫ 目录; ⚫ 删除文件与文件重命名。 一、Linux 系统中…

python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

一、编程题目 编程题目1&#xff1a;python编写一计票程序&#xff0c;键盘输入候选人姓名(输入“#”结束)&#xff0c;使用字典存储并统计出候选人得票数。 编程题目2&#xff1a;python实现以下分段函数&#xff1a; y 2x^34x^23 -10<x<0 y x14 0<x<6 y 6x…

001+limou+git安装与入门

1、git安装以及下载检查&#xff08;windows环境&#xff0c;macOS可能比较麻烦&#xff09; &#xff08;1&#xff09;下载git git官网下载&#xff0c; Git - Downloading Package (git-scm.com) &#xff08;2&#xff09;检查下载 以下命令可以检查git是否下载成功 $…

JAVA入坑之类和对象

目录 一、类 1.1面向对象(OOP)与面向过程 1.2面向对象的三个特性 1.3类的语法格式 1.3.1类的分类 1.3.2类修饰符 1.4变量 1.4.1变量格式 1.4.2成员变量 1.4.3区分实例变量和类变量 1.4.4局部变量 1.4.5区分成员变量和局部变量 1.5final关键字 1.5.1常量 1.6方法 …

基于Java+SSM+jsp的二手车交易网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;300套&#xff09; 目录 一、效果演示 二、…

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html&#xff0c;css&#xff0c;js特别是flex布局的使用&#xff0c;主轴方向可以是横轴&#xff0c;也可以是纵轴&#xff0c;弹性项还可可以使用百分比sticky粘性布局&#xff0c;作为侧边栏&#xff0c;它不会超出…

Spring Cloud组件源码之OpenFeign源码分析

" Spring 到底是春天的来临万物复苏&#xff0c;还是春转夏的干燥又炎热呢&#xff1f;" Spring的来临让JavaEE走向了另一个高度。便捷的开发&#xff0c;完美的生态。物极必反&#xff0c;学习Spring的成本越来越低&#xff0c;导致Java程序员越来越密集&#xff0…

实习不对口,还去吗?

作者&#xff1a;阿秀校招八股文学习网站&#xff1a;https://interviewguide.cn这是阿秀的第「255」篇原创小伙伴们大家好&#xff0c;我是阿秀。欢迎今年参加秋招的小伙伴加入我的学习圈&#xff0c;目前已经超过 2200 小伙伴加入&#xff01;去年认真准备和走下来的基本都拿…

LBS计算附近的对象:MySQL 空间索引方式

目录1. MySQL空间数据类型的基本介绍1.1 什么是MySQL空间数据类型1.2 有哪些空间数据类型1.3 支持空间数据类型的引擎1.4 坐标系类型2. 存储坐标系的示例代码2.1 geomtry和point都可以存储坐标系&#xff0c;有什么区别呢&#xff1f;2.2 创建测试表2.3 新增坐标2.3 计算两地之…

计组2.1——计算机中的数据

问题&#xff1a;数据如何在计算机中表示&#xff1f; 运算器如何进行数字运算和逻辑运算&#xff1f; 计组2.11.进制转化&#xff1a;2. BCD码3.字符和字符串1.ASCII2.汉字编码3.字符串4.奇偶校验码1. 校验原理3. 奇偶校验5.汉明码6.循环冗余校验码1.进制转化&#xff1a; #me…

【C语言】关于文件操作你知多少?

目录 一.引入 二. 什么是文件 2.1 什么是文件 2.2 程序文件 2.3 数据文件 2.4 文件名 三.文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 四.文件的顺序读写 4.1 函数汇总 4.2 printf/fprintf/sprintf 4.3 scanf/fscanf/sscanf 五. 文件的随机读写 5.1 引入 5.2 fsee…

HTML5 <ins> 标签、HTML5 <link> 标签

HTML5 <ins> 标签 实例 一段带有已删除部分和新插入部分的文本&#xff1a; <p>My favorite color is <del>blue</del> <ins>red</ins>!</p> 尝试一下 浏览器支持 所有主流浏览器都支持 <ins> 标签。 标签定义及使用说明 …

Sentry安装使用(最全最细)

Sentry安装使用(最全最细&#xff0c;包括解决邮箱发送问题&#xff0c;https上传问题&#xff0c;https访问问题&#xff0c;安装此教程配置即可) ##服务器操作系统为2核8G,CentOS7.9 ##安装Docker-ce yum install -y yum-utils \device-mapper-persistent-data \lvm2yum-c…

日撸 Java 三百行day27

文章目录说明day27 Hanoi 塔问题1.思路2.代码3.图示说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampledata day27 Hanoi 塔…

部署LAMP架构和论坛

引言 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&#xff08;或Perl、…

Win10,详细永久关闭更新方法(附图文)

一、服务设置 1.同时按下键盘 Win R&#xff0c;打开运行对话框&#xff0c;然后输入命令 services.msc &#xff0c;点击下方的“确定”打开服务。 2.找到 Windows Update 这一项&#xff0c;并双击打开。 3.停止该服务&#xff0c;启动类型设置为禁用 4.点击恢复&#…