基本完成的所有收发功能

This commit is contained in:
2026-05-07 17:47:52 +08:00
parent 61530dccec
commit f05c3106f1
82 changed files with 3008 additions and 4922 deletions

View File

@ -196,31 +196,28 @@ static void send_di_event(uint8_t channel, uint8_t state)
char msg[32];
uint8_t cs;
/* 构造消息主体channel+1将0-base转换为1-base的用户可见编号 */
int len = snprintf(msg, sizeof(msg), "$DI_EVENT,%d,%d,%d*", channel + 1, state, SOURCE_DI);
/* 计算异或校验和,跳过'$'符号只对正文部分计算 */
cs = calc_checksum(msg + 1, len - 1);
/* 将校验和追加到消息末尾,格式为两位十六进制数 */
snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs);
/* 输出调试日志到UART2记录状态变化 */
DEBUG_LOG("CH%d -> %s", channel + 1, state ? "HIGH" : "LOW");
/*----------------------------------------------------------
* 向UART1(RF433模块)发送状态变化事件
* 这是IO事件的主要路由通道用于无线上报到上位机
*----------------------------------------------------------*/
MultiUART_SendString(PORT_UART1, msg);
/* ==========================================================
🚀 核心修改:不再直接发送 msg而是套上 [0xAA] 和 [ID] 的外衣
========================================================== */
uint8_t rf_tx_buf[64];
rf_tx_buf[0] = 0xAA; // 贴上魔法帧头
rf_tx_buf[1] = MY_DEVICE_ID; // 贴上本机的身份证号 (来自 main.h)
uint16_t msg_len = strlen(msg);
memcpy(&rf_tx_buf[2], msg, msg_len); // 把真正的 DI 消息塞到第 2 个字节后面
/* 将带 ID 的完整包裹发送给 433 模块 */
MultiUART_Send(PORT_UART1, rf_tx_buf, msg_len + 2);
/* ========================================================== */
/* 输出完整消息到UART2方便调试查看 */
DEBUG_LOG("RF433 TX: \"%s\"", msg);
/*----------------------------------------------------------
* 如果设置了回调函数,也通过回调发送
* 用于支持额外的自定义处理逻辑
*----------------------------------------------------------*/
if (g_event_callback != NULL) {
g_event_callback(channel, state, msg);
}