打印
[STM32F0]

串口收发字符串怎样让字符串中的变量被识别成数值发送?

[复制链接]
2011|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
svenyang|  楼主 | 2016-9-23 13:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教串口收发字符串含变量怎么处理?怎样让字符串中的变量识别成数值?
具体比如
                                u16 value=25;
                                 strcpy(TxBuf1,"ABCD=value\n");
                                 for(i=0;TxBuf1[i]!='\0';i++)   
                                 {   
                                                USART_SendData(USART1,TxBuf1[i]);
                                                while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
                                 }
以上value是可变的,比如value=25的时候,怎样让串口发送字符串ABCD=25,而不是ABCD=value?
沙发
icecut| | 2016-9-23 14:05 | 只看该作者
printf或者自己写函数

使用特权

评论回复
板凳
airwill| | 2016-9-23 14:13 | 只看该作者
嗯, printf 可能效率上不见得能接受, 可以自己写个函数, 在 strcpy 后, 再执行一下, 把 value 的值转换到那个地址上去

使用特权

评论回复
地板
xyz549040622| | 2016-9-23 16:38 | 只看该作者
直接用sprintf搞定
void uart_sendLong(int32 da)
{
    xdata uint8 buf[10];
    sprintf(buf,"%8ld",da);
    uart_sendString(buf);
}

void uart_sendFloat(float da,int8 deci)
{
    xdata char buf[10];
    FloattoString(buf,da,deci);
    uart_sendString(buf);
}

void uart_sendHex(uint32 da)
{
    xdata char buf[10];
    sprintf(buf,"0x%lx ",da);
    uart_sendString(buf);
}

使用特权

评论回复
5
杨爱林林| | 2016-9-24 16:00 | 只看该作者
自己弄得话  得先写个int型转换为字符的函数
比如说value=25
转换为字符串就是
buf[0] = value/10 +'0';
buf[1] = value%10 + '0';
然后再来个字符串拼接函数。

使用特权

评论回复
6
svenyang|  楼主 | 2016-9-28 10:35 | 只看该作者
谢谢以上各位,我直接用替代搞定了:
                                 sprintf(Temp,"%d",T1);
                                 strcpy(TxBuf2,"TC1:TCADJUSTTEMP=T1\r");
                                 TxBuf2[17]=Temp[0];
                                 TxBuf2[18]=Temp[1];
以上将T1替代成了T1的值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

41

帖子

1

粉丝