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