Mozarts 发表于 2022-7-23 10:26

不知道怎么发送

让AD来采样电压,然后通过串口发送到上位机上。因为我采的电压是带有小数的,比如1.31、0、98、1.5像这样就不知道怎么发送啦!
01.float data_to_send = 1.23;

02.byte *p;

03.

04.p = (byte *)&data_to_send;

05.uart_send_byte(*p++);

06.uart_send_byte(*p++);

07.uart_send_byte(*p++);

08.uart_send_byte(*p);

_gege 发表于 2022-7-23 10:29

你AD采样出来的还是小数吗?

laozhongyi 发表于 2022-7-23 10:36

串口都是按照字符和字符串发送数据的。

wanglaojii 发表于 2022-7-23 10:38

如果是16进制数,就没有办法看到小数点“.”。

zhouhuanの 发表于 2022-7-23 10:45

16进制转ASCII码的办法:

1、数值:加0x30。比方“9”,9+0x30=0x39

2、字符:从A开始,大写时为0x41递增,小写时0x61递增。比方“A”0x41、“B”0x42、“a”0x61、“b”0x62

3、其它:小数点0x2e、回车0x0d、换行0x0a

bbapple 发表于 2022-7-23 10:47

如果是为了显示转换成文字就可以了。将每一位数字及符号转换成字符送回上位机就可以了。

handleMessage 发表于 2022-7-23 10:54

如果是想方便地传数据,float型是32位,double型是64位,转换成整数发出去,在上位机上再转换回来就可以了。

feiqi1 发表于 2022-7-23 10:56

可以采用ASCII来来处理,因为小数点有对应的数据。

androidbus 发表于 2022-7-23 11:01

用4个字节的无符号整数应该绰绰有余了,把小数放大转换成整数。

litengg 发表于 2022-7-23 11:02

放大了发送,上下位机协定好。

qiangweii 发表于 2022-7-23 11:08

先把二进制改为十进制,然后用标准输入输出函数输出,就好了

shashaa 发表于 2022-7-23 11:10

直接发AD值,然后上位机做处理,电脑的处理能力比单片机好多了。

xia00 发表于 2022-7-23 11:15

使用union共用体,把float转换为char型,再发出去{:lol:}

hfdy01 发表于 2022-7-23 11:15

读取的时候只要知道第几位是小数就可以的。

CallReceiver 发表于 2022-7-23 11:21

使用spritf。发送字符就行的。

boy1990 发表于 2022-7-23 11:22

所有的数据发送接收都按照16进制操作。

sourceInsight 发表于 2022-7-23 11:25

串口也可以发送浮点格式的。也可以人为的定义输出格式。

七毛钱 发表于 2022-7-23 11:48

把小数放大转换成整数
页: [1]
查看完整版本: 不知道怎么发送