历史上的今天
今天是:2024年10月08日(星期二)
2019年10月08日 | 串口通信中的float型数据的处理
2019-10-08 来源:eefocus
1、将串口接收的数据转换为float型数据
float CXXDlg::FourChar2Float(char* szBuf, //HEX ASC数据
bool bBigEndian = false) //指示是否是Big Endian结构
{
typedef union
{
unsigned char uc[4];
float f;
}Float4Byte;
Float4Byte f4b;
if(bBigEndian) //大端模式 调整数据顺序(因为PC机是小端模式)
{
f4b.uc[0] = (unsigned char)szBuf[3];
f4b.uc[1] = (unsigned char)szBuf[2];
f4b.uc[2] = (unsigned char)szBuf[1];
f4b.uc[3] = (unsigned char)szBuf[0];
}
else
{
f4b.uc[0] = (unsigned char)szBuf[0];
f4b.uc[1] = (unsigned char)szBuf[1];
f4b.uc[2] = (unsigned char)szBuf[2];
f4b.uc[3] = (unsigned char)szBuf[3];
}
return f4b.f; //返回浮点数数据
}
2、将float型数据转换成CString显示,精确到小数点nDigit位
void CXXDlg::Float2CString(float fIn, CString& csOut, int nDigit)
{
char szTmp[32] = {0};
//fIn四舍五入,保留小数点后nDigit位
float fTimes = pow((float)10, nDigit);
int nTmp = (int)(fIn*fTimes + 0.5);
fIn = nTmp/fTimes;
sprintf_s(szTmp, sizeof(szTmp), "%f", fIn);//将fIn转为字符串
CString csTmp = szTmp;
int nPos = 0;
nPos = csTmp.Find(".");
csOut = csTmp.Left(nPos);//小数点左边的部分
csOut += csTmp.Mid(nPos, nDigit+1);//小数点后面nDigit位,包括小数点
}
注:变量f为float型,n为int类型,则能实现将f中的数值保留小数点后两位,第三位四舍五入运算的表达式是
n=f*100+0.5,f=n/100.0
上一篇:单片机用串口传输浮点型数据方法
下一篇:STM8 ADC初始化+采集数据
史海拾趣
|
在网上看到许多有关MCU的问题和评论 也许其中有很多是枪手写的 其实我没有真正的用过任何的MCU 说以有错的地方请高手指正 STC 最国产 频率打五折用 AVR 最老龄死 就他没样片 超级孤寒 PIC 卖广告最多 超常在教材上花心思 MSP430功耗最大 说 ...… 查看全部问答> |
|
BridgeWave Communications是能够提供完整的点到点毫米波链路解决方案的公司之一,公司在全球部署有数千台60和80GHz的无线千兆比特设备。该公司的毫米波无线设备支持局域网(LAN)干线扩展、移动电话回传应用以及大容量互联网接入。他们提供的无线系 ...… 查看全部问答> |
|
我编写了一个基于Windows ce的应用程序,其中要求能支持打印。要想实现,需要做哪些工作?请指教。 开发板使用的是ICOP的VDX6354,是支持打印的。 但是我将打印机插上(通过usb,并且是hp打印机)以后,系统没有自动显示新添加的打印机。 这是什 ...… 查看全部问答> |
|
我们在为客户开发一款机器,使用pxa270的cpu,客户要求可以在线播放youtube视频。 使用IE上Youtube的网站,总是自动转到youtube的mobile版,视频是3gp格式的,点击播放自动弹出mediaplay,但是提示连接不上服务器。如果上youtube的桌面版,则提示f ...… 查看全部问答> |
|
各位,我现在想实现这样的功能: 1、从数据库中获取电话号码后(如:12345),通过拨号按钮直接拨到此电话上(12345)。 2、拨通后,接受的电话(12345)可以听到一段录音,然后按提示选择对应的功能健。比如按1同意,按2不同意,按3转人工。 3 ...… 查看全部问答> |
|
我想用flash magic下载提供的例程hex文件到板子中。我有个串口线&USB通讯电源线。串口线连接到COM1,然后将P0.14所在的JP2短接,电源部分JP7短接。不知为什么始终连接不成功。期间看到板子介绍说,可以全自动ISP下载,于是将JP2,JP1,JP3都短接(R ...… 查看全部问答> |




