精彩代码分析-1
void SlaveClone_Version(u8 ucComm)//发送版本信息
{u8 ucI;u8 ucSour;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_START]=FRAME_DATA_START_A;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_START+1]=FRAME_DATA_START_B;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_COMMAND]=ucComm; //'v';ucSour=0;for(ucI=0;ucI<48;ucI++){if(g_ucSoftVerBuf[ucSour]==0)break;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_DATA+ucI]=g_ucSoftVerBuf[ucSour];ucSour++;}ucSour=0;for(;ucI<48;ucI++){if(g_ucSoftDateBuf[ucSour]==0)break;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_DATA+ucI]=g_ucSoftDateBuf[ucSour];ucSour++;}g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_BYTES]=ucI;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_DATA+ucI]=CLONE_GenerateCheckSum(g_ucUart0TxBuf+OFF_APPCLONE_BLOCK_COMMAND,ucI+2);ucI++;g_ucUart0TxBuf[OFF_APPCLONE_BLOCK_DATA+ucI]=FRAME_DATA_END;ucI++;g_wUart0TxLen=OFF_APPCLONE_BLOCK_DATA+ucI;HAL_UART_Transmit_IT(&g_hUart0,g_ucUart0TxBuf,g_wUart0TxLen); //开始发送数据
}
这里是串口编程的一段代码,
if(g_ucSoftVerBuf[ucSour]==0)break;
这一句很精彩,可以在检测出‘/0’的时候break,ucI<48,这里48不一定是准确的数据的长度,只要检测出‘/0’就会退出。