
正文
linux下lcd命令 linux $display
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于Linux的(操作过程中的Linux命令必须完整给出)
Linux系统越来越受到电脑用户的欢迎,于是很多人开始学习Linux时,学习linux,你可能会遇到Linux网络操作命令问题,这里将介绍Linux网络操作命令知识,在这里拿出来和大家分享一下。计算机网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上、传输文件和执行远程命令等。介绍下列几个常用的有关网络操作命令:ftp 传输文件
telnet 登录到远程计算机上
r - 使用各种远程命令
netstat 查看网络的状况
nslookup 查询域名和IP地址的对应
finger 查询某个使用者的信息
ping 查询某个机器是否在工作使用ftp命令进行远程文件传输
ftp命令是标准的文件传输协议的用户接口。ftp是在TCP/IP网络上的计算机之间传输文件的简单有效的方法。它允许用户传输ASCII文件和二进制文件。 在ftp会话过程中,用户可以通过使用ftp客户程序连接到另一台计算机上。从此,用户可以在目录中上下移动、列出目录内容、把文件从远程机拷贝到本地机上、把文件从本地机传输到远程系统中。需要注意的是,如果用户没有那个文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。 为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp 会话,并用来确定用户对要传输的文件可以进行什么样的访问。另外,用户显然需要知道对其进行ftp 会话的计算机的名字或IP地址。Ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:
$ ftp 主机名/IP其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指定主机名,ftp将给出提示符,等待用户输入命令: $ ftp ftp 此时在ftp提示符后面输入open命令加主机名或IP地址,将试图连接指定的主机。 不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过ftp使用这一帐号并需要提供口令。
在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。 如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。 如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。 一旦用户使用ftp在远程站点上登录成功,将得到“ftp”提示符。现在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清单,也可以在 help命令后面指定具体的命令名称,获得这条命令的说明。
最常用的命令有:
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
close终止当前的ftp会话
hash 每次传输完数据缓冲区中的数据后就显示一个#号
get(mget) 从远程机传送指定文件到本地机
put(mput) 从本地机传送指定文件到远程机
open 连接远程ftp站点
quit断开与远程机的连接并退出ftp
? 显示本地帮助信息
! 转到Shell中下面简单将ftp常用命令作一简介。
启动ftp会话 open命令用于打开一个与远程主机的会话。该命令的一般格式是: open 主机名/IP 如果在ftp 会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。 终止ftp会话 close、disconnect、quit和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。quit和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp 程序。 改变目录 “cd [目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。 远程目录列表 ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是: ls [目录] [本地文件] 如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。 从远程系统获取文件 get和mget命令用于从远程机上获取文件。get命令的一般格式为: get 文件名 您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。 mget命令一次获取多个远程文件。mget命令的一般格式为: mget 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。 向远程系统发送文件 put和mput命令用于向远程机发送文件。Put命令的一般格式为: put 文件名 mput命令一次发送多个本地文件,mput命令的一般格式为: mput 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。 改变文件传输模式 默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。 检查传输状态 传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。 ftp中的本地命令 当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdir new_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir 的目录。从远程机grunthos下载二进制数据文件的典型对话过程如下:
$ ftp grunthos Connected to grunthos 220 grunthos ftp server Name (grunthos:pc): anonymous 33l Guest login ok, send your complete e-mail address as password. Password: 230 Guest 1ogin ok, access restrictions apply. Remote system type is UNIX. ftp cd pub 250 CWD command successful. ftp ls 200 PORT command successful. l50 opening ASCII mode data connection for /bin/1s. total ll4 rog1 rog2 226 Transfer comp1ete . ftp binary 200 type set to I. ftp hash Hash mark printing on (1024 bytes/hash mark). ftp get rog1 200 PORT command successfu1. 150 opening BINARY mode data connection for rogl (l4684 bytes). # # # # # # # # # # # # # 226 Transfer complete. 14684 bytes received in 0.0473 secs (3e + 02 Kbytes/sec) ftp quit 22l Goodbye.使用telnet命令访问远程计算机
用户使用telnet命令进行远程登录。该命令允许用户使用telnet协议在远程计算机之间进行通信,用户可以通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。 为了通过telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。当允许远程用户登录时,系统通常把这些用户放在一个受限制的shell中,以防系统被怀有恶意的或不小心的用户破坏。 用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程序,就像在本地登录一样。
但是,用户只能使用基于终端的环境而不是X Wndows环境,telnet只为普通终端提供终端仿真,而不支持 X Wndow等图形环境。 telnet命令的一般形式为: telnet 主机名/IP 其中“主机名/IP”是要连接的远程机的主机名或IP地址。如果这一命令执行成功,将从远程机上得到login:提示符。 使用telnet命令登录的过程如下: $ telnet 主机名/IP 启动telnet会话。 一旦telnet成功地连接到远程系统上,就显示登录信息并提示用户输人用户名和口令。如果用户名和口令输入正确,就能成功登录并在远程系统上工作。 在telnet提示符后面可以输入很多命令,用来控制telnet会话过程,在telnet联机帮助手册中对这些命令有详细的说明。下面是一台Linux计算机上的telnet会话举例:
$ telnet server. somewhere. com Trying 127.0.0.1… Connected to serve. somewhere. com. Escape character is \'?]\'. “TurboLinux release 4. 0 (Colgate) kernel 2.0.18 on an I486 login: bubba password: Last login:Mon Nov l5 20:50:43 for localhost Linux 2. 0.6. (Posix). server: ~$ server: ~$ logout Connection closed by foreign host $用户结束了远程会话后,一定要确保使用logout命令退出远程系统。然后telnet报告远程会话被关闭,并返回到用户的本地机的Shell提示符下。 r-系列命令 除ftp和telnet以外,还可以使用r-系列命令访问远程计算机和在网络上交换文件。 使用r-系列命令需要特别注意,因为如果用户不小心,就会造成严重的安全漏洞。用户发出一个r-系列命令后,远程系统检查名为/etc/hosts.equiv的文件,以查看用户的主机是否列在这个文件中。如果它没有找到用户的主机,就检查远程机上同名用户的主目录中名为.rhosts的文件,看是否包括该用户的主机。如果该用户的主机包括在这两个文件中的任何一个之中,该用户执行r-系列命令就不用提供口令。虽然用户每次访问远程机时不用键入口令可能是非常方便的,但是它也可能会带来严重的安全问题。我们建议用户在建立/etc/hosts.equiv和.rhosts文件之前,仔细考虑r-命令隐含的安全问题。rlogin命令
rlogin 是“remote login”(远程登录)的缩写。该命令与telnet命令很相似,允许用户启动远程系统上的交互命令会话。rlogin 的一般格式是:
rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host一般最常用的格式是: rlogin host 该命令中各选项的含义为:
-8 此选项始终允许8位输入数据通道。该选项允许发送格式化的ANSI字符和其他的特殊代码。如果不用这个选项,除非远端的终止和启动字符不是或,否则就去掉奇偶校验位。
-E 停止把任何字符当作转义字符。当和-8选项一起使用时,它提供一个完全的透明连接。
-K 关闭所有的Kerberos确认。只有与使用Kerberos 确认协议的主机连接时才使用这个选项。
-L 允许rlogin会话在litout模式中运行。要了解更多信息,请查阅tty联机帮助。
-d 打开与远程主机进行通信的TCP sockets的socket调试。要了解更多信息,请查阅setsockopt的联机帮助。
-e 为rlogin会话设置转义字符,默认的转义字符是“~”,用户可以指定一个文字字符或一个\\nnn形式的八进制数。
-k 请求rlogin获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos 许可。
-x 为所有通过rlogin会话传送的数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。rsh命令
rsh是“remote shell”(远程 shell)的缩写。 该命令在指定的远程主机上启动一个shell并执行用户在rsh命令行中指定的命令。如果用户没有给出要执行的命令,rsh就用rlogin命令使用户登录到远程机上。
rsh命令的一般格式是:
rsh [-Kdnx] [-k realm] [-l username] host [command]
一般常用的格式是:
rsh host [command ]
command可以是从shell提示符下键人的任何Linux命令。
rsh命令中各选项的含义如下:
-K 关闭所有的Kerbero确认。该选项只在与使用Kerbero确认的主机连接时才使用。
-d 打开与远程主机进行通信的TCP sockets的socket调试。要了解更多的信息,请查阅setsockopt的联机帮助。
-k 请求rsh获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-l 缺省情况下,远程用户名与本地用户名相同。本选项允许指定远程用户名,如果指定了远程用户名,则使用Kerberos 确认,与在rlogin命令中一样。
-n 重定向来自特殊设备/dev/null的输入。
-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。 Linux把标准输入放入rsh命令中,并把它拷贝到要远程执行的命令的标准输入中。它把远程命令的标准输出拷贝到rsh的标准输出中。它还把远程标准错误拷贝到本地标准错误文件中。任何退出、中止和中断信号都被送到远程命令中。当远程命令终止了,rsh也就终止了。rcp命令
rcp代表“remote file copy”(远程文件拷贝)。该命令用于在计算机之间拷贝文件。
rcp命令有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。
rcp命令的一般格式是:
rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file
directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。
rcp命令的各选项含义如下:
-r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
-p 试图保留源文件的修改时间和模式,忽略umask。
-k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。 如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线(\\)、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。 需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。 - Turbolinux 提供稿件。通过本文你就了解Linux网络操作命令,希望对你有所帮助。
相关问答
Q1: linux怎么在lcd显示一张400*240的照片并放在中间
1) 在LCD上显示BMP或JPEG图片的主流程图
首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下:
mknod fb0 c 29 0
在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形文件数据,把图象的RGB值映射到显存中,这部分是图象显示的核心。对于JPEG格式的图片,要先经过JPEG解码才能得到RGB数据,本项目中直接才用现成的JPEG库进行解码。对于bmp格式的图片,则可以直接从文件里面提取其RGB数据。要从一个bmp文件里面把图片数据阵列提取出来,首先必须知道bmp文件的格式。下面来详细介绍bmp文件的格式。
图1
2) bmp位图格式分析
位图文件可看成由四个部分组成:位图文件头、位图信息头、彩色表和定义位图的字节阵列。如图2所示。
图2
文件头中各个段的地址及其内容如图3。
图3
位图文件头数据结构包含BMP图象文件的类型,显示内容等信息。它的数据结构如下定义:
Typedef struct
{
int bfType;//表明位图文件的类型,必须为BM
long bfSize;//表明位图文件的大小,以字节为单位
int bfReserved1;//属于保留字,必须为本0
int bfReserved2;//也是保留字,必须为本0
long bfOffBits;//位图阵列的起始位置,以字节为单位
} BITMAPFILEHEADER;
2.1)信息头中各个段的地址及其内容如图4所示。
图4
位图信息头的数据结构包含了有关BMP图象的宽,高,压缩方法等信息,它的C语言数据结构如下:
Typedef struct {
long biSize; //指出本数据结构所需要的字节数
long biWidth;//以象素为单位,给出BMP图象的宽度
long biHeight;//以象素为单位,给出BMP图象的高度
int biPlanes;//输出设备的位平面数,必须置为1
int biBitCount;//给出每个象素的位数
long biCompress;//给出位图的压缩类型
long biSizeImage;//给出图象字节数的多少
long biXPelsPerMeter;//图像的水平分辨率
long biYPelsPerMeter;//图象的垂直分辨率
long biClrUsed;//调色板中图象实际使用的颜色素数
long biClrImportant;//给出重要颜色的索引值
} BITMAPINFOHEADER;
2.2)对于象素小于或等于16位的图片,都有一个颜色表用来给图象数据阵列提供颜色索引,其中的每块数据都以B、G、R的顺序排列,还有一个是reserved保留位。而在图形数据区域存放的是各个象素点的索引值。它的C语言结构如图5所示。
图5 颜色表数据结构
2.3)对于24位和32位的图片,没有彩色表,他在图象数据区里直接存放图片的RGB数据,其中的每个象素点的数据都以B、G、R的顺序排列。每个象素点的数据结构如图6所示。
图6 图象数据阵列的数据结构
2.4)由于图象数据阵列中的数据是从图片的最后一行开始往上存放的,因此在显示图象时,是从图象的左下角开始逐行扫描图象,即从左到右,从下到上。
2.5)对S3C2410或PXA255开发板上的LCD来说,他们每个象素点所占的位数为16位,这16位按B:G:R=5:6:5的方式分,其中B在最高位,R在最低位。而从bmp图象得到的R、G、B数据则每个数据占8位,合起来一共24位,因此需要对该R、G、B数据进行移位组合成一个16位的数据。移位方法如下:
b = 3; g = 2; r = 3;
RGBValue = ( r11 | g 5 | b);
基于以上分析,提取各种类型的bmp图象的流程如图7所示
图7
3) 实现显示任意大小的图片
开发板上的LCD屏的大小是固定的,S3C2410上的LCD为:240*320,PXA255上的为:640*480。比屏幕小的图片在屏上显示当然没问题,但是如果图片比屏幕大呢?这就要求我们通过某种算法对图片进行缩放。
缩放的基本思想是将图片分成若干个方块,对每个方块中的R、G、B数据进行取平均,得到一个新的R、G、B值,这个值就作为该方块在LCD屏幕上的映射。
缩放的算法描述如下:
(1)、计算图片大小与LCD屏大小的比例,以及方块的大小。为了适应各种屏幕大小,这里并不直接给lcd_width和lcd_height赋值为240和320。而是调用标准的接口来获取有关屏幕的参数。具体如下:
// Get variable screen information
if (ioctl(fbfd, FBIOGET_VSCREENINFO, vinfo)) {
printf("Error reading variable information. ");
exit(3);
}
unsigned int lcd_width=vinfo.xres;
unsigned int lcd_height=vinfo.yres;
计算比例:
widthScale=bmpi-width/lcd_width;
heightScale=bmpi-height/lcd_height;
本程序中方块的大小以如下的方式确定:
unsigned int paneWidth=
unsigned int paneHeight= ;
符号 代表向上取整。
(2)、从图片的左上角开始,以(i* widthScale,j* heightScale)位起始点,以宽paneWidth 高paneHeight为一个小方块,对该方块的R、G、B数值分别取平均,得到映射点的R、G、B值,把该点作为要在LCD上显示的第(i , j)点存储起来。
这部分的程序如下:
//-------------取平均--------
for( i=0;inow_height;i++)
{
for(j=0;jnow_width;j++)
{
color_sum_r=0;
color_sum_g=0;
color_sum_b=0;
for(m=i*heightScale;mi*heightScale+paneHeight;m++)
{
for(n=j*widthScale;nj*widthScale+paneWidth;n++)
{
color_sum_r+=pointvalue[m][n].r;
color_sum_g+=pointvalue[m][n].g;
color_sum_b+=pointvalue[m][n].b;
}
}
RGBvalue_256-r=div_round(color_sum_r,paneHeight*paneWidth);
RGBvalue_256-g=div_round(color_sum_g,paneHeight*paneWidth);
RGBvalue_256-b=div_round(color_sum_b,paneHeight*paneWidth);
}
}
4) 图片数据提取及显示的总流程
通过以上的分析,整个图片数据提取及显示的总流程如图8 所示。
图 8
图像显示应用程序:
#include errno.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include sys/ioctl.h
#include unistd.h
#include stdint.h
#include stdio.h
#include stdlib.h
#include asm/types.h
#include linux/videodev2.h
#include sys/mman.h
#include string.h
#include malloc.h
#include linux/fb.h
#include jpeglib.h
#include jerror.h
struct fb_dev
{
//for frame buffer
int fb;
void *fb_mem; //frame buffer mmap
int fb_width, fb_height, fb_line_len, fb_size;
int fb_bpp;
} fbdev;
//得到framebuffer的长、宽和位宽,成功则返回0,失败返回-1
int fb_stat(int fd)
{
struct fb_fix_screeninfo fb_finfo;
struct fb_var_screeninfo fb_vinfo;
if (ioctl(fd, FBIOGET_FSCREENINFO, fb_finfo))
{
perror(__func__);
return (-1);
}
if (ioctl(fd, FBIOGET_VSCREENINFO, fb_vinfo))
{
perror(__func__);
return (-1);
}
fbdev.fb_width = fb_vinfo.xres;
fbdev.fb_height = fb_vinfo.yres;
fbdev.fb_bpp = fb_vinfo.bits_per_pixel;
fbdev.fb_line_len = fb_finfo.line_length;
fbdev.fb_size = fb_finfo.smem_len;
return (0);
}
//转换RGB888为RGB565(因为当前LCD是采用的RGB565显示的)
unsigned short RGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned short B = (blue 3) 0x001F;
unsigned short G = ((green 2) 5) 0x07E0;
unsigned short R = ((red 3) 11) 0xF800;
return (unsigned short) (R | G | B);
}
//释放framebuffer的映射
int fb_munmap(void *start, size_t length)
{
return (munmap(start, length));
}
//显示一个像素点的图像到framebuffer上
int fb_pixel(void *fbmem, int width, int height, int x, int y, unsigned short color)
{
if ((x width) || (y height))
return (-1);
unsigned short *dst = ((unsigned short *) fbmem + y * width + x);
*dst = color;
return 0;
}
int main(int argc, char **argv)
{
int fb;
FILE *infile;
struct jpeg_decompress_struct cinfo;
int x,y;
unsigned char *buffer;
char s[15];
struct jpeg_error_mgr jerr;
if ((fb = open("/dev/fb0", O_RDWR)) 0) //打开显卡设备
{
perror(__func__);
return (-1);
}
//获取framebuffer的状态
fb_stat(fb); //获取显卡驱动中的长、宽和显示位宽
printf("frame buffer: %dx%d, %dbpp, 0x%xbyte= %d\n",
fbdev.fb_width, fbdev.fb_height, fbdev.fb_bpp, fbdev.fb_size, fbdev.fb_size);
//映射framebuffer的地址
fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if ((infile = fopen("lcd.jpg", "rb")) == NULL)
{
fprintf(stderr, "open %s failed\n", s);
exit(-1);
}
ioctl(fb, FBIOBLANK,0); //打开LCD背光
cinfo.err = jpeg_std_error(jerr);
jpeg_create_decompress(cinfo);
//导入要解压的Jpeg文件infile
jpeg_stdio_src(cinfo, infile);
//读取jpeg文件的文件头
jpeg_read_header(cinfo, TRUE);
//开始解压Jpeg文件,解压后将分配给scanline缓冲区,
jpeg_start_decompress(cinfo);
buffer = (unsigned char *) malloc(cinfo.output_width
* cinfo.output_components);
y = 0;
while (cinfo.output_scanline cinfo.output_height)
{
jpeg_read_scanlines(cinfo, buffer, 1);
if(fbdev.fb_bpp == 16)
{
unsigned short color;
for (x = 0; x cinfo.output_width; x++)
{
color = RGB888toRGB565(buffer[x * 3],
buffer[x * 3 + 1], buffer[x * 3 + 2]);
fb_pixel(fbdev.fb_mem, fbdev.fb_width, fbdev.fb_height, x, y, color);
}
}
else if(fbdev.fb_bpp == 24)
{
memcpy((unsigned char *)fbdev.fb_mem + y * fbdev.fb_width * 3, buffer,
cinfo.output_width * cinfo.output_components);
}
y++;
}
//完成Jpeg解码,释放Jpeg文件
jpeg_finish_decompress(cinfo);
jpeg_destroy_decompress(cinfo);
//释放帧缓冲区
free(buffer);
//关闭Jpeg输入文件
fclose(infile);
fb_munmap(fbdev.fb_mem, fbdev.fb_size); //释放framebuffer映射
close(fb);
}
文章是我转载的
但是测试发现编译无法通过,
报错:
LCD.C:(.text+0x384): undefined reference to `jpeg_std_error(jpeg_error_mgr*)'
LCD.C:(.text+0x3a0): undefined reference to `jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)'
LCD.C:(.text+0x3b0): undefined reference to `jpeg_stdio_src(jpeg_decompress_struct*, _IO_FILE*)'
LCD.C:(.text+0x3c0): undefined reference to `jpeg_read_header(jpeg_decompress_struct*, int)'
LCD.C:(.text+0x3cc): undefined reference to `jpeg_start_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x410): undefined reference to `jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned int)'
LCD.C:(.text+0x59c): undefined reference to `jpeg_finish_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x5a8): undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
collect2: ld returned 1 exit status
经过在网上查找,确定是JPEG解码库问题,我首先在Ubuntu安装了jpeg库
libjpeg 库的安装
在源文件里将
#include jpeglib.h
改成
extern "C" {
#include jpeglib.h
}
这里是有问题的,注意gcc 会把LCD.C当成c++编译,而把LCD.c当成C语言编译,改成lcd.c后就没有上边红色部分错误
由于是有的是JPEG解码库,链接的时候需要加上-ljpeg 选项
使用命令 arm-linux-gcc -ljpeg LCD.C -o LCD #add -ljpeg option 编译源文件成功,
文章知识点与官方知识档案匹配
CS入门技能树Linux入门初识Linux
23099 人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
开发板lcd上显示图片
#include #include #include "lcd.h" #include "regs.h" extern const unsigned char gImage_6[261120]; //extern const unsigned char gImage_5[261120]; extern const unsigned char gImage_a[83784]; extern const unsigned char test[]; static unsigned short drawb[272][480]; //it is a public draw area unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned char mat[]={0x00,0x00,0x10,0x38, 0x6c,0xc6,0xfe,0xc6, 0xc6,0xc6,0xc6,0x00, 0x00,0x00,0x00,0x00 };
lcd屏幕显示bmp、jpg图片
文章目录BMP图片显示:jpeg压缩过程 RGB: ARGB 32bit 4Byte A:【24-31】 R:【16-23】 G:【8-15】 B:【0-7】 图片显示 显示思路: (1)打开液晶屏(open),进行内存映射(mmap) (2)打开图片,读取颜色数据 (3)将读取到的颜色数据映射到液晶屏 (4)关闭图片文件,液晶屏,解除内存映射 BMP图片显示: 没有经过压缩的二进制位图文件,文件较大,获取颜色数据方便 一张800*480的bmp格式的图片 8004803 = 1152000Byt
继续访问
最新发布 【正点原子I.MX6U-MINI应用篇】6、嵌入式Linux在LCD屏幕上显示字符
嵌入式Linux在LCD屏幕上显示字符
继续访问
数码相框(十六、LCD显示JPG格式图片)
注:本人已购买韦东山老师第三期项目视频,内容来源《数码相框项目视频》,只用于学习记录,如有侵权,请联系删除。 1. LCD 如何显示一张图片? 假如下图是是我们的 JZ2440 开发板,它有一个块显存、LCD控制器、LCD显示屏,LCD是如何显示张图片的呢? 如上图所示: ① 图片的颜色数据存放在显存,LCD 控制器会自动从显存取出图片的一个个颜色数据发送给LCD,取到最后又从头开始的循环取数据,最终把一张图片的全部颜色数据发送到LCD上,从而在LCD显示出该图片; ② 显存存放的数据是RGB数据;.
继续访问
linux滚动屏幕,基于MIDP1.0实现屏幕滚动(转)
本例介绍了一个常用的编程技巧,就是如何基于MIDP1.0实现屏幕的滚动效果。在MIDP2.0可以借助LayerManager的的“可视窗口”来实现。MIDP1.0通过变化坐标系来实现屏幕的滚动效果,只要借助Graphics.translate()方法。package com.j2medev.translate;import javax.microedition.midlet.*;import ja...
继续访问
Linux系统LCD显示图片的原理,linux驱动开发:用户空间操作LCD显示简单的图片【转】...
上一章我们简单介绍了LCD的一些基本原理。当然更深奥的还有,比如gamma,dither,HUE,satuation.OSD等等.我们知道我们是用framebuffer来实现显示的.显存:framebuffer.由DDRAM中划去一部分内存供显存使用.从而操作lcd相当于操作显存.lcd控制器(s5pv210里面有lcd控制器)会周期的获取framebuffer中的数据。经过处理丢给 显示屏的lc...
继续访问
linux中如何在fb上显示
framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过fra...
继续访问
如何让linux fb0显示命令行,linux – 如何将/ dev / fb0用作来自用户空间的控制台,或者将文本输出到它...
所以我有一个Palm Pre(原始P100EWW)模型,我启用了开发人员模式,并安装了Debian Squeeze chroot.效果很好.我计划将这个用于任何东西(bittorrent peer,web server)但是一部手机.我注意到我是否做了猫/ dev / urandom / dev / fb0它实际上将随机像素写入屏幕,直到生成设备错误上没有剩余空格.真棒,现在我可以使用显示...
继续访问
linux 如何查看fb中分辨率_linux下直接写framebuffer(fb0)的方式显示bmp图像
linux下的显示设备就是/dev/fb0,往该设备写入的数据会显示在屏幕上,所以我们可以通过直接写frame buffer这个/dev/fb0设备来实现bmp图像的显示,而不用管是在shell文本方式下还是在其他gnome、qt、gtk、wayland等图形模式下,都能显示出来。当前前提是你的linux下必须具有该设备并支持读写(无特殊处理的linux都有该设备)。代码(支持16位、24位或32...
继续访问
Linux下LCD编程(fb设备_console_汉化)
继续访问
如何改造 Linux 虚拟终端显示文字
CJKTTY 补丁是什么,为什么我写了它 当你不使用 X 的时候,打开电脑,你就在使用虚拟终端。这么多年来它工作的很好,直到它来到了中国。包含中文字符的文件名无法正确显示,中文文档无法阅读。当然可以使用 X , 但是我为什么不能让终端也能显示汉字呢?如果在 X 下我能让屏幕显示汉字,终端下一定也能。为此我开始了 internet 上的搜寻。 我找到了 fbterm,这是个可以利用 /dev/
继续访问
LCD图片显示、触摸屏、音乐播放、缩放图片和播放视频
讲解LCD的原理和mmap函数,BMP格式图片的的显示,触摸屏的概念和原理以及触摸屏输入的解读,以及音乐视频播放和图片缩放。
继续访问
undefined reference to `jpeg_std_error(jpeg_error_mgr*)
背景 linux + QT BMP图片转JPG #include jpeglib.h 编译错误: root@happy-virtual-machine:/home/happy/Lee/Detector2# make arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/qt-4.7.1/lib -o Detector2 main.o...
继续访问
linux屏幕滑动效果实现代码,使用swipe方法模拟屏幕滑动与手势密码绘制
前言App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码。目前很多App在启动时,都存在启动时的引导动画或者加载上下文内容时需要手动上滑或者下滑加载页面,所以在自动化测试的过程中模拟手的滑动操作看起来就很重要了;第二个比较重要的是模拟手动绘制九宫格完成手势密码的设置,这种手势密码在我了解的范围内,大多在金融类的app中最常见,还有一些对用户信息保密性较好的app中,所以,模拟绘制手势密码也...
继续访问
Linux下LCD图片放大缩小实现,仿QQ空间滑动图片放大缩小控件
先来看一下效果:scrollzoom_listview.gif一、设计思路与实现步骤1、本例是通过重写ListView来实现的,头部的图片是ListView的HeadView。定义一个headview.xml布局文件,在这个布局文件中放一个ImageView,并给IamgeView设置一个初始高度2、实现下拉图片放大当ListView处于顶部的时候下拉实现图片放大,这里要用的一个核心的方法是ove...
继续访问
无法解析的外部符号 jpeg_std_error
1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号 png_set_sig_bytes 1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号 png_sig_cmp 1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号...
继续访问
Linux LCD驱动(二)——图形显示
BMP和JPEG图形显示程序 1) 在LCD上显示BMP或JPEG图片的主流程图 首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下: mknod fb0 c 29 0 在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形
继续访问
嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)
帧缓冲框架是Linux下专门为显示类设备设计的接口,目的是将硬件和软件层分离开,方便应用层的编程,也方便应用层程序移植。帧缓冲框架向驱动层和应用层分别提供了一套标准接口,驱动层按照框架编写驱动,应用层按照框架编写应用程序。帧缓冲在/dev目录下生成的标准节点是fb,比如:/dev/fb0,/dev/fb1等等。
继续访问
linux 如何查看fb中分辨率_通过Linux FrameBuffer将像素绘制到屏幕上
最近,我对一个奇怪的想法感到震惊,他想从/ dev / urandom中获取输入,将相关字符转换为随机整数,然后使用这些整数作为像素rgb /xy值来绘制到屏幕上。我已经做过一些研究(在StackOverflow和其他地方),许多建议您可以直接直接写入/ dev /fb0,因为它是设备的文件表示形式。不幸的是,这似乎没有产生任何视觉上明显的结果。我找到了一个来自QT教程(不再可用)的示例C程序
Q2: linux虚拟机打开lcd显示屏的途径
1.打开/dev/fbX
fp = open ("/dev/fb0",O_RDWR);
2.获取可变参数,固定参数
ioctl(fp,FBIOGET_VSCREENINFO,vinfo) 可变参数
ioctl(fp,FBIOGET_FSCREENINFO,finfo) 固定参数
3.内存映射(mmap)
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
/*这就是把fp所指的文件中从开始到 screensize 大小的内容给映射出来,得到一个指向这块空间的指针*/
fbp =(unsigned char *) mmap (0, screensize,
PROT_READ | PROT_WRITE,
MAP_SHARED, fp,0);
4.使用映射后的地址对屏进行操作。
使用上面得到的 fbp 指针来操作显示缓冲区了。
把lcd看成是一块内存,使用mmap函数把它的缓冲区映射到进程空间中,然后通过映射后的地址直接操作驱动中的显示缓冲区,往这块缓冲写数据,lcd就会按数值转换成相应颜色显示在LCD屏上。
Q3: 怎么实现linux启动时的调试信息在LCD屏下显示
修改命令
"noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
为如下命令
"noinitrd root=/dev/mtdblock2 init=/linuxrc console=fb0"
Q4: 液晶屏lcd在linux下怎么让它显示我想要显示的内容?
在确保linux lcd 显示屏驱动无误的情况下.有两款比较常见的图像开发工具可供你选择.
Qt,GTK.
可以先移植个QtE库.再进行linux的图像开发.
lcd的显示方面linux系统会帮你管理.就好像你用VC写了个窗口一运行在桌面上就会出现个窗口那样,在linux下用QtE开发了一个窗口一运行也会出现一个窗口.只不过在窗口下就没有桌面而已.只要搞定了QTE显示图片什么的只是小菜一碟.
不过QTE的移植可不是一件简单的事.祝好运.
Q5: shell脚本中lcd是什么意思
shell脚本中lcd是FTP服务的内置命令,是在本地主机目录操作的命令。
示例脚本(批量下载脚本代码):
#从FTP上批量下载文件到本地
#!/bin/sh
ftp -v -n 121.112.110.121 EOF #EOF只是一个分界符标志 也可以使用EOM,!等
user user password
binary #文件传输类型
cd /work/guoch/files #cd是在远程主机目录操作的命令
lcd ./ #lcd是在本地主机目录操作的命令
prompt #取消交互
mget * #mget是批量的下载文件
bye
EOF #EOF只是一个分界符标志
echo "download from ftp successfully" #输出成功标识
扩展资料
FTP使用格式介绍:
ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [computer]
参数介绍:
1、-v - 禁止显示远程服务器相应信息。
2、-n - 禁止自动登录。
3、-i - 多文件传输过程中关闭交互提示。
4、-d - 启用调试,显示所有客户端与服务器端传递的命令。
5、-g - 禁用文件名通配符,允许在本地文件和路径名中使用。
linux下lcd命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux $display、linux下lcd命令的信息别忘了在本站进行查找喔。








