STM32--USART串口(3)数据包

一、前言

在实际的工程中肯会有同时发送多种数据的情况,比如要不停的发送x、y、z分别对应三种不同的数据。xyzxyzxyz,但接收方可能是从中间某个地方开始接收的,这就导致数据错位。所以我们就需要将数据进行分割,打包成一个一个的数据包,方便接收方进行识别。数据包的格式可以自行定义,一般有包头、包尾、校验位等

二、固定包长HEX数据包接收

假设数据包,包头:0XFF;包尾:0XFE;

对于包头,数据,包尾这3种数据,我们都需要不同的处理逻辑。所以在程序中,我们需要设计一个能记住不同状态的机制,在不同状态执行不同的操作,同时还要进行状态的合理转移。这种程序设计思维,叫做状态机

我们 可以设计三个状态,第一个状态是等待包头,第二个状态时接收数据,第三个状态是等待包尾。

在同一个中断中通过判断s的值来确定接受到数据的状态,从而做相应的处理。

三、可变包长文本数据包接收

与上面相似

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

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

相关文章

Request Response 基础篇

Request & Response 在之前的博客中,初最初见到Request和Response对象,是在Servlet的Service方法的参数中,之前隐性地介绍过Request的作用是获取请求数据。通过获取的数据来进行进一步的逻辑处理,然后通过对Response来进行数…

如何搭建私有云盘SeaFile并实现远程访问本地文件资料

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-hsDnDEybLME85dTx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

MySQL 多表查询

重点: MySQL 的 三种安装方式:包安装,二进制安装,源码编译安装。 MySQL 的 基本使用 MySQL 多实例 DDLcreate alter drop DML insert update delete DQL select 3.5)DDL 语句 表:二维关系 设计表&…

python计算两个DataFrame的指定两列中,相同的数据有多少

目的:查询数据1和数据2中,red与red列相同 并且blue与blue列相同的,情况有多少。 (备注:两个数据中格式不一致,需要经过json提取等处理步骤) 思路步骤: 1、读取数据1,筛选…

跨平台开发:浅析uni-app及其他主流APP开发方式

随着智能手机的普及,移动应用程序(APP)的需求不断增长。开发一款优秀的APP,不仅需要考虑功能和用户体验,还需要选择一种适合的开发方式。随着技术的发展,目前有多种主流的APP开发方式可供选择,其…

OfficeWeb365 Readfile 任意文件读取漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

使用Eclipse搞Android项目报错

相信现在都没什么人还会用Eclipse来开发的了。 不过安装完后,打开Eclipse会提示我的Jdk版本不符合 --------------------------- Incompatible JVM --------------------------- Version 1.8.0_391 of the JVM is not suitable for this product. Version: 17 or g…

PHP中的stdClass:一个动态的空白板

PHP中的stdClass:一个动态的空白板 在PHP编程中,灵活性和动态性是开发人员追求的重要目标。而stdClass作为PHP中的一个特殊类,为我们提供了一个通用的空白板,允许在运行时动态地添加属性和方法。它的存在为处理动态数据结构和临时…

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。一个确保数据安全的事务处理系统,必须满足这些密切相关的标准。 原…

docker集成 nacos/nacos-server (包括踩的坑)

tips 这边需要的数据库我已经安装好了,所以数据库的安装这边已经省略了 拉取镜像(这边使用nacos1.4.1作为例子) docker pull nacos/nacos-server:1.4.1创建映射的文件夹 (conf存放配置文件,logs存放日志文件) mkdir -p /data/n…

java常量和kotlin常量

在java中使用final声明常量在kotlin中使用const val声明常量 常量在编译为字节码后会直接把调用常量的地方直接替换为常量值,示例如下: public class ConstDemo {public static final String NAME "Even";private static final int ID 100…

Python爬虫http基本原理

Python爬虫逆向系列(更新中):http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一…

蓝桥杯-常用STL(一)

常用STL 🎈1.动态数组🎈2.vector的基础使用🔭2.1引入库🔭2.2构造一个动态数组🔭2.3插入元素🔭2.4获取长度并且访问元素🔭2.5修改元素🔭2.6删除元素🔭2.7清空 &#x1f38…

【力扣白嫖日记】SQL

前言 练习SQL语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1387.使用唯一标识码替代员工ID 表:Employees 列名类型idintnamevarchar 在 SQL 中&#xff0c…

c#的反汇编对抗

文章目录 前记nim攻防基础FFI内存加载加解密、编码 后记C#类型转换表nim基础 前记 随便编写一个c#调用winapi并用vs生成dll,同时用csc生成exe using System; using System.Runtime.InteropServices; namespace coleak {class winfun{[DllImport("User32.dll")]publ…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具:安装宝塔面板服务器至少一台、域名一个 前端:生成dist文件(前端运行build命令) 后端:生成jar包(maven运行package命令) 准备: 打开宝塔面板,点击进入软…

centOS+nodejs+mysql阿里云部署前后端个人网站

centOSnodejsmysql阿里云部署前后端个人网站 参考: 部署NodeExpressMySQL项目到阿里云轻量应用服务器 阿里云轻量应用服务器部署Node.jsReactMongoDB前后端分离项目 参考:在阿里云上部署nodejs服务 https 部署的原理就是你在本地测试的时候在地址栏&am…

EasyExcel使用,实体导入导出

简介 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中…

Flume搭建

压缩包版本:apache-flume-1.9.0-bin.tar 百度盘链接:https://pan.baidu.com/s/1ZhSiePUye9ax7TW5XbfWdw 提取码:ieks 1.解压 tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2. 修改文件名 [rootbigdata1 opt]…

银行数据仓库体系实践(8)--主数据模型设计

主数据区域中保留了数据仓库的所有基础数据及历史数据,是数据仓库中最重要的数据区域之一,那主数据区域中主要分为近源模型区和整合(主题)模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…