可考虑使用联合数据结构。在联合数据内部设两种数据类型:一种为浮点型;另一种为字节型。一个浮点数和四个字节型数据可相互转换。串口发送时,先转换成四个字节
typedef union{float f; char send[4]} float_t;当浮点数时使用f,发送时使用send即可
先定义一个float 类型变量从sbuf中取出数据。
float val;
val = SBUF;
根据你要求的小数精度,把小数乘以个倍数吧。
0.1*10=1
0.0001*10000=1
读取到数据后,在将数据除以倍数。
您是33.5是一組char字元組嗎?
如果是,直接接收char字元組後在依序計算值就可
1. 找到字串中的小數點'.'
2. 小數點以前的依照2^0,2^1,2^2...依序遞增加總
3. 小數點之後的依照2^-1,2^-2,2^-3,...依序加總
只後由float變數計算加總後結果
以上