diff --git a/Documents/project documents/~$测试&半成品测试协议.docx b/Documents/project documents/~$测试&半成品测试协议.docx deleted file mode 100644 index 097e4ed..0000000 Binary files a/Documents/project documents/~$测试&半成品测试协议.docx and /dev/null differ diff --git a/User/application/src/tcpserverc.c b/User/application/src/tcpserverc.c index 57530c5..930ad35 100644 --- a/User/application/src/tcpserverc.c +++ b/User/application/src/tcpserverc.c @@ -156,45 +156,48 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf * communication_exception(tcp_tx_data, tcp_rx_data, CHECK_ERROR); tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); } - memcpy(communication_data.data, tcp_rx_data + 5, tcp_rx_data[4]); - if (tcp_rx_data[3] == 0x00) // 读模拟量指令 - { - /*读操作,从寄存器读取数据,组包返回*/ - tx_data_len = COM_AI_DATA_SIZE; - user_communication_ai = &communication_data.ai_data; - communication_get_ai(user_communication_ai, tcp_tx_data, tcp_rx_data); - tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); - } - else if (tcp_rx_data[3] == 0x01) // 写模拟量指令 - { - /*写操作,将数据写入寄存器,组包返回*/ - tcp_echo_flags_control = 1; - user_communication_ao = &communication_data.ao_data; - communication_set_ao(user_communication_ao); - tcp_write(tpcb, tcp_rx_data, rx_data_len, 1); - } - else if (tcp_rx_data[3] == 0x02) // 读数字量指令 - { - /*读操作,从寄存器读取数据,组包返回*/ - - 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); - } - else if (tcp_rx_data[3] == 0x03) // 写数字量指令 - { - /*写操作,将数据写入寄存器,组包返回*/ - user_communication_do = &communication_data.do_data; - user_write_gpio(user_communication_do); - tcp_write(tpcb, tcp_rx_data, rx_data_len, 1); - } else { - // 返回命令号错误 - tx_data_len = COM_ERROR_CODE_SIZE; - communication_exception(tcp_tx_data, tcp_rx_data, COMMAND_ERROR); - tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); + memcpy(communication_data.data, tcp_rx_data + 5, tcp_rx_data[4]); + if (tcp_rx_data[3] == 0x00) // 读模拟量指令 + { + /*读操作,从寄存器读取数据,组包返回*/ + tx_data_len = COM_AI_DATA_SIZE; + user_communication_ai = &communication_data.ai_data; + communication_get_ai(user_communication_ai, tcp_tx_data, tcp_rx_data); + tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); + } + else if (tcp_rx_data[3] == 0x01) // 写模拟量指令 + { + /*写操作,将数据写入寄存器,组包返回*/ + tcp_echo_flags_control = 1; + user_communication_ao = &communication_data.ao_data; + communication_set_ao(user_communication_ao); + tcp_write(tpcb, tcp_rx_data, rx_data_len, 1); + } + else if (tcp_rx_data[3] == 0x02) // 读数字量指令 + { + /*读操作,从寄存器读取数据,组包返回*/ + + 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); + } + else if (tcp_rx_data[3] == 0x03) // 写数字量指令 + { + /*写操作,将数据写入寄存器,组包返回*/ + user_communication_do = &communication_data.do_data; + user_write_gpio(user_communication_do); + tcp_write(tpcb, tcp_rx_data, rx_data_len, 1); + } + else + { + // 返回命令号错误 + tx_data_len = COM_ERROR_CODE_SIZE; + communication_exception(tcp_tx_data, tcp_rx_data, COMMAND_ERROR); + tcp_write(tpcb, tcp_tx_data, tx_data_len, 1); + } } /*2. 判断所要执行的操作 读或写指令*/