用过linux系统都知道,我们可以通过终端输命令来操作linux系统。

这个是对于PC机的。

但是对于嵌入式来说,没有显示器,那怎么来模拟这个终端了。这里就要用到嵌入式中最好用到功能,串口。我们可以通过串口,将要显示的东西发送给PC,然后PC在显示出来,这样不就模拟终端了。

用到的工具,secureCRT 7.2,虚拟串口,C51,proteus。

第一个工具,功能很强大,这里用来当串口终端,即通过串口发数据和接收数据。

首先是proteus构建原理图

串口接口的设置如上所示,连接到COM4,波特率为9600.

这里要注意的是,单片机的时钟频率要设置为11.0592M.

然后是设置虚拟串口

添加COM3和COM4一对虚拟串口。这样,将串口终端连接到COM3,这样就实现了串口终端盒proteus的连接了。

在secureCRT中设置

硬件平台搞定后,就要开始写程序了。

首先是要定义几个字符串:

uchar code a[] ="hello world!!!\r\n";

uchar code tishi[] = "[weiqi7777@localmain:#]:";

uchar code dis[] = "unknown command\r\n";

这里,第一个字符串是用来最开始显示的。。

第二个字符串,就是终端前面的提示部分。

第三个字符串,是说明无效命令的。。因为这里没有对命令进行处理,把所有接收到的命令都当成是未知命令。

然后就开始写程序了。

首先是main函数的主要部分:

void main()

{

uart_init();

uart_string(a);

while(1)

{

uart_string(tishi);

while(!flag);

flag = 0;

uart_string(b);

uart_string("\r\n");

uart_string(dis);

}

}

uart_init(),是串口初始化,就是配置串口。

uart_string(a); 这个函数,是将字符串a发送到串口。

下面的while循环就是关键了。

首先是发送提示的信息,即终端前面显示的那部分。这个在前面的数组中已经定义好了。

然后就等待一个while循环。这个循环判断的是flag。这个flag是接收数据标志位,当接收数据后,会为1,然后往下执行。如果没有接收到数据,那么为0.那么就会一直在循环里面。这样,就实现了等待接收命令。

程序中,是利用终端接收数据的。当接收数据后,会置flag为1.

接收到数据后,首先是发送接收到的数据。然后发送\r\n。实现换行。然后在发送 未知命令的字符串。

然后就是中断函数

void uart_interrupt() interrupt 4

{

uchar dat;

if(TI)

TI = 0;

if(RI)

{

RI = 0;

dat = SBUF;

//if(dat == '\n' || dat == '\r')

if(dat == '\r')

{

b[kk] = '\0';

kk = 0;

flag = 1;

uart_char('\r');

uart_char('\n');

}

else

{

b[kk++] = dat;

uart_char(dat);

}

}

}

主要的地方是在接收的部分。

对接收的数据,进行判断,如果是接收到了\r,即换行(这里的\r是测试出来的,因为secureCRT的回车发送的就是\r,不同的工具可能发送的不一样,有的可能是\n)。那么说明主机命令发送结束。那就将标志位置1,这样主函数就能跳出while循环,接着执行。接收的数据是存在一个数组里面的。如果接收的数据不是\r,那么说明是命令,就把接收到数据存在数组里面去。然后在把这个接收到的数据在发送回去。这里一定要发送回去,不然的话,在serureCRT那边,你输入命令,是看不到命令的。只能看到命令的执行效果。

数据接收完毕后,在发送一个\r\n。这样才能使下一次显示提示是在界面最左边的位置上的。

程序装载在proteus的单片机中。执行仿真。

开始界面

这是不是就很像linux中的终端了。

输入命令

然后就可以有执行效果了。

这样,就用串口模拟了linux的终端了。

这里只要在主函数的while(!flag) 这条语句之后,添加对命令处理的函数,这样就能真正模拟终端了。

可以看出,串口是有多么的好用。用这个方法,就能做出交互的界面来。只要在serure中输入命令。然后单片机接收到命令,对命令进行处理,然后将处理后的信息发回PC。

