请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F2274 你好!
我已经读过一些关于 strcat 和 strcpy 的其他文章、但我不明白为什么我的字符串会这样发送。 输出应为:
"rpm:1234 mA:0213"、但我得到的是"rpm:1234{4字节 LF 或垃圾}mA:0213"
以下是代码片段:
void SendData()
{
volatile unsigned int TempDataInt = 0;
strcpy (&StrBuf[0]," ");
strcpy (&StrBuf[0]、"rpm:");
TempDataInt = binToBCD ((long unsigned int) rpm);
DataBuf[3]=(TempDataInt & 0x000F)| 0x30;// u
TempDataInt >=4;
DataBuf[2]=(TempDataInt & 0x000F)| 0x30;// d
TempDataInt >=4;
DataBuf[1]=(TempDataInt & 0x000F)| 0x30;// c
TempDataInt >=4;
DataBuf[0]=(TempDataInt & 0x000F)| 0x30;// m
TempDataInt >=4;
strcat (&StrBuf[0]、&DataBuf[0]);
strcat (&StrBuf[0]、"mA:");
TempDataInt = binToBCD ((long unsigned int)(current*1000));
DataBuf[3]=(TempDataInt & 0x000F)| 0x30;
TempDataInt >=4;
DataBuf[2]=(TempDataInt & 0x000F)| 0x30;
TempDataInt >=4;
DataBuf[1]=(TempDataInt & 0x000F)| 0x30;
TempDataInt >=4;
DataBuf[0]=(TempDataInt & 0x000F)| 0x30;
TempDataInt >=4;
strcat (&StrBuf[0]、&DataBuf[0]);
__no_operation();
for (r=0;<strlen(&StrBuf[0]);r++) r
{
UCA0TXBUF = StrBuf[r];
while (UCA0STAT 和 UCBUSY);
}
}