zoukankan      html  css  js  c++  java
  • beaglebone_black_学习笔记——(4)闪烁LED之shell命令

    上一篇笔记在终端输入shell命令实现了LED灯的点亮与熄灭,作为初学者,已经兴奋了一阵,因为终于有了零的突破。手动点亮LED总会比较麻烦,还是得通过程序让它自己去点亮与熄灭,这样才更好玩。这篇笔记里,笔者通过学习shell脚本,实现LED的闪烁,这样才好玩。本篇笔记还是先从现象看起,然后在分析其实现原理。

    第一步:实现LED灯闪烁

    1、先来个简单的shell脚本,了解一下shell脚本的使用流程。下图为创建一个名为hello_sh的shell脚本编辑执行的过程。

    clipboard[5]

    几点说明:

    (1)shell脚本可以没有文件后缀名,但是为了方便,也可以添加.sh为其后缀。上图中用_sh作为表示,也可以没有;

    (2)shell脚本创建可以利用touch filename的形式来创建;

    (3)编辑shell脚本可以直接使用vi编辑器,关于vi编辑器的简单实用请查看上一篇笔记;

    (4)shell脚本是不需要编译就可以运行,有shell解释器完成命令的解读与执行;

    (5)新建的shell脚本需要为其添加可执行权限,否则执行时会出错;

    (6)运行shell脚本直接使用 ./* 就可以运行;

    (7)上图中hello_sh脚本文件里只有一行内容,目的是输出hello字符,脚本内容如下图。

    image

    2、下面就进入今天的主题,首先还是要手动创建shell脚本文件,笔者的文件名为led_sh。创建和添加权限的过程就不在此贴了,请参考上文。下面直接贴出led_sh的内容。

    image

    几点说明:

    (1)有关shell的详细使用,请参考这个链接http://c.biancheng.net/cpp/shell/。这个网站有精简的shell教程,对于初学者来说入门还是挺快的;

    (2)简答解释一下脚本内容:

         1)第1行:在终端显示hello led一串字符;

        2)第2~4行:这部分是一个if语句,目的是查看是否有gpio44文件,如果没有,通过第3行脚本添加一个;

        3)第4行:为gpio44添加输出属性;

        4)第7~13行:这部分是一个while语句,在while语句里面先点亮LED,然后睡眠0.25秒再熄灭LED,再睡眠0.25秒。如此不停的循环。

        5)第14行:关闭LED灯。

    3、通过vi编辑器输入上面的脚本,然后运行,就可以看到LED灯闪烁的状态了。现象和上一篇笔记是一样的,不过这次直接运行脚本就可以实现不断的闪烁了。

    clipboard[7]clipboard[9]

    第二步:学习简单的shell脚本

    1、echo用法上一篇笔记已经说明,此处不再说明。

    2、if用法。

    if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。if语句有三种用法,这里只说明最简单的一种语法,if ... else 语句:

    1 if [ expression ] then 
    2     Statement(s) to be executed if expression is true
    3 fi

    几点说明:

    (1)如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。

    (2)最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写。

    (3)expression 和方括号([ ])之间必须有空格,否则会有语法错误。

    3、while用法。

    while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

    while command
    do    Statement(s) to be executed if command is true
    done

    几点说明:

    (1)命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假,否则不退出;

    (2)循环体的内容包含在do……done之间。

  • 相关阅读:
    HDU5586 最大连续和 xingxing在努力
    HDU5587 递推式+二分 xingxing在努力
    HDU2639 第k小01背包 xingxing在努力
    Java面向对象之继承
    Java面向对象之封装
    Java面向对象之封装
    Java流程控制语句
    Java流程控制语句
    Java运算符
    Java运算符
  • 原文地址:https://www.cnblogs.com/zhezhe1988/p/4263682.html
Copyright © 2011-2022 走看看