嵌入式培训机构四个月实训课程笔记(完整版)-Linux基础第五天-Linux SHELL脚本(物联技术666)

  更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。

物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机领域.https://blog.csdn.net/weixin_39804904?type=blog

上午:TFT图形库函数    

下午:shell编程

教学内容:

1TFT库函数(自己编写)

#ifndef _TFT_API_H_

#define _TFT_API_H_

// PAINT_HOLLOW: 空心

#define PAINT_HOLLOW 1

// PAINT_SOLID : 实心

#define PAINT_SOLID 0

typedef int WIN_HANDLE;

typedef short FONT;

typedef unsigned short COLOR;

typedef struct {

            unsigned short CharWidth;

            unsigned short CharHeight;

            unsigned char *FontBuf;

}STR_FONT;

//=============================================================

//语法格式:     getFBP(char *devname)

//实现功能:     LCD 内核态的FramerBuffer映射到用户态,并获取其参数

//参数:                                   devnameTFT LCD驱动设备文件名

//返回值:                   

//影响:通过全局结构体指针info返回

//                                                         缓冲区首地址: info->fbp

//                                                         缓冲区宽度  info->xres

//                                                         缓冲区高度       info->yres

//                                                         缓冲区色深       info->bits_per_pixel

//=============================================================

void *getFBP(char *devname);

//图形显示颜色 转换宏定义 RGB888--->RGB565

#define RGB24(r, g, b)             ( (((COLOR)r&0xf8)<<8) | (((COLOR)g&0xfc)<<3) | (((COLOR)b&0xf8)>>3) )

//特定颜色 RGB565

#define            COLOR_WHITE             0xFFFF

#define            COLOR_BLACK              0x0000

#define            COLOR_RED                  0xF800

#define            COLOR_GREEN              0x07E0

#define            COLOR_BLUE                0x001F

#define            COLOR_MAGENTA         0xF81F

#define            COLOR_CYAN                0x07FF

#define            COLOR_YELLOW           0xFFE0

//描述窗口的结构体
typedef struct
{
    short TLx;   // 绘图区起始坐标
    short TLy;// 绘图区起始坐标
    short BRx;// 绘图区结束坐标
    short BRy;// 绘图区结束坐标
    short Width;// 绘图区宽度
    short Height;// 绘图区高度
    short CurTextX;// 文字绘制坐标
    short CurTextY;// 文字绘制坐标
    unsigned short Transparency;    // 绘图透明度
    short Flag;// 有效标志
    COLOR FGColor;// 绘图前景色
    COLOR BGColor;// 绘图背景色
    FONT AsciiFont;// 当前使用的ASCII字库
    FONT ChineseFont;// 当前使用的中文字库
}STR_WINDOW;

/*===========================================================*/

/*                      窗口操作类函数                       */

/*===========================================================*/

//=============================================================

//         TFT驱动程序初始化

//=============================================================

void TFT_Init(void);

//=============================================================

//         创建工作窗口,最对可创建15个窗口

//=============================================================

WIN_HANDLE TFT_CreateWindowEx(short TLx,// 左上角起始坐标
  short TLy,// 左上角起始坐标
  short width,// 窗口宽度
  short height,// 窗口高度
  COLOR BGColor);// 窗口背景色
                                                                                     
WIN_HANDLE TFT_CreateWindow(

short TLx,// 左上角坐标
short TLy,
short BRx,                   // 右下角坐标
short BRy,
COLOR BGColor);          // 背景颜色
 

//=============================================================

//         删除工作窗口(工作窗口区域清空)

//=============================================================

void TFT_DeleteWindow(WIN_HANDLE Handle);

//=============================================================

//         复制或移动工作窗口

//=============================================================

int TFT_MoveWindowEx(WIN_HANDLE Handle, short TLx, short TLy, int Cut);

//参数:TLx,TLy     新位置左上角坐标

// Cut       原窗口内容是否清除

//=============================================================

//         重设工作窗口(不改变屏幕图像)

//=============================================================

int TFT_ResetWindow(WIN_HANDLE Handle, short TLx, short TLy, short BRx, short BRy);

//=============================================================

//         移动工作窗口位置(不改变屏幕图像)

//=============================================================

int TFT_MoveWindowBorder(WIN_HANDLE Handle, short TLx, short TLy);

//=============================================================

//         工作窗口清屏

//=============================================================

void TFT_ClearWindow(WIN_HANDLE Handle);

//=============================================================

//         获取工作窗口宽度

//=============================================================

short TFT_GetWindowWidth(WIN_HANDLE Handle);

