串口 浮点数 结构体_quot;结构体quot;和quot;共用体quot;在单片机中的妙用
unsigned char rec_buf[46]; // 定义接收缓存
unsigned char command[8]; // 定义命令变量
unsigned char valid_data[30]; // 定义有效数据变量
unsigned char device_info[8]; // 定义器件信息变量
在串口中断函数中,使用rec_buf接收串口数据。此处省略接收代码,自行脑补。接收完毕后,再使用如下代码把对应的变量取出来。
//取出命令
for(i=0;i<8;i++)
{
command[i]=rec_buf[i];
}
//取出有效数据
for(i=8;i<38;i++)
{
valid_data[i-8]=rec_buf[i];
}
//取出器件信息
for(i=38;i<46;i++)
{
device_info[i-38]=rec_buf[i];
}
取出来之后,就可以在程序中使用了,比如,判断接收到的是什么命令,如下代码所示:
if(command[0]==0x88) // 如果是修改参数命令
{
if(command[1]==0x33)// 如果修改的是IP地址参数
{
// 就怎么怎么样...
}
...
}
好!上面是普通的用法,接下来,我们使用结构体和共用体!
union
{
rec_buf[46];
struct
{
unsigned char command[8];
unsigned char valid_data[30];
unsigned char device_info[8];
}ComInfo;
}D_buf;
上面代码中,我们使用了共用体和结构体的方法定义了串口接收缓存和串口命令、有效数据和器件信息变量。当我们在串口中断中接收完数据后。就可以直接使用这些变量了。例如:
if(D_buf.ComInfo.command[0]==0x88) // 如果是修改参数命令
{
if(D_buf.ComInfo.command[1]==0x33)// 如果修改的是IP地址参数
{
// 就怎么怎么样...
}
...
}
下面,我解释一下代码。共用体的特点:内部的变量使用同一个首地址。在我们定义的共用体里面,有两个变量,一个是rec_buf,一个是ComInfo,所以,它俩的内存首地址是相同的。结构体的特点:内部的变量地址自增。在我们定义的结构体ComInfo中,command变量、valid_data变量、device_info变量使用同一片内存空间,地址连续。基于以上共用体和结构体的特点,当我们接收完rec_buf以后,其实,数据就已经在结构体中的这3个变量中了,直接用就可以,省去了前面示例中“取出来”的环节。推荐阅读▼
电子漫画系列,更新九张图片。
【最强干货】618个3D封装免费分享
【干货第二波】一大波3D封装免费分享
贴片电容国内外品牌
DC-DC电源芯片国内外品牌大汇总
几毛钱的32768晶振,这也能写出一篇干货?
车牌识别控制板原理图+PCB+3D齐全无私分享
【视觉盛宴】你没见过的电子元器件的另一面!
完全由C编写,高度可移植,超级牛逼的菜单架构!
软件神器TortoiseGit,晓宇姐姐教你使用图形化方式管理单片机程序版本!
请戳右下角,给我一点在看!
串口 浮点数 结构体_quot;结构体quot;和quot;共用体quot;在单片机中的妙用相关推荐
- c语言结构共用体的作用,浅谈C语言共用体和与结构体的区别
共用体与结构体的区别 共用体: 使用union 关键字 共用体内存长度是内部最长的数据类型的长度. 共用体的地址和内部各成员变量的地址都是同一个地址 结构体大小: 结构体内部的成员,大小等于最后一个成 ...
- 字符串类型、结构体、共用体、枚举、container宏、内存来源
一.C语言的字符串类型 1.C语言没有原生字符串类型 很多高级语言像java.C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以String s1 = "linu ...
- 【零基础学C语言】知识总结八:struct 结构体与 union 共用体
struct 结构体 struct即结构体,C程序中经常需要用相关的不同类型的数据来描述一个数据对象.例如,描述学生的综合信息时,需要使用学生的学号.姓名.性别等不同类型的数据时,像这种数据类型总是在 ...
- 第九章 结构体与共用体
C程序设计实验报告 姓名:欧阳思健 实验地点: 514实验室 实验时间:2019年6月26日 实验项目: 9.3.1 结构体变量的应用 9.3.2 结构体数组的应用 9.3.3 共用体的应用 9.3. ...
- 结构体与共用体(联合体)
参考:结构体与共用体 作者:一只青木呀 发布时间: 2020-08-09 08:29:22 网址:https://blog.csdn.net/weixin_45309916/article/detai ...
- java jni 结构体_JNI基础 -- C++基础知识(结构体共用体 )
结构体 类似于Java中的Bean对象,可以将一些变量封装为一个结构体 声明结构体的关键字是struct,也可以通过typedef别名定义 举个栗子: struct Student { //不同的数据 ...
- 【C语言】结构体、共用体、位域
结构体 1. 结构体的声明方法 struct struct_name {data_type member1;data_type member2;.. }; 这是其中一种声明方式~ 2.定义一个结构体变 ...
- C语言——结构体、共用体
结构体.共用体 1.结构体 基础知识 代码基本写法 内存对齐 2. 共用体 引论 定义 基础写法 共用体大小 1.结构体 基础知识 类似于Java中的javaBean,可以将一些变量封装成一些对象.同 ...
- 你真的了解结构体和共用体吗?
目录 结构体 1.为什么需要结构体 2.定义结构体 3.结构体变量的初始化 4.结构体变量的输出 5.结构体变量的输入 6.结构体变量之间的赋值 7.结构体数组 8.结构体指针 9.结构体指针作为函数 ...
- c语言指针变量输出不了共用体,瘋子C语言札记(结构体/共用体/枚举篇)
瘋子C语言笔记(结构体/共用体/枚举篇) (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student ...
最新文章
- 网页中如何显示版权符号
- 软件开发基本原则(一)—— 策略和因素 (转)
- 解决Debian安装后中文乱码
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(工具部署)
- .net 识别一维码_天若OCR文字识别 v5.0 原创好用的OCR及翻译小工具
- CentOS7.6上搭建阿里云OSS的C SDK
- 信息安全工程师教程学习笔记汇总(思维导图及考试要点)
- 招商银行/招银网络科技面经、答案
- dbv oracle驱动,oracle dbv使用详解
- 破解钉钉旧版本强制更新(实现旧版本登录)
- 数据分析团队的搭建与思考
- 计算机术语root,root是什么意思
- 自学编程80余年,这些私藏的实用工具学习网站陪我走到了现在,必须收藏,学习效率翻倍 - 网站篇
- 【基于时间特征交互和引导细化的遥感变化检测 】2022TGRS
- 四色原型的学习心得分享
- 转载:解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw
- 基于SPRINGBOOT果多多水果电商平台
- 城市矢量路网获取以及根据此数据制作点数据
- win7 mac 时间不一致
- config.guess 更新
热门文章
- java批量导入功能,java使用POI批量导入excel数据的方法
- python str 索引_一步一步学Python3(小学生也适用) 第九篇: 字符串(str)类型(中)...
- L2-003 月饼 (25 point(s))
- html语言format,HTML 文本格式化
- sublime能编译PHP吗,让sublime编译php、js
- JSP教程第6讲笔记
- libSM.so.6: cannot open shared object file: No such file or directoryapt-file search libSM.so.6
- 分类器对未见过类别的识别问题
- Caffe傻瓜系列(4):其它常用层及参数
- python实现的个人税后工资计算器