这是我添加的程序:
这个函数PRIVATE void vSendData_1(void), 原来例程上没有,是我加的,
要把从PC上的UART送过来的一个字节数通过它送到Router,
*/
PRIVATE void vSendData_1(void)
{
AF_Transaction_s asTransaction[1]; // 这句什么含义 ?
/* Specify the transaction sequence number, JN-RM-2018 p15, */
// PUBLIC uint8 u8AfGetTransactionSequence(bool_t bAutoIncrease) in aps.h,
/* Specify the transaction sequence number,
U8SequenceNum: 标识KVP和MSG数据帧的序列号,这个号应该是单增的,
用来跟踪数据的丢包。 */
asTransaction[0].u8SequenceNum = u8AfGetTransactionSequence(TRUE);
// 每次只发送一个字节,把1赋给u8TransactionDataLen !!!
asTransaction[0].u.sMsg.u8TransactionDataLen = 1;
// 把cCharIn的内容赋给au8TransactionData:
asTransaction[0].u.sMsg.au8TransactionData[0] = cCharIn;
// 这个函数就是向协议栈发送了相应的数据发送请求将所有的数据发送到Router。
// 这是一个重点函数 !!! 它规定了MSG格式 !!!
(void)afdeDataRequest(APS_ADDRMODE_SHORT, /* Address type, Direct tx, */
add16shortAdd, /* Router的短地址, */
WSN_DATA_SOURCE_ENDPOINT, /* Router的端口号, */
WSN_DATA_SINK_ENDPOINT, /* Coordinator的端口号, */
WSN_PROFILE_ID, /* Profile ID */
WSN_CID_SENSOR_READINGS, /* Cluster ID */
AF_MSG, /* 规定了MSG格式 */
1, /* 本次请求发送的数据事务的数量 */
asTransaction, /* Transaction data */
APS_TXOPTION_NONE, /* Transmit options,
没有任何选项, */
SUPPRESS_ROUTE_DISCOVERY, /* Route discovery mode
使用强制路由发现模式 */
0); /* 设置为0那么协议栈将采用2倍的MaxDepth, */
}
/*
Macro Definitions in WSN_Profile.h,
#define WSN_DATA_SINK_ENDPOINT 0x40 是指Coordinator,
#define WSN_DATA_SOURCE_ENDPOINT 0x41 是指Router,
#define WSN_PROFILE_ID 0x123 这是由ZigBee联盟分配的 !!!
#define WSN_CID_SENSOR_READINGS 0x12 这是怎么定义的?它不代表数据包
的大小,
Coordinator处的接收程序添加完毕,
这个函数PRIVATE void vSendData_1(void), 原来例程上没有,是我加的,
要把从PC上的UART送过来的一个字节数通过它送到Router,
*/
PRIVATE void vSendData_1(void)
{
AF_Transaction_s asTransaction[1]; // 这句什么含义 ?
/* Specify the transaction sequence number, JN-RM-2018 p15, */
// PUBLIC uint8 u8AfGetTransactionSequence(bool_t bAutoIncrease) in aps.h,
/* Specify the transaction sequence number,
U8SequenceNum: 标识KVP和MSG数据帧的序列号,这个号应该是单增的,
用来跟踪数据的丢包。 */
asTransaction[0].u8SequenceNum = u8AfGetTransactionSequence(TRUE);
// 每次只发送一个字节,把1赋给u8TransactionDataLen !!!
asTransaction[0].u.sMsg.u8TransactionDataLen = 1;
// 把cCharIn的内容赋给au8TransactionData:
asTransaction[0].u.sMsg.au8TransactionData[0] = cCharIn;
// 这个函数就是向协议栈发送了相应的数据发送请求将所有的数据发送到Router。
// 这是一个重点函数 !!! 它规定了MSG格式 !!!
(void)afdeDataRequest(APS_ADDRMODE_SHORT, /* Address type, Direct tx, */
add16shortAdd, /* Router的短地址, */
WSN_DATA_SOURCE_ENDPOINT, /* Router的端口号, */
WSN_DATA_SINK_ENDPOINT, /* Coordinator的端口号, */
WSN_PROFILE_ID, /* Profile ID */
WSN_CID_SENSOR_READINGS, /* Cluster ID */
AF_MSG, /* 规定了MSG格式 */
1, /* 本次请求发送的数据事务的数量 */
asTransaction, /* Transaction data */
APS_TXOPTION_NONE, /* Transmit options,
没有任何选项, */
SUPPRESS_ROUTE_DISCOVERY, /* Route discovery mode
使用强制路由发现模式 */
0); /* 设置为0那么协议栈将采用2倍的MaxDepth, */
}
/*
Macro Definitions in WSN_Profile.h,
#define WSN_DATA_SINK_ENDPOINT 0x40 是指Coordinator,
#define WSN_DATA_SOURCE_ENDPOINT 0x41 是指Router,
#define WSN_PROFILE_ID 0x123 这是由ZigBee联盟分配的 !!!
#define WSN_CID_SENSOR_READINGS 0x12 这是怎么定义的?它不代表数据包
的大小,
Coordinator处的接收程序添加完毕,
发表评论 评论 (0 个评论)