数据传输中的数据转换与处理的常用方法-物联网开发-单片机通信

news2024/11/27 3:53:59

目录

一、前言

二、实践与代码

        1.Unsigned Char

        2.memset

        3.sprintf

        4.atoi

        5.atof

        6.strcmp

        7.strtok

        8.strlen

        9.strcpy

        10.strcat

三、总结


一、前言

        本文将以STM32单片机为基础,使用Keil5环境展示以下方法。

        在单片机通信、载波通信中,常常涉及数据的转换,本文将为大家分享若干方法,借助串口调试助手,实现其数据通信的功能。

二、实践与代码

        基础代码:

unsigned char data[10];
int main( void )
{
    Init();
    USART1_Init(9600);//初始化串口
	HAL_Delay(500);
	USART1_SendStr(data,10);//发送串口数据
}

        1.Unsigned Char

        该类型常被写为uint8,并且在数据传输中起到了非常重要的作用,以下操作均与该类型有关。

        2.memset

        本方法常用于清空数组内的值,以便下一次接收数据。

        3.sprintf

        本方法常见于数据的格式化输出,可以将英文等字符存入uint8类型数组中,便于下一步的发送或展示。

        如果我们需要将某些数据代入,其格式化方法与C语言一致!

 

        4.atoi

        本方法可将unsigned char类型转换成int类型,使用int类型变量承接,随后可以做数据运算。

unsigned char data[10];
int num=0;
int main( void )
{
    Init();
		USART1_Init(9600);//初始化串口
		while(1)
		{
			HAL_Delay(100);
			memset(data,'\0',10);//清空数据数组
			if(USART1_ReadRxBuffer(data)!=0)//接收串口数据
			{
				num=atoi((char *)data);//使用atoi方法转换成int类型
				num=num*2;//做数据运算
				sprintf((char *)data,"num= %d",num);
				USART1_SendStr(data,10);
			}
			
		}
}

 

        5.atof

        本方法与上述方法类似,但用于接收浮点型数据,并用float类型变量承接,可做数据运算。

        6.strcmp

        本方法即String compare,字符串比较,相等时值为0,常用于判断,亦可根据字母判断字符串大小。

        下列为一个判断输入是否为data的例程:

unsigned char data[10];
float num=0;
int main( void )
{
    Init();
		USART1_Init(9600);//初始化串口
		while(1)
		{
			HAL_Delay(100);
			memset(data,'\0',10);//清空数据数组
			if(USART1_ReadRxBuffer(data)!=0)//接收串口数据
			{
				if(strcmp((char *)data,"data")==0)//判断字符串是否为data
				{
					memset(data,'\0',10);//清空数据数组
					sprintf((char *)data,"true");
				}
				else
				{
					memset(data,'\0',10);//清空数据数组
					sprintf((char *)data,"false");
				}
				USART1_SendStr(data,10);
			}
			
		}
}

 

        7.strtok

        本函数常用于文本分割,例如传输多个数据,可以分别取出,因此该函数较为重点。

        该函数的使用方法为strtok(data,flag),其中data为要分割的数据,flag为分割符,若data为NULL则将会自动从上一次分割后的文本继续分割。

        下面将是一个发送两个数据的例程,以‘,’为分隔符。

unsigned char data[20];
float temp=0,hum=0;
int main( void )
{
    Init();
		USART1_Init(9600);//初始化串口
		while(1)
		{
			HAL_Delay(100);
			memset(data,'\0',10);//清空数据数组
			if(USART1_ReadRxBuffer(data)!=0)//接收串口数据
			{
				temp=atof(strtok((char *)data,","));//以‘,’为分隔符分隔
				hum=atof(strtok(NULL,","));//采用上一次分割后的文本
				memset(data,'\0',20);
				sprintf((char *)data,"tem=%.2f,hum=%.2f",temp,hum);
				USART1_SendStr(data,20);
			}
		}
}

        8.strlen

        本函数使用方法较为简单,可以返回字符串长度,使用int变量承接或直接做比较运算。

        9.strcpy

        本函数使用在单片机中不太广泛,但依然很重要,该函数可以将字符串b的值赋给字符串a。这是由于字符串不能直接赋值衍生的方法。

        10.strcat

        该函数用于字符串拼接,可将字符串B拼接到字符串A后,但字符串A要有足够的空间!

三、总结

        以上可以说在单片机开发中十分常用,无论是芯片间通信或者其他展示,都十分方便,但要注意,以上的传输的格式为ASCII传输格式。

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

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

相关文章

【Laravel 6】安装需要什么环境?又怎么安装呢

服务器要求 服务器满足以下要求: PHP > 7.2.5BCMath PHP 拓展Ctype PHP 拓展JSON PHP 拓展Mbstring PHP 拓展OpenSSL PHP 拓展PDO PHP 拓展Tokenizer PHP 拓展XML PHP 拓展 安装Laravel Laravel 使用 Composer 来管理项目依赖。因此,在使用 Larav…

JDK动态代理和cglib代理

文章目录 前言1.JDK动态代理1.1 定义一个接口1.2 实现接口1.3 自定义MyInvocationHandler去实现InvocationHandler接口1.4 测试jdk代理1.5 输出代理类 2.cglib代理2.1 代理接口类2.2 代理普通类2.3 设置属性生成cglib代理类 前言 动态代理在平时的开发中用的也很多&#xff0c…

算法与数据结构(五)

