我的系统有两个串口,
系统启动时用串口1作为控制台终端,串口0作为和其它系统通信使用。
如何在系统启动后,通过app修改,使串口0作为控制终端?
tty = open("/dev/ttyO0", O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
close(tty);
我通过ioctl操作后,串口0能输出app的打印信息,但是没有命令提示符。串口0不能完成系统的控制。
离线
没想到还可以这么玩
离线
网上搜索了一圈,没有找到想要的答案。
既然串口0能打印app的输出,证明标准输入输出已经切换过来了,估计只要自己在这个基础上实现一个简单的shell就行了。
实在找不到别的办法,也只能尝试这个方法了。不知道谁有好的思路?
离线
http://www.emtronix.com/article/article2013546.html
重定向控制台终端console至tty1:
int fd;
printf('Close cnsole\n');
fd = open('/dev/tty1',O_RDONLY); // 改变console
ioctl( fd, TIOCCONS );
close( fd );
恢复控制台终端console至缺省设置:
fd = open('/dev/tty0',O_RDONLY); // 恢复console
ioctl( fd,TIOCCONS );
close( fd );
printf('change console back: ttyS0\n');
貌似和你的差别不大。
离线
我已经初步解决了这个问题,没有找到更简单的思路,还是采用上面提到的,自己实现一个简易的shell。
简易的shell,可以参考csdn的这篇帖子。
https://blog.csdn.net/qq_37964547/article/details/79703953
不过,要做到真正实用,要考虑很多方面的问题,比如 字符删除、 快捷键、自动补全、历史命令、甚至环境变量等问题,
如果这样,那就超出本帖要讨论的范畴了。
最近编辑记录 tom (2018-06-27 12:31:31)
离线
还有这种操作,真是活到老学到老!
离线