From adbd7818d0d50da3f2f98a121bafbc45c8295bbd Mon Sep 17 00:00:00 2001 From: wangxujie Date: Fri, 14 Feb 2025 11:08:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=BC=A0=E8=BE=93=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8C=89=E5=8D=95=E5=AD=97=E8=8A=82=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/TEST2.uvoptx | 20 +++++++++++++++++++ User/application/inc/communication_protocol.h | 3 ++- User/application/src/tcpserverc.c | 3 ++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/MDK-ARM/TEST2.uvoptx b/MDK-ARM/TEST2.uvoptx index 95523fe..62b8d63 100644 --- a/MDK-ARM/TEST2.uvoptx +++ b/MDK-ARM/TEST2.uvoptx @@ -230,6 +230,26 @@ 1 hart1_uart5 + + 16 + 1 + user_communication_di + + + 17 + 1 + current_buff + + + 18 + 1 + user_communication_ao + + + 19 + 1 + communication_data + diff --git a/User/application/inc/communication_protocol.h b/User/application/inc/communication_protocol.h index 0a5bc6c..958ff8c 100644 --- a/User/application/inc/communication_protocol.h +++ b/User/application/inc/communication_protocol.h @@ -16,7 +16,7 @@ typedef enum COMMAND_ERROR, DEVICE_ERROR, } communication_error_e; - +#pragma pack(1) typedef struct { uint8_t start_addr; @@ -49,6 +49,7 @@ typedef union communication_ao_t ao_data; communication_ai_t ai_data; } communication_data_u; +#pragma pack() void communication_exception(uint8_t *tx_data, const uint8_t *const rx_data, communication_error_e error_code); void communication_get_ai(communication_ai_t *ai_data, uint8_t *tx_data, const uint8_t *const rx_data); diff --git a/User/application/src/tcpserverc.c b/User/application/src/tcpserverc.c index 0d33074..57530c5 100644 --- a/User/application/src/tcpserverc.c +++ b/User/application/src/tcpserverc.c @@ -176,8 +176,9 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf * else if (tcp_rx_data[3] == 0x02) // 读数字量指令 { /*读操作,从寄存器读取数据,组包返回*/ - tx_data_len = 7 + user_communication_di->num; + user_communication_di = &communication_data.di_data; + tx_data_len = 7 + user_communication_di->num; user_read_gpio(user_communication_di, tcp_tx_data, tcp_rx_data); tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); }