//=============================================================

//         获取工作窗口高度

//=============================================================

short TFT_GetWindowHeight(WIN_HANDLE Handle);

//=============================================================

//         设置新显示内容的透明度

//=============================================================

void TFT_SetTransparency(WIN_HANDLE Handle, unsigned short TransparencySet);

//=============================================================

//         获取当前设定的透明度

//=============================================================

unsigned short TFT_GetTransparency(WIN_HANDLE Handle);

//=============================================================

//         设置显示内容的前景色

//=============================================================

void TFT_SetColor(WIN_HANDLE Handle, unsigned short ColorSet);

//=============================================================

//         获取当前设定的前景色

//=============================================================

unsigned short TFT_GetColor(WIN_HANDLE Handle);

//=============================================================

//         设定显示背景色(对工作区、文本有效)

//=============================================================

void TFT_SetBGColor(WIN_HANDLE Handle, unsigned short ColorSet);

//=============================================================

//         获取当前设定的背景色

//=============================================================

unsigned short TFT_GetBGColor(WIN_HANDLE Handle);

//=============================================================

//         设置工作区中的文本显示位置

//=============================================================

void TFT_SetTextPos(WIN_HANDLE Handle, short x, short y);

//=============================================================

//         设置当前使用的中文字库

//=============================================================

void TFT_SetChineseFont(WIN_HANDLE Handle, FONT FontID);

//=============================================================

//         获取当前使用的中文字库信息

//=============================================================

FONT TFT_GetChineseFont(WIN_HANDLE Handle, STR_FONT *FontInfo);

//=============================================================

//         设置当前使用的ASCII字库

//=============================================================

void TFT_SetAsciiFont(WIN_HANDLE Handle, FONT FontID);

//=============================================================

//         获取当前使用的ASCII字库信息

//=============================================================

FONT TFT_GetAsciiFont(WIN_HANDLE Handle, STR_FONT *FontInfo);

/*===========================================================*/

/*                        绘图类函数                         */

/*===========================================================*/

//=============================================================

//         在工作区的指定位置画点

//=============================================================

void TFT_PutPixel(WIN_HANDLE Handle, short x, short y);

//=============================================================

//         获取工作区内指定坐标像素的颜色

//=============================================================

unsigned short TFT_PickColor(WIN_HANDLE Handle, short x, short y);

//=============================================================

//         在工作区中根据颜色表绘制行

//=============================================================

void TFT_PutPixelLine(WIN_HANDLE Handle, short x, short y, short len, COLOR *ColorTab);

//=============================================================

//         在工作区中画直线

//=============================================================

void TFT_Line(WIN_HANDLE Handle, short x1, short y1, short x2, short y2);

//=============================================================

//         在工作区中画圆

//=============================================================

void TFT_Circle(WIN_HANDLE Handle, unsigned x,unsigned y,unsigned r,unsigned Mode);

//                                             x - 圆心的x坐标(相对于工作区)

//                                             y - 圆心的y坐标(相对于工作区)

//                                             r - 圆的半径

//                                             Mode -  PAINT_HOLLOW:1 空心圆  PAINT_SOLID:0 实心圆

//=============================================================

//         在工作区中矩形

//=============================================================

void TFT_Rectangle(WIN_HANDLE Handle,                     // 窗体指针

                                                   unsigned x1,                                    // 左上角坐标

                                                   unsigned y1,

                                                   unsigned x2,                                    // 右下角坐标

                                                   unsigned y2,

                                                   unsigned Mode);                                                                             

                  // PAINT_HOLLOW:1 空心

                  // PAINT_SOLID :0 实心

                                                                     

/*===========================================================*/

/*                        汉字及图像显示类                  */

/*===========================================================*/                           

                                                                     

                                                                                                                                                                                                                                 

//=============================================================

//         显示一个字符或汉字

//=============================================================

void TFT_PutChar(WIN_HANDLE Handle, unsigned short CharCode);

//=============================================================

//         根据指定格式打印字符串

//=============================================================

void TFT_Print(WIN_HANDLE Handle, const char *format, ...);

//=============================================================

//         在工作区中显示图像

//=============================================================

void TFT_PutImageEx(WIN_HANDLE Handle, short x, short y, short width, short height, void *pImage);

//=============================================================

//         在工作区中显示图像

//=============================================================

void TFT_File_Picture(WIN_HANDLE Handle, short x, short y, char * Bmp_Name, int AutoScale);

//参数   x,y图片在窗口中的位置

// Bmp_Name                图片的名称(如不在当前路径下,需包含路径信息)

