#include "bsp_print.h" #include "proto_modbus_tcp_master.h" #include "bsp_Flash.h" #include "stdio.h" static u32 last_tick = 0; // 记录上次打印的 tick /*重定义fputc函数*/ int fputc(int ch, FILE *f) { u8 Data = ch; COM_Uart3.Send(&COM_Uart3,&Data,1); } void Debug_UartSend(u8 *pData,u16 Len) { //COM_Uart1.Send(&COM_Uart1,pData,Len); } void UartSend(u8 ch) { COM_Uart3.Send(&COM_Uart3,&ch,1); } /** * @brief 每秒打印一次所有 Modbus TCP 数据(通过串口1) * @note 该函数需要被主循环(或定时任务)周期性调用。 * 内部使用静态变量记录上次打印时刻,利用 os_timer 判断是否达到1秒。 * 打印内容包括:状态寄存器(8个)、浮点值(26个)、整数值(4个)。 */ void proto_modbus_print_1s(void) { u8 cnt = 0; // 检查是否已过 1000ms if (TIME_TRUE == OsTimer_CheckTimeOut(last_tick, osTime_MSecTick, 5000) && Usr_Flash.test == 2) { last_tick = osTime_MSecTick; // 更新时间戳 printf( "\r\n========== Modbus TCP Data ==========\r\n" "40000~40007: 0x%04X(%u), 0x%04X(%u), 0x%04X(%u), 0x%04X(%u), " "0x%04X(%u), 0x%04X(%u), 0x%04X(%u), 0x%04X(%u)\r\n" "40050~40100: %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, " "%.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, " "%.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, " "%.3f, %.3f\r\n" "40250~40253: %u, %u, %u,\r\n" "========== End of Dump ==========\r\n", // 8个状态寄存器(每个打印两次:十六进制和十进制) modbus_tcp.data.reg_status[0], modbus_tcp.data.reg_status[0], modbus_tcp.data.reg_status[1], modbus_tcp.data.reg_status[1], modbus_tcp.data.reg_status[2], modbus_tcp.data.reg_status[2], modbus_tcp.data.reg_status[3], modbus_tcp.data.reg_status[3], modbus_tcp.data.reg_status[4], modbus_tcp.data.reg_status[4], modbus_tcp.data.reg_status[5], modbus_tcp.data.reg_status[5], modbus_tcp.data.reg_status[6], modbus_tcp.data.reg_status[6], modbus_tcp.data.reg_status[7], modbus_tcp.data.reg_status[7], // 26个浮点值 modbus_tcp.data.float_values[0], modbus_tcp.data.float_values[1], modbus_tcp.data.float_values[2], modbus_tcp.data.float_values[3], modbus_tcp.data.float_values[4], modbus_tcp.data.float_values[5], modbus_tcp.data.float_values[6], modbus_tcp.data.float_values[7], modbus_tcp.data.float_values[8], modbus_tcp.data.float_values[9], modbus_tcp.data.float_values[10], modbus_tcp.data.float_values[11], modbus_tcp.data.float_values[12], modbus_tcp.data.float_values[13], modbus_tcp.data.float_values[14], modbus_tcp.data.float_values[15], modbus_tcp.data.float_values[16], modbus_tcp.data.float_values[17], modbus_tcp.data.float_values[18], modbus_tcp.data.float_values[19], modbus_tcp.data.float_values[20], modbus_tcp.data.float_values[21], modbus_tcp.data.float_values[22], modbus_tcp.data.float_values[23], modbus_tcp.data.float_values[24], modbus_tcp.data.float_values[25], // 3个整数值 modbus_tcp.data.int_values[0], modbus_tcp.data.int_values[1], modbus_tcp.data.int_values[2] ); } }