- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用一对 MRF24J40 radio 芯片来让一个 PIC32 微 Controller 板通过射频传输与另一个微 Controller 板进行通信。我的所有代码都可以正常编译,但我不断收到与此代码相关的错误。
typedef struct
{
union
{
BYTE Val;
struct
{
BYTE packetType :2; // type of packet. Possible types are
// * PACKET_TYPE_DATA - Data type
// * PACKET_TYPE_COMMAND - Command type
// * PACKET_TYPE_ACK - Acknowledgement type
// * PACKET_TYPE_RESERVE - Reserved type
BYTE broadcast :1; // 1: broadcast, 0: unicast
BYTE secEn :1; // 1: secure the MAC payload, 0: send plain text
BYTE repeat :1; // 1: allow repeaters to forward the message, 0: send message directly
BYTE ackReq :1; // 1: acknowledgement required, 0: no acknowldgement
BYTE destPrsnt :1; // 1: destination address in the packet, 0: destination address not in the packet
BYTE sourcePrsnt :1; // 1: source address in the packet, 0: source address not in the packet
} bits;
} flags;
BYTE * SourceAddress; // Address of the Sender
BYTE * Payload; // Pointer to the payload
BYTE PayloadLen; // Payload size
BYTE RSSIValue; // RSSI value for the received packet
BYTE LQIValue; // LQI value for the received packet
#if defined(IEEE_802_15_4)
BOOL altSourceAddress; // Source address is the alternative network address
WORD_VAL SourcePANID; // PAN ID of the sender
#endif
} MAC_RECEIVED_PACKET;
基本上,我已经尝试了世界上所有的方法来更改变量 packetType
、secEn
、ackReq
等的值。已尝试在声明后直接更改值,但这似乎是位长度,而不是值。代码(直接来自 microchip 的网站)有注释说 1 = this 和 0 = that,但我还没有找到可以更改这些值的任何地方。如果任何熟悉这些 MRF24J40 芯片的人提供帮助,我们将不胜感激。谢谢。
最佳答案
我认为这与您的微 Controller 没有任何特定关系,只是您可能不熟悉如何使用 struct
和 union
定义位域在 C 中。
MAC_RECEIVED_PACKET
是一个 struct
,它有一个名为 flags
的字段。 flags
是 BYTE
和名为 bits
的 struct
位域之间的并集
。
在声明中,bits
中的每个字段后面都跟着其位长度。因此,例如,2 位的 packetType 可以采用值 0、1、2、3。您可以这样设置值:
MAC_RECEIVED_PACKET foo;
foo.flags.bits.packetType = 3;
foo.flags.bits.secEn = 1;
/* etc. */
关于c - Microchip 射频调制器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140087/
我想使用相同的代码在客户端和服务器端对对象进行排序和操作。 但我遇到了一个问题,因为在客户端中我们需要一个代表服务器类的代理接口(interface)。 有没有办法在两者中使用相同的接口(interf
我已经从数据库中获取了数据并得到了这个元组。我正在使用下面的代码将元组转换为列表。但输出是按索引进行的。喜欢 ${Rows} [('3/6/2018', '16', '8', '50.00', '
我是一名优秀的程序员,十分优秀!