gpt4 book ai didi

c++ - 将类型分配给 uint8_t 值

转载 作者:行者123 更新时间:2023-11-30 03:27:25 25 4
gpt4 key购买 nike

在我的项目中,我从 RFID 标签读取唯一 ID,结果采用 uint8_t TagRead[4] 形式。

将结果与许多预定义的标签 ID 值进行比较,以确定已读取哪个标签。

例如:

uint8_t RED1[4] = { 0x73, 0xD5, 0xB7, 0xAC };
uint8_t RED2[4] = { 0x7E, 0x27, 0x49, 0x4E };
uint8_t RED3[4] = { 0x02, 0xFD, 0x06, 0x40 };
uint8_t GREEN1[4] = { 0xAB, 0xEC, 0x68, 0x80 };
uint8_t GREEN2[4] = { 0xEE, 0x20, 0x50, 0x4E };
uint8_t GREEN3[4] = { 0x27, 0x06, 0x40, 0x73 };

if (*((uint32_t *)TagRead) == *((uint32_t *)RED2)) {
// RED2 tag has been read
}

else if (*((uint32_t *)TagRead) == *((uint32_t *)GREEN3)) {
// GREEN3 tag has been read
}

我的问题涉及能够将类型/类别分配给一组标签,以便可以根据已扫描标签的颜色执行操作。

可能是当扫描到红色标签时,我们打开红色 LED,当扫描到绿色标签时,我们打开蓝色 LED。

因为每种颜色大约有 50 个标签,所以我不想在 If 语句中列出所有标签名称。相反,是否可以将颜色分配给标签?

然后可以这样做:

如果扫描到的标签是红色类型,则执行红色操作。如果扫描的标签是绿色类型,则执行绿色操作。

感谢您的帮助。

最佳答案

您可以创建一个带有 id 和颜色枚举的结构:

enum class Color { red, green };

struct Tag
{
uint8_t id[4];
Color color;
};

Tag RED1 = { { 0x73, 0xD5, 0xB7, 0xAC }, Color::red } ;
Tag RED2 = { { 0x7E, 0x27, 0x49, 0x4E }, Color::red } ;
Tag RED3 = { { 0x02, 0xFD, 0x06, 0x40 }, Color::red } ;
Tag GREEN1 = { { 0xAB, 0xEC, 0x68, 0x80 }, Color::green } ;
Tag GREEN2 = { { 0xEE, 0x20, 0x50, 0x4E }, Color::green } ;
Tag GREEN3 = { { 0x27, 0x06, 0x40, 0x73 }, Color::green } ;

void test(Tag tag)
{
if (tag.color == Color::red)
{
//
}
else if (tag.color == Color::green)
{

}
}

关于c++ - 将类型分配给 uint8_t 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com