我有一个通过UART输入的输入。
uint8_t uartRX_data[UART_RX_BUF_SIZE]="";
我需要将此数据传递给函数。而且,在此函数中,我想将其与预定义的字符串进行比较,例如:
char RESP_OK[] = "OK";
char RESP_ERROR[] = "ERROR";
char RESP_FAIL[] = "FAIL";
最简单的方法是什么?
编辑:我的问题只是关于数据比较和数据传递给函数。
答案 0 :(得分:3)
只要uartRX_data
中的字符串以NULL终止,您就应该能够像这样使用strcmp
:
if (strcmp((const char *)uartRX_data, RESP_OK) == 0)
{
// handle OK
}
else if (strcmp((const char *)uartRX_data, RESP_ERROR) == 0)
{
// handle ERROR
}
else if (strcmp((const char *)uartRX_data, RESP_FAIL) == 0)
{
// handle FAIL
}
else
{
// handle unknown response
}
答案 1 :(得分:1)
在this.authService.login(this.username,this.password).subscribe((response : {token: string}) =>{
console.log("Response " + response.token);
});
,char
,signed char
,unsigned char
和int8_t
类型之间进行的大多数转换可以被认为是安全的。这些是字符类型,并带有各种特殊例外,使它们比其他类型更“坚固”。
具体来说,字符类型:
这意味着您可以在不同字符类型之间进行所有形式的狂野转换。除少数例外:
uint8_t
或const
限定词(如果存在)是危险的。 因此,可以安全地将volatile
转换为uint8_t*
并将数据取消引用为另一类型char*
。尤其是如果您知道(char*)uartRX_data
数组仅包含有效的7位字符,而从未设置过MSB,并且在数组末尾带有空终止符。