|
有没有使用threadx的消息队列收发字符串的例子,跟着硬汉教程收发数值没问题,收发字符串就出问题了,打印出来是hell111111111111111111111111111111111111,核心代码如下
#define MAX_LOG_MESSAGE_LEN 256
#define LOG_QUEUE_SIZE 20
/* 定义日志队列 */
TX_QUEUE log_queue;
UCHAR log_queue_buffer[LOG_QUEUE_SIZE * MAX_LOG_MESSAGE_LEN];
/* 定义日志处理任务 */
void log_processing_task(ULONG thread_input)
{
CHAR log_message[MAX_LOG_MESSAGE_LEN];
while (1)
{
/* 从日志队列中接收消息 */
tx_queue_receive(&log_queue, log_message, TX_WAIT_FOREVER);
/* 处理日志消息,这里可以替换成实际的日志处理逻辑 */
printf("Log message: %s\n", log_message);
}
}
/* 初始化日志处理任务和日志队列 */
void initialize_logging()
{
/* 创建日志队列 */
tx_queue_create(&log_queue, "Log Queue", sizeof(CHAR), log_queue_buffer,
LOG_QUEUE_SIZE * MAX_LOG_MESSAGE_LEN);
/* 创建日志处理任务 */
tx_thread_create(&log_processing_task_thread, "Log Processing Task",
log_processing_task, 0,
log_processing_task_stack, LOG_PROCESSING_TASK_STACK_SIZE,
LOG_PROCESSING_TASK_PRIORITY, LOG_PROCESSING_TASK_PRIORITY,
TX_NO_TIME_SLICE, TX_AUTO_START);
}
/* 异步日志记录函数 */
void async_log()
{
char log_message[MAX_LOG_MESSAGE_LEN] = "helloworld\n";
/* 向日志队列发送消息 */
tx_queue_send(&log_queue, log_message, TX_WAIT_FOREVER);
}
|
|