下位机程序发送数据?
个对很多人来说很简单的问题,在串口通信中,下位机怎么向上位机发送小数呢?他一般是字节方式或字符串发送的! 高手??? help??? 以ASCII码发送也行,以十六进制发送也行,只要上位机根据对应格式解读出正确数据即可 以十六进制发送:介绍个方法、比如要发送10.1(小数后精确一位)可以先放大十倍就等于101(101(十进制)==0x65(十六进制),你可以发送0x65然后上位机再提取整数和小数部分(101/10=10(整数部分提取) 101%10=1(小数部分提取)。这里只介绍这中方法当然还有别的方法,比如相对值和满度值等等,去网上看看 上位机好像直接使用小数的啊,我是不是可以一位一位地发? 四楼的可不可以来段AVR的程序啊? 3楼的同乡啊,你有个例子吗? 不知你下位机是如何定义小数的,如果是浮点数,直接发送浮点数的4个字节,上位机和下位机保持大小端一致,4楼的方法不错,能节省一半的空间和速率。 恩,是把float按四个字节发送吗?我感觉转换函数有点问题void FloatToChar(float Fvalue, unsigned char *pch)
{
unsigned char *p,i;
p=(unsigned char*)&Fvalue;
for(i=0;i<4;i++)
{
*pch=*p;
p++;
pch++;
}
}
页:
[1]