protues有linux客户端吗,串口实现linux系统的终端(用proteus)相关推荐

  1. 魔兽世界linux客户端,使用Wine在Linux下玩魔兽世界

    目标:在 Linux 中运行魔兽世界 发行版:适用于几乎所有的 Linux 发行版. 要求:具有 root 权限的 Linux 系统,搭配上比较现代化的显卡并安装了最新的图形驱动程序. 难度:简单 约 ...

  2. linux java usb 串口_2019-11-02 Linux下USB-串口的使用

    在实验室配置一台设备要用到串口,但串口线只连到了linux服务器上,又不想跑一趟实验室,就直接用linux串口连吧,以前都在windows上用putty, securecrt软件,还真没直接在linu ...

  3. linux客户端显示fin_wait2,解决Linux服务器 FIN_WAIT2 连接过多的问题

    现象: 查看Linux操作系统的netstat –ant|grep FIN_WAIT2|wc –l,发现值很大. 原因: 在HTTP应用中,SERVER由于某种原因关闭连接,如KEEPALIVE的超时 ...

  4. linux客户端配置网络打印机,请教linux命令行配置和使用网络共享打印机的..._网络编辑_帮考网...

    怪萌萝莉 答疑小能手 01-04 TA获得超过2613个赞 首先,要启动CUPS打印服务,用下面这个命令: /etc/init.d/cups start 然后在CUPS服务器主机server中,我们要 ...

  5. 详解Linux下的串口

    简介 串口也称串行通信接口(通常指COM接口),是实际工作中经常使用的一个接口,比如Linux下使用的debug串口,它用来登录Linux系统,输出log.另外也会使用串口和外部的一些模块通信,比如G ...

  6. windows串口控制linux,linux及windows下串口的使用.doc

    设置串口属性通常有以下几个步骤: 包含头文件: #include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*Unix 标准函数定义*/ #include ...

  7. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

  8. Zabbix Linux 客户端安装

    上次说了Zabbix 服务端的安装,今天在linux上安装了客户端,过程如下: (1)下载zabbix客户端软件 http://www.zabbix.com/download.php 根据客户端系统版 ...

  9. linux minicom usb串口

    http://www.cnblogs.com/xiaotlili/archive/2011/08/03/2126081.html linux下查看串口信息 查看串口是否可用,可以对串口发送数据比如对c ...

最新文章

  1. linux用户及用户权限管理,Linux用户用户组及权限管理
  2. 背包问题九讲 v1.0
  3. java集合租车_Java入门第二季 租车系统
  4. 大佬的引用。。。。太猛了啊
  5. sqlplus: error while loading shared libraries
  6. Vue 中的 v-cloak 作用及用法-vue页面加载时会闪烁
  7. 轻松实现无刷新三级联动菜单[VS2005与AjaxPro]
  8. 小菜鸡进阶之路.文件操作遇到坑
  9. 定时线程的使用 java_Java线程Timer定时器用法详细总结
  10. quicksort算法_QuickSort算法–用C,Java,Python实现
  11. [原创]Silverlight与SQLite数据库的互操作(CURD完全解析)[Final]
  12. ORK包的安装与linemod算法识别测试 (使用kinect v2 出现很奇怪的问题和解决)
  13. Xshell6已过期的解决方案
  14. Oracle数据库 | Oracle备份实例
  15. 查找国外硕士博士论文
  16. 测试手机软件打开速度的app,一加6千分之一秒 百款APP打开速度对比
  17. 微信中各种代码/符号合集
  18. 关于在递归中删除链表结点不会导致链表断链的理解
  19. 团队管理那点破事!OKR绩效、核心人才、面试、技术分享、研发流程....
  20. JavaScript数组函数

热门文章

  1. Python菜鸟之路:前端HTML基础
  2. windows安装torch_sparse\torch_geometric\torch_cluster
  3. python老是提醒双引号错误_避免最常见的python语法错误,建议收藏!
  4. batik库在Maven中版本
  5. javaweb项目设计思路
  6. fastadmin框架前台常用语句
  7. 【九度】题目1375:陈博的完美主义(25分)
  8. Java SSM毕设 公寓宿舍后勤管理系统(含源码+论文)
  9. 【向 Dice Roller 应用添加图片】
  10. spring boot设置session超时时长(自定义spring boot session超时时长)