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

news/2024/11/8 14:42:09/

目录

一、前言

二、实践与代码

        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.ppmy.cn/news/301278.html

相关文章

简评无线投屏

无线投屏器市场上已经有很多产品了,小到几百的杂牌大到几万的巴可,本人在会议室领域从业三年做过大大小小会议室也有上百间,当前的趋势是智能化无线化因此无线投屏在当前的会议室安装中是一个必不可少的设备,但在会议室工程中选择…

巴可放映机服务器型号怎么看,巴可放映机根据影片怎么选择通道,JPEG和MPEG分别是什么,...

通道最窄处应大于102cm,放映间门/楼梯最窄处应大于80cm,转弯处空间130cm。 JPEG为常见的一种图像格式,它由联合图像专家组(Joint Photographic Experts Group)开发。JPEG文件的扩展名为.jpg或.jpeg,它用有损压缩方式去除冗余的图像…

Barco Control Room Management Suite - 目录遍历(CVE-2022-26233)

一、漏洞描述 通过 Suite 2.9 Build 0275 进行的巴可控制室管理被发现容易受到目录遍历的影响&#xff0c;从而允许攻击者访问敏感信息和组件。请求必须以“GET /..\..”字符串开头。 二、影响版本 Barco Control Room Management Suite < 2.9 build 0275 三、漏洞环境 …

电力系统故障造成科视CP2210辅助电源损坏

我们县一家3D影院用科视CP2210放映机&#xff0c;加电无反应&#xff0c;据工作人员反应&#xff0c;前段时间电力故障造成电压不稳&#xff0c;造成出票打印机电源烧坏&#xff0c;但是当时放映机工作正常&#xff0c;所以也没在意&#xff0c;经过近一个月的使用&#xff0c;…

USB Server应用于RPA机器人案例分析

USB Server应用于RPA机器人案例分析 在技术更迭日新月异的今天&#xff0c;以机器人为代表的人工智能正在广泛应用于企业的业务流程中&#xff0c;RPA软件“机器人”就是一个例子。 RPA机器人就像一个虚拟员工&#xff0c;可以捕捉并模拟我们日常的键盘、鼠标操作等人机交互行…

中国电子信息制造业投资策略分析及十四五需求前景预测报告2022-2028年版

中国电子信息制造业投资策略分析及十四五需求前景预测报告2022-2028年版 m 第1章&#xff1a;中国电子信息制造业发展环境分析1.1 电子信息制造业界定 1.1.1 电子信息制造业定义 1.1.2 电子信息制造业分类 1.1.3 电子信息制造业产业链 1.2 电子信息制造业政策环境 1.2.1 …

中国电子信息制造产业运营模式及未来投资方向建议报告2022版

中国电子信息制造产业运营模式及未来投资方向建议报告2022版 ------------------------------------- 《修订日期》&#xff1a;2022年2月 《出版单位》&#xff1a;鸿晟信合研究院 《对接人员》&#xff1a;周文文 【内容分析有删减了解详情可查看咨询鸿晟信合研究院专员&…

异构平台轮询出现问题,错误代码:10912

解决方法&#xff1a; 查看日志 MAP的在sm/coship-sm/sm/log/ 根据故障发生的时间来查找相关的错误日志&#xff0c;注意查一下错误代码表&#xff0c;10912的是发给SM没回复&#xff0c;证明鉴权的过程是正常的&#xff0c;应该直接找SM的日志。 错误代码表&#xff1a; 问…