更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。
物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机领域.https://blog.csdn.net/weixin_39804904?type=blog
上午:TFT图形库函数
下午:shell编程
教学内容:
1、TFT库函数(自己编写)
#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映射到用户态,并获取其参数
//参数: devname:TFT 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
6、set,显示当前shell中的命令
7、echo $变量名:打印变量名到屏幕
8、export 变量名:对下一层能包含使用;对上一层没作用。
9、unset 取消设置变量
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程序都可以使用;但在定义的上面层次的不能使用。
12、read从键盘读入变量内容语法:
[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 !$来代替。
开发和管理员的话,掌握以上用法后,基本上工作就很有效率了;用到最后,你会不经意发现,弹指之间,许多复杂的指令你会很轻松的搞定。