
单片机怎么通过串口发送unsigned int类型的数据?
最近在做温度传感器的数据采集,DS18B20读出来的数据保存在了uint里,想把该数据采集出来发送到手机。请问该怎么做?...
最近在做温度传感器的数据采集,DS18B20读出来的数据保存在了uint里,想把该数据采集出来发送到手机。请问该怎么做?
展开
2个回答
展开全部
额 这还是个问题 单片机位数型号不同 int的长度是不一样的 拿stm32f1来说 int是32位的 就是4个char(8位) 你可以从高位开始发送四次 接收端再给他们拼凑出一个int就行了
void send (unsigned int a)
{
unsigned char s[4];
s[0] =(unsigned char) ((a &0xff000000) >> 24);
s[1] =(unsigned char) ((a &0xff0000) >> 16);
s[2] =(unsigned char) ((a &0xff00) >> 8);
s[3] =(unsigned char) (a &0xff) ;
//发送四个char就行了 接收的过程反过来
}
void send (unsigned int a)
{
unsigned char s[4];
s[0] =(unsigned char) ((a &0xff000000) >> 24);
s[1] =(unsigned char) ((a &0xff0000) >> 16);
s[2] =(unsigned char) ((a &0xff00) >> 8);
s[3] =(unsigned char) (a &0xff) ;
//发送四个char就行了 接收的过程反过来
}
展开全部
发送方:制订通讯协议,将16位数据分为高低两个字节,依次发送。
接收方:根据通讯协议,取出数据域的高低两个字节,拼接保存为16位数据。
百度嫌我字数不够
接收方:根据通讯协议,取出数据域的高低两个字节,拼接保存为16位数据。
百度嫌我字数不够
追问
能举个例子吗,我不太懂C语言的机制,我在百度看到别人的回答是
int i ;
a=i/256;
b=i%256;
SBUF=a;
while(!TI);
TI=0
SBUF=b;
while(!TI);
TI=0
这样子吗?我试过了,在串口调试助手里,只会显示个叉叉或者一个正方形
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询