嵌入式串口打印信息重定向到当前终端界面
转至 https://blog.csdn.net/wuquan_1230/article/details/105782687
概述
在嵌入式Linux系统中,有时通过远程(telnet或者ssh)登录到现场设备,想看程序的实时打印的调试信息,需要将输出到串口的调试信息重定向到当前登录的终端界面上。
也可以将程序重新启动到当前终端界面,但是在程序出现问题时,如果重启程序,可能会破坏了问题现场,再查找问题就不好查找了。
下面是实现的代码,可以将输出到串口的日志信息,重定向到当前的telnet或者ssh界面上,是不是很神奇!
实现代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>int main(int argc, char *argv[])
{int tty = -1;char *tty_name = NULL;if(argc < 2){printf("miss argument\n");return 0;}/* 获取当前tty名称 */tty_name = ttyname(STDOUT_FILENO);printf("tty_name: %s\n", tty_name);if(!strcmp(argv[1], "on")){/* 重定向console到当前tty */tty = open(tty_name, O_RDONLY | O_WRONLY);ioctl(tty, TIOCCONS);perror("ioctl TIOCCONS");}else if(!strcmp(argv[1], "off")){/* 恢复console */tty = open("/dev/console", O_RDONLY | O_WRONLY);ioctl(tty, TIOCCONS);perror("ioctl TIOCCONS");}else{printf("error argument\n");return 0;}close(tty);return 0;
}
嵌入式串口打印信息重定向到当前终端界面相关推荐
- 具备过滤串口打印信息的串口工具SerialTools
纯属找乐,不用勿喷.......免费下载,下载方式在最后! 设计初衷: 做嵌入式硬件同事应该都遇到过查看设备串口打印信息,有时打印的内容太多,总是找不到自己关注的log,因此花了一下午设计了这个简单的 ...
- STC15单片机-串口打印printf重定向
printf函数重定向为往串口打印信息 在UART.h.UART1.h和UART.c文件的内容编写好后,在main函数中实现通过串口发送一串字符串和一个不断加1的变量 方法一: 使用sprintf函数 ...
- 读芯片信息出错3_十分钟看懂串口打印信息(1)
一.软件串口打印信息加载流程 不管何种机芯方案,在上电开机后,软件 总会初始化复位和加载相关内容和应用,这部 分的信息通常我们采用串口工具来进行读写的 操作. 针对我们工作的需求和作为问题处理的可 靠 ...
- Linux串口输出启动信息,linux开发板启动过程串口打印信息
满意答案 板子软件分三部分: 1.uboot (负责初始化基本硬件,如串口,网卡,usb口等,然后引导系统运行) 2.linux系统 (真正的操作系统) 3.你的应用程序 (基于操作系统的软件应用) ...
- openwrt关闭串口打印信息
mt7620n仅有一个串口 由于开发板只有一个UART lite接口,在原生的OpenWrt中作为了内核打印和tty控制台所用. 而在很多情况下,需要使用串口与外部芯片进行通讯,这时就需要从OpenW ...
- 泰凌微 Telink TLSR825X Printf gpio 模拟 串口 打印信息 log
如题: 使用telink可以使用printf功能,之前我不了解,我一度以为这是uart 实现的printf 在配置的时候,居然配置 uart 对应的gpio接口,后面这个问题坑了一段时间. 其实pri ...
- Linux串口打印信息工具,基于Qt实现Linux或Windows串口打印工具
一.运行结果 二.实现过程 1.打开串口 首先我们需要创建一个QSerialPort对象,然后调用它的open函数打开串口设备,然后再调用它的bool setBaudRate(qint32 baudR ...
- 服务器查看串口打印信息,串口打印服务器如何设置打印机
串口打印服务器如何设置打印机 内容精选 换一换 本节介绍如何基于迁移好的TensorFlow训练脚本,在裸机环境的多个Device上执行训练.使用前须知:一个Device对应执行一个训练进程,当前不支 ...
- rk3328 android10 Debug串口打印信息
1.原理图如下: 2.kernel dts修改如下: diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dtsi b/arch/ ...
最新文章
- List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
- 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮
- Py之smtplib:smtplib(aiosmtplib)的简介、安装、使用方法之详细攻略
- 【计算机网络】Session机制
- NIO 之 ByteBuffer实现原理
- flume高可用-failover-模型分析
- @Scheduled执行阻塞解决办法
- python计算绩效工资_python实现 --工资管理系统
- (46)System Verilog 类中变量随机激励权重分布
- 摘得“2019最佳智能手机”大奖的华为P30系列究竟比iPhone XS系列强在哪
- Python工作笔记001---python3的print加括号_Python3中不存在raw_input( )了
- Database2Sharp之混合型Winform框架代码生成
- 阶乘与 pi 的关系 —— 斯特林公式(Stirling formula)
- Caffe环境搭建指北
- 野火stm32f103的mcuisp设置与一键ISP下载原理分析总结
- Unity中内嵌网页插件 UniWebView 2.8使用
- 合成孔径雷达(微波遥感)的应用
- 阿里云 银行卡 信息 四要素 验证
- ZXing设置前置摄像头扫描
- 到底cms企业建站系统是什么?为什么要做cms系统?
热门文章
- sas java 虚拟机异常_深入理解JAVA虚拟机之异常诊断
- android listview 自适应列宽_Android 开发技术周报 Issue#272
- Mac在命令行中打开Finder
- 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
- vant在cell中加表格_Vant Cell 单元格
- python程序是怎么构成的_python程序的构成
- 一年级下册数学计算机应用题,一年级数学下册期中检测试题
- 深度学习之正则化方法
- 医保费用监控指标体系建立(九)其他专项分析
- 计算机视觉开源代码集合(转载)