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);
}