重定向printf到udp输出,端口8888

This commit is contained in:
murmur 2024-12-15 16:35:35 +08:00
parent b110c919bc
commit 07aaa98dc4
3 changed files with 55 additions and 0 deletions

View File

@ -251,6 +251,7 @@ static void handle_status_request(uint8_t sn)
// 发送完成后主动关闭连接
disconnect(sn);
printf("send status success!\r\n");
}
void http_server_task(void)

View File

@ -110,6 +110,7 @@ int main(void)
// 执行一次HTTP客户端测试
// http_test_request();
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
printf("Init success!\r\n");
/* USER CODE END 2 */
/* Infinite loop */

View File

@ -1,4 +1,6 @@
#include "w5500_init.h"
#include <stdio.h>
#include "socket.h"
// W5500 Network Configuration
wiz_NetInfo gWIZNETINFO = {
@ -37,6 +39,52 @@ static void W5500_WriteByte(uint8_t byte) {
W5500_WriteBuff(&byte, 1);
}
// UDP日志相关定义
#define UDP_LOG_PORT 8888 // UDP日志端口
#define UDP_LOG_SOCKET 7 // 使用Socket 7作为日志socket
// 初始化UDP日志功能
int8_t UDP_Log_Init(void);
// 发送UDP日志数据
void UDP_Log_Send(const uint8_t* data, uint16_t len);
static uint8_t udp_log_buffer[1024]; // UDP发送缓冲区
int8_t UDP_Log_Init(void)
{
// 关闭可能已经打开的socket
close(UDP_LOG_SOCKET);
// 以UDP模式打开socket
if(socket(UDP_LOG_SOCKET, Sn_MR_UDP, UDP_LOG_PORT, 0) != UDP_LOG_SOCKET)
{
return -1;
}
return 0;
}
void UDP_Log_Send(const uint8_t* data, uint16_t len)
{
uint8_t broadcast_ip[] = {255, 255, 255, 255}; // 广播地址
sendto(UDP_LOG_SOCKET, data, len, broadcast_ip, UDP_LOG_PORT);
}
// printf重定向相关实现
#ifdef __GNUC__
int _write(int file, char *ptr, int len)
{
UDP_Log_Send((uint8_t*)ptr, len);
return len;
}
#elif defined(__ICCARM__)
size_t __write(int handle, const unsigned char *buffer, size_t size)
{
UDP_Log_Send(buffer, size);
return size;
}
#endif
int8_t W5500_Init(void)
{
// 1. 注册通信函数
@ -70,5 +118,10 @@ int8_t W5500_Init(void)
}
}
// 初始化UDP日志功能
if(UDP_Log_Init() < 0) {
return -1;
}
return 0;
}