我正在使用这些代码从uart接收字符串,然后将其与此枚举匹配,然后将它们放在开关盒上。
char temp[3],rx_buf[100];
enum form {
GGA = 1,
GSA
};
enum form gnssform ;
sprintf(temp,"%c%c%c",rx_buf[3],rx_buf[4],rx_buf[5]);
gnssform=temp;
我不明白我们可以直接使用示例:
gnssform=GSA;
并没有错误,但这:
gnssform=temp;
不要编译。请告诉我执行此操作的可能方法???,因为此示例,我相信这是必须的。
错误是:
类型“ char *”的值不能分配给“枚举形式”类型的实体
请不要告诉我使用if-else,因为我讨厌这样。
最后我用了
if(rx_buf[3]=='G'&&rx_buf[4]=='G'&&rx_buf[5]=='A')gnssform=GGA;
else if(rx_buf[3]=='G'&&rx_buf[4]=='S'&&rx_buf[5]=='A')gnssform=GSA;
最佳答案
GSA
是enum form
的常数。temp
是指向三个字母“ GSA”的字符指针。
它们不是一回事,您不能直接分配它们。