Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
msh
串口
控制台
怎么读取到msh控制台输入的命令
发布于 2025-03-04 10:48:34 浏览:37
订阅该版
如题,怎么读取到msh控制台输入的命令(我的意思是输入的内容全部重定向获取出来),请各位大佬赐教  这个代码会提示`Failed to find console device!` ```c #include
#include
static void read_user_input(void) { char buffer[100]; // 定义一个缓冲区来存储用户输入 rt_device_t console_dev; /* 查找控制台设备 */ console_dev = rt_console_get_device(); if (!console_dev) { rt_kprintf("Failed to find console device!\n"); return; } rt_kprintf("Please enter something: "); /* 读取用户输入 */ rt_size_t len = rt_device_read(console_dev, 0, buffer, sizeof(buffer) - 1); if (len > 0) { buffer[len] = '\0'; // 添加字符串结束符 rt_kprintf("You entered: %s\n", buffer); // 打印用户输入 } else { rt_kprintf("Failed to read input!\n"); } } /* 导出到 MSH 命令 */ MSH_CMD_EXPORT(read_user_input, Read user input from console); ```
查看更多
1
个回答
默认排序
按发布时间排序
crystal266
4小时前
嵌入式
可以通过分析一下控制台的实现源码看一下,源代码中 shell.c 中的函数 `finsh_system_init()` 初始化了 `finsh_thread` 线程,该线程的入口函数是 `finsh_thread_entry()` 控制台的线程函数中通过 `ch = (int)finsh_getchar();` 来获取控制台的输入的每个字符,结构体成员 `shell->line` 存储的是控制台输入的内容,我觉得可以从这里尝试修改。 ```c void finsh_thread_entry(void *parameter) { int ch; /* normal is echo mode */ #ifndef FINSH_ECHO_DISABLE_DEFAULT shell->echo_mode = 1; #else shell->echo_mode = 0; #endif #if !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) /* set console device as shell device */ if (shell->device == RT_NULL) { rt_device_t console = rt_console_get_device(); if (console) { finsh_set_device(console->parent.name); } } #endif /* !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) */ #ifdef FINSH_USING_AUTH /* set the default password when the password isn't setting */ if (rt_strlen(finsh_get_password()) == 0) { if (finsh_set_password(FINSH_DEFAULT_PASSWORD) != RT_EOK) { rt_kprintf("Finsh password set failed.\n"); } } /* waiting authenticate success */ finsh_wait_auth(); #endif rt_kprintf(FINSH_PROMPT); while (1) { ch = (int)finsh_getchar(); if (ch < 0) { continue; } ... ... //其他内容 ```
撰写答案
登录
注册新账号
关注者
0
被浏览
37
关于作者
hywing
嵌入式系统开发工程师,从事物联网、工业自动化、汽车电子开发工作
提问
4
回答
3
被采纳
0
关注TA
发私信
相关问题
1
串口DMA发送数据时,数据被覆盖
2
关于串口DMA模式下rt_device_close问题
3
利用stm32f427实现usb转串口,电脑端什么也没有识别到
4
finsh 控制台 适配 RS 485请大神指点????
5
uart_sample.c 中,读串口设备时偏移量pos要设置为-1而不是0?
6
【结贴】at_device软件包中对串口接收数据缺少判断导致数据接收异常
7
串口无法接受数据,但可以发送
8
串口如何有效的清除掉接收缓冲,而不必一个一个的去读取
9
串口接收使用方式问题
10
雅特力FINSH问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
10年开发后,我后悔坚持的8个技术信仰,不知你踩中几个
2
MCAX-156 ADC测评
3
【FRDM-MCXA156测评】- CherryUSB与hid鼠标设备模仿
4
【FRDM-MCXA156测评】- 硬件SPI模块
5
【NXP-MCXA156】恩智浦A156上的 IIC(硬件) 实践
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
GD32
ADC
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
SFUD
C++_cpp
at_device
本月问答贡献
出出啊
1520
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
178
次被采纳
crystal266
554
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部