
linux应用程序
floatinglong
这个作者很懒,什么都没留下…
展开
-
linux应用程序_1_文本浏览器_1_基本框架
linux应用程序_1_文本浏览器_1_基本框架 文本浏览器主要功能细分:1、获取用户控制信号(翻页、退出)2、读取文本(读取一个个字符)3、解析文本(取得字体位图)4、显示文本(描绘字体) 文本格式:ASCII(GBK)、Utf8、Utf16-be、Utf16-le字库:ASCII、HZK16、freetype显示文本的方式:控制台显示、LCD显示用户...原创 2019-01-28 10:13:33 · 178 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_7_Makefile_1_支持arm
linux应用程序_1_文本浏览器_7_Makefile_1_支持arm 依据之前的通用Makefile修改:一、顶层Makefile1、工具链 :CROSS_COMPILE 2、编译选项:CFLAGS 3、链接选项:LDFLAGS 4、依赖 :obj 二、顶层Makefile.build无需变动 三、子目录Makefile依赖 ...原创 2019-01-28 11:55:37 · 188 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_7_Makefile_2_支持pc机
linux应用程序_1_文本浏览器_7_Makefile_2_支持pc机 依据上文的Makefile修改:一、顶层Makefile1、工具链 :CROSS_COMPILE 2、编译选项:CFLAGS 3、链接选项:LDFLAGS 4、依赖 :obj 二、顶层Makefile.build无需变动 三、子目录Makefile依赖 ...原创 2019-01-28 11:59:51 · 205 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_7_Makefile_3_通用性改进
linux应用程序_1_文本浏览器_7_Makefile_3_通用性改进 改进上文Makefile,使其既能使用gcc编译、又能使用arm-linux-gcc编译,为此用到了Makefile的条件判断以及编译中与宏相关的选项基本思路:根据工具链不同,选择性添加编译选项、链接选项、依赖、宏 使用gcc编译:make distclean && make CROSS_...原创 2019-01-28 12:12:22 · 183 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_8_输入设备_1_input_manager
linux应用程序_1_文本浏览器_8_输入设备_1_input_manager 前面使用的都是串口输入,接下来几篇文章,会抽象出一个输入结构体,并且添加触摸屏输入 本篇先抽象出输入结构体,并完善抽象操作 抽象输入结构体依据:1、名字2、输入设备的初始化(打开设备等)、退出(标准输入的方式切换等)3、获得事件接口4、链表typedef struc...原创 2019-01-29 14:58:59 · 185 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_4_display_3_安装svga库
linux应用程序_1_文本浏览器_4_display_3_安装svga库 控制台显示图片使用到了svga库,下面讲一下svga库的安装下载svga库及其补丁svgalib_1.4.3.orig.tar.gz svgalib_1.4.3-30.debian.tar.gz 在linux-pc中,为svga库打上补丁后安装会提示出错,缺少libx86库 下载li...原创 2019-01-29 14:51:31 · 277 阅读 · 0 评论 -
编写一个通用的Makefile
在windows系统中,我们编写了一个应用程序,直接点击编译链接,IDE(如VC、VS)就会为我们生成我们需要的目标文件(hex、exe等);而在linux中,我们需要在命令行输入命令来完成这个过程,并且对于不同的应用程序,输入的命令不同,同一个应用程序,可能需要输入多条命令,例如:a.c#include <stdio.h>#include "a.h"int main(...原创 2019-01-23 23:43:54 · 349 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_8_输入设备_2_轮询机制
linux应用程序_1_文本浏览器_8_输入设备_2_轮询机制 这里的两种输入设备分别是指标准输入(非阻塞方式)、触摸屏输入,测试代码可以修改前面的draw.c、main.c得到,文末给出相关的draw和main,Makefile也需要作出相应修改1、增加input目录的Makefile2、修改顶层Makefile:编译选项:增加tslib头文件所在目录链接选项:增加...原创 2019-01-29 15:22:11 · 246 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_8_输入设备_3_select机制
linux应用程序_1_文本浏览器_8_输入设备_3_select机制 在以前驱动程序中也有了解倒,轮询机制十分耗费Cpu资源,一般是不使用的在arm上输入以下命令,开启telnetd服务telnetd -l /bin/sh使用远程登陆工具登陆以telnetd方式连接到arm在telnetd连接界面输入top,即可查看cpu占用率 为解放Cpu,这里引入selec...原创 2019-01-29 16:07:58 · 179 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_8_输入设备_4_多线程机制
linux应用程序_1_文本浏览器_8_输入设备_4_多线程机制 上一篇引入了select机制,解决了Cpu占用率高的问题,但它只适用于简单场合,为了提高灵活性,本文引入多线程基本思路:所有线程平时处于休眠状态,当某个输入设备有数据可读,唤醒该输入设备的线程,处理数据,再由该线程唤醒主线程,呈递数据给main所有的线程共同全局变量,为了避免干扰,线程机制中有一个互斥锁,每次使用全局...原创 2019-01-30 00:10:07 · 168 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_8_输入设备_5_触摸屏滑动翻页
linux应用程序_1_文本浏览器_8_输入设备_5_触摸屏滑动翻页 本篇在线程机制的基础上,为触摸屏输入添加滑动翻页功能,并将退出控制移动到右上角 主要修改触摸屏获取事件接口:1、读取数据,没有数据则休眠2、记录第一次按下的数据3、记录松开的数据4、判断离开点是否在屏幕右上角40像素长宽的正方形中,若是则退出5、判断松开点与第一次按下点的x坐标差值,据...原创 2019-01-30 00:11:57 · 314 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_9_网络打印_1_TCP基本知识和例程
linux应用程序_1_文本浏览器_9_网络打印_1_TCP基本知识和例程 客户端:在网络程序中,主动和外面的程序通信服务端:被动的等待外面的程序来和自己通讯 TCP(Transfer Control Protocol)传输控制协议是一种面向连接的协议, 当我们的网络程序使用这个协议的时候,网络可以保证我们的客户端和服务端的连接是可靠的,安全的。出现丢包现象时,会自...原创 2019-01-30 20:05:32 · 143 阅读 · 0 评论 -
linux应用程序_2_图片浏览器_1_基本功能及框架
linux应用程序_2_图片浏览器_1_基本功能及框架 图片浏览器基本功能:一、选择模式(浏览模式、播放模式、设置模式)二、浏览模式下1、选定图片2、显示图片3、拖动图片移动4、放大缩小5、切换图片6、返回三、播放模式下1、轮播选中目录下的图片2、点击切换到浏览模式四、设置模式下1、设置播放目录2、设置播放模式切换页面间隔 ...原创 2019-02-01 18:08:49 · 319 阅读 · 0 评论 -
freetype_1_在PC上使用freetype显示英文、数字
在PC上使用freetype1、下载freetype,远程登陆服务器,上传freetype,解压2、配置:./configure3、安装:sudo make install(安装在/usr/local/lib/)4、在解压路径下找到freetype-2.9.1\docs\tutorial\里面的例程,这里以example1.c为例5、在windows(C:\Windows\Fonts...原创 2019-01-13 16:19:10 · 765 阅读 · 0 评论 -
freetype_2_在PC上使用freetype显示任意字符
在PC上使用freetype显示任意字符在上一篇文章中已经实现了PC上显示英文字符和阿拉伯数字,这一篇文章实现PC上显示中文等其他字符(当然,英文字符和阿拉伯数字同样可以显示,其他的特殊字体需要相应字体文件支持才可以显示)贴出需要修改的代码 for ( n = 0; n &amp;amp;lt; num_chars; n++ ) { /* set transformation */ F...原创 2019-01-13 16:55:28 · 1723 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_2_encoding_1_encoding_manager
linux应用程序_1_文本浏览器_2_encoding_1_encoding_manager 所有支持的编码格式都由encoding_manager统一管理一、抽象一个编码结构体二、向下提供接口1、添加能够支持的字库信息2、注册编码结构体三、向上提供接口所有编码初始化根据文本编码格式,选择一个编码结构体 抽象结构体的依据:1、不同编码文件的首部标识...原创 2019-01-28 10:22:56 · 134 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_2_encoding_2_各种编码格式
linux应用程序_1_文本浏览器_2_encoding_2_各种编码格式 记事本以ascii编码格式保存文件英文:ascii编码,一个字符占一字节,编码小于128中文:gbk编码,一个字占两字节,低字节编码大于等于128 utf-8编码又称unicode码,是一种变长字节编码方式第一个字节,从最高位开始,连续的N个1,决定这个字由几个字节表示,组合时舍去这N个1N...原创 2019-01-28 10:32:55 · 204 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_3_fonts_1_fonts_manager
linux应用程序_1_文本浏览器_3_fonts_1_fonts_manager 一、抽象字库结构体、位图信息结构体二、向下提供接口1、注册字库结构体三、向上提供接口所有字库初始化获取字库结构体 字库结构体:1、应具有区分同类其他结构体的名字2、提供初始化函数3、能获取位图4、应具有链表,与同类其他结构体建立联系 位图结构体:参照f...原创 2019-01-28 10:41:59 · 201 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_3_fonts_2_各种字库
linux应用程序_1_文本浏览器_3_fonts_2_各种字库 1、在初始化时,被选中编码节点会遍历它支持的字库,调用这些字库的初始化函数,若该字库不能使用(可能是没有字库文件、字体大小设置错误等),则将其移出链表2、在获取字符位图时,需要调用字库的相应函数 以ascii_font.c为例:设置字库结构体static T_FontOpr g_ptAsciiFo...原创 2019-01-28 10:55:50 · 349 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_4_display_1_disp_manager
linux应用程序_1_文本浏览器_4_display_1_disp_manager 抽象显示结构体依据:应含有设备名字、分辨率、像素深度应具备设备初始化、显示像素、清屏等功能应具有链表,同其他结构体建立联系 抽象出显示结构体typedef struct DispOpr { char *pcName; int iXres; int iYres;...原创 2019-01-28 11:33:53 · 190 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_4_display_2_两种显示设备
linux应用程序_1_文本浏览器_4_display_2_两种显示设备 显示设备:1、ARM板连接的LCD2、linux中的控制台(图片模式) 以on_pc.c为例分析设置显示结构体static T_DispOpr g_tOnpucDispOpr = { .pcName = "onpc", .iBpp = BPP; .iXres...原创 2019-01-28 11:45:35 · 321 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_5_draw
linux应用程序_1_文本浏览器_5_draw 在draw.c中主要完成以下工作:1、使用各子目录提供的接口,解析字符、获取位图、显示位图等2、翻页控制 抽象页面结构体依据:1、应具有双向链表,与上页、下页建立链接2、应具有页码、当前页的缓存指针在文件的位置 页面结构体:typedef struct PageDesc{ int ...原创 2019-01-29 14:52:12 · 251 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_6_main测试
linux应用程序_1_文本浏览器_6_main测试 至此还没有抽象出输入结构体,仅使用串口完成测试 main流程:1、解析命令行参数,根据参数发出不同动作若参数满足2、打开文本(选中编码)3、选中显示设备4、显示开始 完整代码#include <stdio.h>#include <string.h>#include ...原创 2019-01-29 14:52:27 · 258 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_9_网络打印_3_debug_manager
linux应用程序_1_文本浏览器_9_网络打印_3_debug_manager 前面一直使用串口输出调试信息,本篇开始添加网络打印调试信息功能。仿照内核打印调试信息的方式,这里也设定0-7这8个打印等级,数字越小,等级越高,只有指定等级以下的调试信息能够被打印,打印等级、打印通道(从串口、网络两种方式)由客户端发送指令设置为调试信息模块抽象一个结构体typedef stru...原创 2019-01-31 19:02:24 · 153 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_9_网络打印_4_两个打印模块
linux应用程序_1_文本浏览器_9_网络打印_4_两个打印模块 两个打印模块:1、串口打印串口打印比较简单,直接使用printf即可,文末直接附上代码2、网络打印(client.c是客户端代码,不同其他文件一起编译链接)参考前面的TCP和UDP例程编写,这里使用的是UDP 初始化:1、创建套接字2、绑定服务器信息3、分配缓存4、创建发送线程...原创 2019-01-31 19:10:00 · 218 阅读 · 0 评论 -
freetype_4_使用freetype显示多行文字
使用freetype显示多行文字从左往右显示1、先描绘一行文字2、取出该行文字的最大高度,以此为基准算出下一行的位置3、再描绘另一行文字根据上一篇文章中代码修改主函数部分int main(int argv, char **argc){ FT_Library library; FT_Face face; FT_Vector pen; wchar_t *str...原创 2019-01-13 22:13:36 · 2360 阅读 · 1 评论 -
freetype_3_在arm上使用freetype显示文字
在arm上使用freetype安装使用freetype库1、配置freetype,./configure --host=arm-linux2、编译freetype,make3、安装freetype,make DESTDIR=/my_tmp/ install4、将/my_tmp/usr/local/lib/ 和 /my_tmp/usr/local/include/的内容拷贝到交叉编译链相应...原创 2019-01-13 18:08:17 · 1332 阅读 · 0 评论 -
linux应用程序_1_文本浏览器_9_网络打印_2_UDP基本知识和例程
linux应用程序_1_文本浏览器_9_网络打印_2_UDP基本知识和例程 UDP(User Datagram Protocol)用户数据报协议是一种非面向连接的协议,这种协议并不能保证我们的网络程序的连接是可靠的,可能出现丢包现象,在视频传输时用的就是UDP协议,传输可能会出现花屏现象,但尽可能保证传输的流畅度 基本调用和TCP类似,接收要使用recvfrom发送可以使用...原创 2019-01-30 20:40:29 · 164 阅读 · 0 评论