95 lines
3.4 KiB
C
95 lines
3.4 KiB
C
#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]
|
||
);
|
||
}
|
||
}
|