// AutoScale:                    1:图片自适应窗口大小             0:不适应

//  自适应窗口用于当图像大于窗口时,并且图像显示的起始不能在窗口之外

#endif

2、shell是一种具备特殊功能的可执行程序,它是介于使用者和UNIX/linux操作系统内核间的一个接口。

shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。

在Linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。

3、开一个新的shell,在关闭了后会返回在上一层的shell.

4、要重新开一个shell,而不是在当前shell下开shell;命令是:. test.sh=./source test.sh

       新开的shell是在原来的shell基础上开的

5、当编辑好脚本程序后,要使脚本程序可执行,需要改变其权限:#chmod+x filename

6set,显示当前shell中的命令

7echo $变量名:打印变量名到屏幕

8export 变量名:对下一层能包含使用;对上一层没作用。

9unset 取消设置变量

10、测试条件:test condition 等效[  condition  ](中括号两边必须要有空格)

#test -e /dir && echo exist”  :其中&&是代表前面成立才执行后面的

11、在shell运行中,可以直接定义变量,比如:

本身就是一个shell命令解析器,可以直接输入name=hb

此时在运行的shell脚本中会有存在这个命令,打set查看shell内容,如下图:

shell其中加了一个name

此后,在以后的使用中可以直接调用变量,调用命令是$name,如下图:

此变量只能当前的bash下显示;如果在下一层的bash中,此变量是不能使用的;必须把变量定义为export name=hb;在定义之后,下面层次的shell程序都可以使用;但在定义的上面层次的不能使用。

12read从键盘读入变量内容语法:

[test @test test]# read name

testing

[test @test test]# echo $name

testing

超实用的Linux/Unix Shell快捷键汇总 (2012-07-31 16:12)

标签:  Linux  Shell  UNIX  实用  快捷键  分类: shell

近期在工作中发现,许多同事,尤其是我们的PHP开发者,基本不会用Linux/Unix下的快捷方式,严重影响工作效率,所以特撰写此文,每个用法后我会详细注释。

下述所有命令在Linux/Unix的shell下有效,这里以bash为主。如有出入,以你自己的服务器为准。本文所指的Linux主要指RHEL/CentOS,Unix指的是FreeBSD,这也是Unix服务器中用得最多的版本。

Ctrl + a 切换到命令行开始

这个操作跟Home实现的结果一样的,但Home在某些Unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在Windows的许多文件编辑器里,这个也是有效的。

Ctrl + e 切换到命令行末尾

这个操作跟END实现的结果一样的,但End键在某些Unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在Windows的许多文件编辑器里,这个也是有效的。

Ctrl + l 清除屏幕内容,效果等同于clear

Ctrl + u 清除剪切光标之前的内容

这个命令很有用,在nslookup里也是有效的。我有时看见同事一个字一个字的删除shell命令,十分崩溃!其实完全可以用一个Ctrl + u搞定。

Ctrl + k 剪切清除光标之后的内容

Ctrl + y 粘贴刚才所删除的字符

此命令比较强悍,删除的字符有可能是几个字符串,但极有可能是一行命令。

Ctrl + r 在历史命令中查找 (这个非常好用,输入关键字就调出以前的命令了)

这个命令我强烈推荐,有时history比较多时,想找一个比较复杂的,直接在这里,shell会自动查找并调用,方便极了

Ctrl + c 终止命令

Ctrl + d 退出shell,logout

Ctrl + z 转入后台运行

不过,由Ctrl + z转入后台运行的进程在当前用户退出后就会终止,所以用这个不如用nohup命令&,因为nohup命令的作用就是用户退出之后进程仍然继续运行,而现在许多脚本和命令都要求在root退出时仍然有效。

下面再被充下大家不是太熟悉,我用得比较多的操作方式:

!! 重复执行最后一条命令

history 显示你所有执行过的编号+历史命令。这个可以配合!编辑来执行某某命令

↑(Ctrl+p) 显示上一条命令

↓(Ctrl+n) 显示下一条命令

!$ 显示系统最近的一条参数

最后这个比较有用,比如我先用cat /etc/sysconfig/network-scripts/ifconfig-eth0,然后我想用vim编辑。一般的做法是先用↑ 显示最后一条命令,然后用Home移动到命令最前,删除cat,然后再输入vim命令。其实完全可以用vim !$来代替。

开发和管理员的话,掌握以上用法后,基本上工作就很有效率了;用到最后,你会不经意发现,弹指之间,许多复杂的指令你会很轻松的搞定。

你可能感兴趣的:(嵌入式培训笔记,linux,c语言,开发语言,笔记)