通过利用比较字符串的方法来识别串口输入指令strncmp,这个是比较字符串函数,
使用方法
int strncmp(const char *str1, const char *str2, size_t n)
里面的参数
-
str1-- 要进行比较的第一个字符串。//这个一般是串口传入的字符串
-
str2-- 要进行比较的第二个字符串。//自己定义的字符串
-
n-- 要比较的最大字符数。
返回值
该函数返回值如下:
-
如果返回值 < 0,则表示 str1 小于 str2。
-
如果返回值 > 0,则表示 str2 小于 str1。
-
如果返回值 = 0,则表示 str1 等于 str2。
我们下面的代码就是利用了相等==的关系
如果输入的指令和我们设置的一样就执行相应的函数语句
while (1)
{
if(HAL_UART_Receive(&huart2, (uint8_t*)rxData,4, 100) == HAL_OK)
{
if(strncmp(rxData, "LED_ON",5)==0)//比较字符串,
{
LED_ON();开灯
HAL_UART_Transmit(&huart2, "Received LED_ON command\r\n",strlen("Received LED_ON command\r\n"), 100);
}
else if(strncmp(rxData,"LED_OFF",7)==0)
{
LED_OFF();//关灯
HAL_UART_Transmit(&huart2, "Received LED_OFF command\r\n",strlen("Received LED_ON command\r\n"), 100);
}
else if(strncmp(rxData,"LED_BLINK",9)==0)
{
LED_BLINK();//闪烁
HAL_UART_Transmit(&huart2, "Received LED_BLINK command\r\n", strlen("Received LED_BLINK command\r\n"), 100);
}
}
}