- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
说明
Sprintf 功能 把格式化的数据写入某个字符串缓冲区。
头文件
stdio.h
原型
int sprintf( char buffer, const charformat, [ argument] … );
转换字符
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位
代码
void SendRepayPacket(char*replay_cmd,unsigned int pCmdData)
{ unsignedchar pPacket[20];
unsignedshort wdLen = 0;
unsignedchar btCheckSum = 0;
unsignedchar i;
unsignedchar pCmdData_buffer[20];
unsignedshort sendBufferLen = 0;
sprintf(pCmdData_buffer,"%s,%d,",replay_cmd,pCmdData);
wdLen= strlen(pCmdData_buffer);
pPacket[0]= DALI_STX;
pPacket[1]= (wdLen + 1) & 0xFF;
pPacket[2]= (wdLen + 1) >> 8;
pPacket[3]= Address;
for(i= 0;i<wdLen;i++)
{
pPacket[4+ i] = pCmdData_buffer[i];
}
for(i=0;i< wdLen;i++)
{
btCheckSum+= pCmdData_buffer[i];
}
pPacket[4+ wdLen] = btCheckSum;
pPacket[5+ wdLen] = DALI_ETX;
sendBufferLen= wdLen + 5 + 1;
MAX3485_UART_SendData(pPacket,sendBufferLen);
}
void SendRepayPacket_2(char*replay_cmd,unsigned int pCmdData,unsigned int pCmdData1)
{ unsignedchar pPacket[20];
unsignedshort wdLen = 0;
unsignedchar btCheckSum = 0;
unsignedchar i;
unsignedchar pCmdData_buffer[20];
unsignedshort sendBufferLen = 0;
sprintf(pCmdData_buffer,"%s,%d,%d,",replay_cmd,pCmdData,pCmdData1);
wdLen= strlen(pCmdData_buffer);
pPacket[0]= DALI_STX;
pPacket[1]= (wdLen + 1) & 0xFF;
pPacket[2]= (wdLen + 1) >> 8;
pPacket[3]= Address;
for(i= 0;i<wdLen;i++)
{
pPacket[4+ i] = pCmdData_buffer[i];
}
for(i=0;i< wdLen;i++)
{
btCheckSum+= pCmdData_buffer[i];
}
pPacket[4+ wdLen] = btCheckSum;
pPacket[5+ wdLen] = DALI_ETX;
sendBufferLen= wdLen + 5 + 1;
MAX3485_UART_SendData(pPacket,sendBufferLen);
}