一、c二叉树结构 typedef struct BiNode {int data; //结点内值域struct BiNode* lchild, * rchild; //左孩子 右孩子 } BiNode, * BiTree;或者: class Node { public:char data;// data表示该节点代表的内容;Node* L;//左子树Node* R;//右子树 }; No…

深度学习之卷积神经网络识别图片验证码实战案例(十)

案例背景:程序自动化的爬虫而无需人工介入是我们的最终目标。自动化爬虫避免不了自动登录的问题,在爬取XX数据的过程中,遇到登录图形验证码的识别的问题,那我们该如何攻破这种验证码呢? 字符验证码图片如下&#xff1a…

facenet, dlib人脸识别,人体检测,云数据库mysql,QQ邮箱,手机验证码,语音播报

目录 部分代码展示: 录入部分 识别部分​编辑 活体检测部分​编辑 同步到云数据库MySQL 其他操作 部分图片展示: 完整代码加ui链接: 涉及到的一些知识点的文章 部分代码展示: 录入部分 识别部分 活体检测部分 同步到云数…

峰终定律原理

峰终定律 峰终定律( Peak–End Rule),是由丹尼尔卡尼曼(2002年诺贝尔经济学奖获得者,心理学家)提出的。 模型介绍 峰终定律是指如果在一段体验的高峰和结尾,体验是愉悦的,那么对整个…

走进机器学习

作者简介:本人是一名大二学生,就读于人工智能专业,学习过c,c,java,python,Mysql等编程知识,现在致力于学习人工智能方面的知识,感谢CSDN让我们相遇,我也会致力…

javaScript蓝桥杯---传送门

目录 一、介绍二、准备三、目标四、代码五、知识点六、完成 一、介绍 日常浏览网页的时候,我们会发现一个问题,当页面太长、内容太多的时候我们很难快速浏览到心仪的内容。为了解决这个烦恼,优秀的产品研发团队发明了一种类似传送门的功能&a…

对比分析:黑盒测试 VS 白盒测试

一、引言 在软件开发过程中,测试是确保产品质量的关键环节。其中,黑盒测试和白盒测试是两种常见的测试方法。本文将详细解析这两种测试方法的定义、特点,同时通过具体示例进行对比分析。 二、黑盒测试 黑盒测试,又称功能测试&…

2023最新性能测试面试题合集含答案,看完拿个20Koffer不是问题

1、描述一下你们公司的性能测试流程? 1)分析性能需求(用户使用最频繁的场景进行测试)确定性能指标(例如:事务通过率100%,top99%是5秒,最大并发是2000,CPU和内存都是70%以…

Git教程笔记

概念 Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)在软件开发过程中被广泛使用。 Git常用命令 Git全局设置 获取Git仓库 工作区、暂存区、版本库 概念 Git工作区中文件的状态 工作区中…

ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践

ROS EKF 机器人位姿估计功能包&#xff1a;robot_pose_ekf | 仿真环境实践 在仿真下使用robot_pose_ekf 在仿真下使用robot_pose_ekf 仿真环境为 一个无人机&#xff0c;具备3D POSE里程计数据&#xff0c;和imu数据。 将robot_pose_ekf.launch文件进行如下更改 <launc…

C++ unordered_map 性能优化

一 插入加速 unordered_map 在桶满时自动进行 rehash 操作。手动调用 rehash 函数可以手动调整 桶数量。 rehash 函数被调用时&#xff0c;需要注意以下几点&#xff1a; rehash 函数可能会造成 unordered_map 的迭代器失效。如果我们在重新哈希后仍需要继续迭代 unordered_…

机器学习实战六步法之数据预处理(五)

要落地一个机器学习的项目&#xff0c;是有章可循的&#xff0c;通过这六个步骤&#xff0c;小白也能搞定机器学习。 看我闪电六连鞭&#xff01;&#x1f923; 数据的预处理通常包括 5 个步骤&#xff0c;如下&#xff1a;这个是比较完整的一个步骤&#xff0c;不同的算法可能…

内网隧道代理技术(一)之内网隧道代理概述

内网隧道代理技术 内网转发 在渗透测试中&#xff0c;当我们获得了外网服务器&#xff08;如web服务器&#xff0c;ftp服务器&#xff0c;mali服务器等等&#xff09;的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段&#xff0c;一般情况…

FreeRTOS(8)----任务通知

一&#xff0c;任务通知的简介 相对于之前的信号量&#xff0c;事件组等&#xff0c;所谓的任务通知核心就是一个32位的无符号整数和8位的通知状态 任务通知可以通过如下方法更新接收任务的通知值&#xff1a; ● 不覆盖接收任务的通知值 ( 如果上次发送给接收任务的通知还没…

MyBatisPlus总结(1.0)

MyBatis-Plus MyBatis-Plus介绍 MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影…

为何波卡被称为Layer 0?

理解区块链的技术本质&#xff0c;将揭示加密货币运行轨迹的神秘面纱。了解这背后的原理&#xff0c;将为你带来全新的视角&#xff0c;让你对加密货币的奇妙世界充满无尽的好奇。 波卡是一个内部互连的区块链平台&#xff0c;被赋予技术堆栈元协议或Layer 0的定义&#xff0c…

Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务

前言 曾经&#xff0c;因为不够注重基础吃了好多亏。总是很喜欢去看那些高大上的东西&#xff0c;却忽略了最基本的东西。然后会错误的以为自己懂的很多&#xff0c;但是其实是沙堆中筑高台&#xff0c;知道很多高大上的架构&#xff0c;但是基础的东西却不太了解。我觉得&…

PySpark实战指南:大数据处理与分析的终极指南【上进小菜猪大数据】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 大数据处理与分析是当今信息时代的核心任务之一。本文将介绍如何使用PySpark&#xff08;Python的Spark API&#xff09;进行大数据处理和分析的实战技术。我们将探讨PySpark的基本…