void SampleApp_SendPointToPointMessage( void )
{
//uint8 *abc ;
//abc= *pBuf++; //这个指针怎么处理呢,或者说下面的参数怎么处理
//uint16 data=10;
//uint16 j = 0;
rtgItem_t rt;
NLME_GetRequest(nwkRoutingTable,0,&rt);
char msg[100] = {0};
uint16 i = 0x2040;
//i=NLME_GetRequest(nwkNumRoutingTableEntries ,j,&data);
i=NLME_GetShortAddr();
sprintf(msg, "number:%x\n", i ); //换行符号的\nASCII码为10,居然被当作A输出了。因为A的ASCII码值为1
HalUARTWrite( 0, msg,osal_strlen("number:%x\n"));
//sprintf(msg, "ssssss:%x\n", i );
//HalUARTWrite( 0, msg, 9);
}
如上代码所示,这样的话换行符号被当作ASCII值被输出了,不能达到理想的输出效果。以下代码为在Zstack中:
将其修改为如下即可实现理想的输出并换行操作:
void SampleApp_SendPointToPointMessage( void )
{
//uint8 *abc ;
//abc= *pBuf++; //这个指针怎么处理呢,或者说下面的参数怎么处理
//uint16 data=10;
//uint16 j = 0;
rtgItem_t rt;
NLME_GetRequest(nwkRoutingTable,0,&rt);
char msg[100] = {0};
uint16 i = 0x2040;
//i=NLME_GetRequest(nwkNumRoutingTableEntries ,j,&data);
i=NLME_GetShortAddr();
sprintf(msg, "number:%x\n", i );
HalUARTWrite( 0, msg,osal_strlen("number:%x\n"));
HalUARTWrite( 0, "\n",1);
//sprintf(msg, "ssssss:%x\n", i );
//HalUARTWrite( 0, msg, 9);
}
PS:另外熟悉知识点:
HalUARTWrite函数中的字符长度不包括\0,strlen函数也不包括,sizeof函数包括需要加1(长度)。字符串输出函数的长度一定要控制好,要不然就会出现意想不到的错误。