《交互式智能家居机器人》-项目1 开发软件平台环境的搭建与配置_第1页
《交互式智能家居机器人》-项目1 开发软件平台环境的搭建与配置_第2页
《交互式智能家居机器人》-项目1 开发软件平台环境的搭建与配置_第3页
《交互式智能家居机器人》-项目1 开发软件平台环境的搭建与配置_第4页
《交互式智能家居机器人》-项目1 开发软件平台环境的搭建与配置_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1项目描述本项目的主要学习内容包括:了解Linux嵌入式系统、安装aspbianLinux发行版本操作系统、通过apt-get管理软件使用PiStore安装软件和多媒体、使用Raspi-config设置系统、使用Python编写简单的程序。返回1.2教学目标通过本项目的学习,学生应掌握交互式智能家居机器嵌入式系统RaspbianLinux发行版本的安装、Linux系统的基本操作、如何配置RaspbianLinux操作系统、如何通过apt-get管理应用软件和使用PiStore安装软件、如何让控制系统连接网络、如何通过网络更新安装软件及如何使用自带的Python编写程序。后续复杂的功能都是基于Raspbian操作系统实现的,所以掌握本项目的内容尤为重要。本项目的内容为基础软件的安装,包括大量的安装过程和配置环节,学生可以按照本项目所讲的安装步骤进行同步操作,从而为后续更加复杂的内容打下坚实的基础。返回1.3知识准备1.3.1了解嵌入式系统Linux使用的命令行本小节所介绍的命令和概念都是标准Linux系统中所使用的,具有很强的通用性,非常值得学习。在开始前,先打开一个LX(LXTerminal)终端(见图1.3.1),可以按照任务需要在RaspbianLinux系统的控制系统中实现部分软件的安装。在操作终端时,有两个基本技巧非常有用:自动补全与命令历史。通常情况下,只需要输入命令或者文件名的前几个字符,然后按【Tab】键,终端就会尝试以当前目录中的文件或常用目录中的程序(Shell通常会在“/bin”和“/usr/bin”目录中搜索可执行程序)来补全所输入的字符串。按键盘上的上下箭头方向键,可以调用以前执行过的命令。如果不小心在命令中打错了字,可以用这个方法把错误的命令找出来,修改后再重新执行。下一页返回1.3知识准备1.3.2了解Linux文件与文件管理命令表1.3.1列出了文件系统中的部分重要目录,它们中的大部分都是按照Linux标准来设置的,标准决定了一些文件应该放在哪个目录中,其中有一部分是RaspbianLinux所特有的。通过访问“/sys”目录中的文件,可以操作智能家居机器人控制板上的大部分硬件。在命令提示符前面,可以看到当前所处的工作目录。在Linux文件中,主目录会被缩写为波浪线(~)。刚刚打开LX终端时,它会把当前的工作目录切换到主目录下,命令提示符会显示为:pi@raspberrypi~$上一页下一页返回1.3知识准备有关命令提示符的详细解释如下:pi@①raspberrypi②~③$④①你的用户名:Pi,后面加上@符号。②你的主机名(默认的主机名为“Raspberrypi”)。③Shell的当前工作目录,默认是主目录(~)。④命令提示符:输入的一切内容都会出现在它的右侧。按回车键执行输入的命令。使用cd(changedirectory,改变目录)命令可以在文件系统的各个目录间切换,下面的两条命令对于Pi用户来说具有相同的效果(把当前工作目录切换到主目录):cd/home/pi/cd~上一页下一页返回1.3知识准备如果传给cd命令的路径以斜线开头,则表示这是一个绝对路径,否则这个路径被认为是相对于当前工作目录位置的相对路径。它可以用“.”和“..”分别表示当前目录和上一层目录。例如,把当前目录切换到系统根目录:pi@raspberrypi~$cd..pi@raspberrypi/home$cd..也可以直接用“/”切换到根目录:pi@raspberrypi~$cd/切换完目录后,可以用ls命令列出当前目录下的文件:pi@raspberrypi/$lsbindevhomelost+foundmntprocrunselinuxsysusrbootetclibmediaoptrootsbinsrvtmpvar上一页下一页返回1.3知识准备大部分命令都允许增加一些参数或开关来改变默认的行为。例如,ls命令的“-l”参数可以让显示的文件列表更为详尽,显示出文件的大小、修改时间和权限:pi@raspberrypi~$ls-ltotal8drwxr-xr-x2pipi4096Oct1214:26Desktopdrwxrwxr-x2pipi4096Jul2014:07python_games上一页下一页返回1.3知识准备用“-a”参数可以列出所有文件,包括隐藏文件:pi@raspberrypi~$ls-latotal80drwxr-xr-x11pipi4096Oct1214:26.drwxr-xr-x3rootroot4096Sep1807:48..-rw-------1pipi25Sep1809:22.bash_history-rw-r--r--1pipi220Sep1807:48.bash_logout-rw-r--r--1pipi3243Sep1807:48.bashrcdrwxr-xr-x6pipi4096Sep1901:19.cachedrwxr-xr-x9pipi4096Oct1212:57.configdrwx------3pipi4096Sep1809:24.dbus上一页下一页返回1.3知识准备drwxr-xr-x2pipi4096Oct1214:26Desktop-rw-r--r--1pipi36Sep1809:35.dmrcdrwx------2pipi4096Sep1809:24.gvfsdrwxr-xr-x2pipi4096Oct1212:53.idlerc-rw-------1pipi35Sep1812:11.lesshstdrwx------3pipi4096Sep1901:19.local-rw-r--r--1pipi675Sep1807:48.profiledrwxrwxr-x2pipi4096Jul2014:07python_gamesdrwx------4pipi4096Oct1212:57.thumbnails-rw-------1pipi56Sep1809:35.Xauthority上一页下一页返回1.3知识准备-rw-------1pipi300Oct1212:57.xsession-errors-rw-------1pipi1391Sep1809:35.xsession-errors.old使用mv命令可以改变文件的名字;使用touch命令可以创建一个新的空文件:pi@raspberrypi~$touchfoopi@raspberrypi~$lsfooDesktoppython_gamespi@raspberrypi~$mvfoobazpi@raspberrypi~$lsbazDesktoppython_games上一页下一页返回1.3知识准备删除文件用rm命令;删除空目录,可以使用rmdir命令。如果要删除非空目录,使用rm-r命令。传给rm命令的“-r”参数意味着要求rm程序递归进入所有的子目录删除所有的文件。如果想了解一个命令所包含的所有参数,可以使用man命令(或在命令后面增加“−−help”参数):pi@raspberrypi~$mancurlpi@raspberrypi~$rm--help若要创建新的目录,则使用mkdir命令;若要把一个目录下的所有文件打包在一起,则用tar(tapearchives的缩写)命令。常常能看到很多文件与源代码以tar包的形式发布,并且它们常常还会用gzip进行一次压缩。其操作步骤为:上一页下一页返回1.3知识准备pi@raspberrypi~$mkdirmyDirpi@raspberrypi~$cdmyDirpi@raspberrypi~$touchfoobarbazpi@raspberrypi~$cd..pi@raspberrypi~$tar-cfmyDir.tarmyDirpi@raspberrypi~$gzipmyDir.tar这时,就把myDir目录打包成了一个名为“myDir.tar.gz”的文件,这个文件可以很方便地通过网络或电子邮件传递。上一页下一页返回1.3知识准备1.3.3更多Linux命令Linux如此成功的原因之一在于它的设计哲学:通过一系列可以组装在一起的简单小模块来构建一个非常复杂的系统。所以,需要学习一些有关“管道”和“重定向”的基础知识,它们是实现这个设计哲学的基础。管道是把两个程序联系起来的一种方式,通过管道,可以把其中一个程序的输出作为另一个程序的输入。所有的Linux程序都可以从标准输入(通常表示为stdin)读入数据,向标准输出(表示为stdout)输出数据并把错误信息抛向标准错误输出(表示为stderr)。通过管道可以把一个程序的stdout与另一个程序的stdin相连(见图1.3.2)。管道的操作如下:上一页下一页返回1.3知识准备pi@raspberrypi~$ls–la|less(按【Q】键退出less程序)还可以尝试通过管道传输更多的数据:pi@raspberrypi~$sudocat/boot/kernel.img|aplay运行这个命令前,建议先把音量调小一些。这个命令把系统内核对于0和1的数据传递给音乐播放器,当成音乐来播放,这就是“内核之声”。本书后面项目中的命令还会用到重定向,也就是指把程序的标准输出发送到一个文件中去。Linux中有很多的东西都可以被当成文件来使用(如Pi的通用输入输出口),所以重定向是一个非常有用的功能。可使用“>”操作符来实现重定向:pi@raspberrypi~$ls>directoryListing.txt上一页下一页返回1.3知识准备1.3.4特殊的控制键除了前面提到的自动补全(【Tab】键)和调用历史命令(光标向上键)的控制键,Shell中还提供了一些常用的控制键。(1)【Control-C】:中断当前正在运行的程序。在有些交互式应用程序(如文本编辑器)中其可能无效。(2)【Control-D】:退出Shell软件。必须在命令提示符后紧跟着输入才有效(在“$”提示符后不要输入“Control-D”以外的其他任何字符)。(3)【Control-A】:把光标移动到行首位置。(4)【Control-E】:把光标移动到行末位置。上一页下一页返回1.3知识准备当需要在屏幕上显示一个文件的内容,并且要分屏显示时,可以使用less命令:pi@raspberrypi~$ls>flob.txtpi@raspberrypi~$lessflob.txt如果想把一个文件的内容一次性全部输出到标准输出上,可以用cat命令(concatenate的缩写)。在需要把一个文件的内容传到另一个程序中或者把它重定向到其他地方时,这个命令非常有用。例如,用cat命令可以非常方便地实现把一个文件复制为另一个文件的功能(在第二个cat命令中,两个文件被连接成一个新的文件)。上一页下一页返回1.3知识准备pi@raspberrypi~$ls>wibble.txtpi@raspberrypi~$catwibble.txt>wobble.txtpi@raspberrypi~$catwibble.txtwobble.txt>wubble.txt用tail命令可以查看一个文件的最后几行内容(如一个日志文件中的最后几条),用head命令则可以查看前几行。如果要在一个或多个文件中搜索一个特定的字符串,可以用强大的grep命令:pi@raspberrypi~$grepPuzzle*/*grep命令能支持正则表达式“非常”的语意,这使它成了一个非常强大的工具。正则表达式不太容易让人理解,这也是很多人认为Linux对初学者来说很难运用的一个重要原因。上一页下一页返回1.3知识准备1.3.5了解Linux进程机制命令智能家居机器人控制系统运行的每一个程序都是一个独立的进程,所以任何时候都有很多个进程同时运行。当把控制系统启动完成时,系统会运行大约75个进程,每个进程负责一项任务或提供一个服务。可以用top命令查看正在运行的进程,与此同时也可以看到CPU和内存的使用情况。top命令能让人看到占用资源更多的进程,ps命令可以用来列出所有的进程和它们对应的进程ID(PID):pi@raspberrypi~$ps-aux|less如果要中断一个出错或失去响应的进程,可以用ps命令找出这个进程的ID,然后用kill命令来中断它的运行:pi@raspberrypi~$kill95689上一页下一页返回1.3知识准备对于一些系统进程,人们是没有权限去中断它的运行的,但可以通过稍后介绍的sudo命令来获得需要的权限。1.3.6了解sudo与权限Linux是一个多用户操作系统,其一条最基本的原则就是每个用户可以在他们自己的目录下创建、删除或者修改属于他们自己的文件。root用户(管理员)可以修改文件系统中的任何文件,以避免错误地对文件进行操作,日常使用时应该尽量避免使用root用户登录。如果以Pi用户登录,很难对系统造成什么致命性的破坏,但以管理员身份操作则可能对系统造成严重的破坏,这也许是不小心的错误操作引起,也有可能是故意的。所以,在使用sudo命令时应该特别小心,尤其在移动或删除文件时,更应慎之又慎。当然,如果确实已经把系统破坏了,也还是可以通过SD卡安装新系统来修复的。上一页下一页返回1.3知识准备通过使用sudo或者类似的工具可以使普通用户临时获得管理员权限,以执行安装软件包之类的操作,这样就可以避免直接以root用户登录所带来的安全风险。在修改系统配置或与硬件打交道时,常常会使用到sudo。系统中的每一个文件都属于某一个用户或某一个用户组,用chown和chgrp命令可以修改文件所属的用户或用户组。若要执行这两个命令,则必须拥有root权限。pi@raspberrypi~$sudochownpigarply.txtpi@raspberrypi~$sudochgrpstaffplugh.txt每个文件都被设置了相关的权限,决定了一个文件是否可以被读、写或执行。这些权限可以按文件的拥有者、文件所属的用户组或全部用户分别设置(见图1.3.3)。上一页下一页返回1.3知识准备用chmod命令可以设置文件的权限。相关的选项如表1.3.2所示。下面是把这些选项组合在一起使用的一些例子:chmodu+rwx,g-rwx,o-rwxwibble.txt①chmodg+wxwobble.txt②chmod-rw,+rwubble.txt③①只允许文件所有者读、写和执行。②允许文件所属用户组的用户写和执行。③该文件对所有用户都是只读。密码是保护个人空间与文件的唯一安全措施,所以应该将之设置得较为复杂,尤其是在把系统板接入网络的情况下。可以用passwd命令修改密码。上一页返回1.4任务实现1.4.1安装RaspbianLinux发行版本操作系统Linux是最适合交互式家居机器人控制的操作系统,它可以帮助家居机器人实现更多的功能。从严格的技术层面来说,Linux只是一个内核,而完整的操作系统还包括驱动程序、服务和应用程序等组件。Linux诞生至今已经演化出很多不同的发行版,如在台式电脑上常用的发行版有Ubuntu、ebian、Fedora和Arch等,每个发行版都在不同的方面为特定的应用程序进行了优化,并有属于它自己的用户社区。下一页返回1.4任务实现DebianLinux是Linux的一个较为轻量级的OS系统,这款OS对浮点运算有更好的支持作用,能为用户带来更快的上网浏览体验。另外它在固件、核心、应用方面也都有了改进,而且据称它是最适合普通用户使用的OS系统。这个版本支持智能家居机器人的所有硬件,它有着成熟的图形化操作界面并包含很多有用的程序,如Web浏览器(见图1.4.1),Debian有一个功能强大的软件包管理器,可以帮助用户方便地安装更多的程序。智能家居机器人控制系统没有基本输入输出系统(BIOS)或内部存储硬件。它只有一个SD卡槽,用户需要准备一台计算机在SD卡上面安装操作系统,这是用来启动家居机器人的。上一页下一页返回1.4任务实现通过Windows写入SD卡是十分方便的,用户可以通过Win32DiskImager来进行写入工作。它是一个免费的应用软件,这个程序有良好的界面,其目的就是帮SD卡写入镜像。它不需要安装,只需要解压压缩包所下载的文件后双击Win32DiskImager.exe就可以开始使用。在用户将镜像写入SD卡之前,需要校验镜像的完整性,用户可以通过计算SHA1哈希值来校验下载好的镜像文件。用户需要安装fciv命令,Microsoft的支持网站有许多关于它的信息。当安装完fciv命令后,用户可输入以下命令:上一页下一页返回1.4任务实现如果这个十六进制校验编码与网站上给出的校验编码一样,说明ZIP文件没有问题,可以放心使用;如果不一致,则需要从其他网站重新下载镜像。上一页下一页返回1.4任务实现在Win32DiskImager程序启动之后,用户需要为读卡器选择Debian镜像和驱动器盘符。需要当心的是,用户一定要选择正确的驱动器盘符,否则可能丢失重要资料,然后单击“Write”按钮,如图1.4.2所示。写入镜像可能需要几分钟的时间,完成以后用户就可以使用SD卡启动智能家居机器人系统。1.4.2配置RaspbianLinux操作系统没有任何操作系统或者程序在刚一开始就可以满足所有人的要求,对于使用Raspbian(DebianWheezy)操作系统的系统来说更是如此。因为它是通过镜像启动的操作系统,这意味着用户不能选择安装时输入的参数,如镜像有着固定的键盘布局和区域设置。在本小节中,将首次启动操作系统并学习一些基本的系统设置,如密码和时区。上一页下一页返回1.4任务实现

首次启动智能家居机器人控制系统当连接好硬件之后,打开主板上面的电源开关。如果用户曾经使用过Linux系统,则会在屏幕上看到很多熟悉的信息快速滚过。对这个现象并不用惊讶,这是因为机器人控制系统也是一个普通的计算机,Raspbian也只是Linux众多发行版之一。当用户首次启动Raspbian时,系统会运行一个名为“Raspi-config”的配置程序。用户通过这个程序可以设置Linux系统中的一些比较重要的参数。Raspi-config的设置界面如图1.4.3所示。使用Raspi-config程序可以使得大多数配置任务变得轻而易举。上一页下一页返回1.4任务实现通常情况下用户可以使用鼠标来设置用户界面,但是在Raspi-config中必须使用键盘进行设置。通过光标向下键移动到下一个菜单项,使用光标向上键则可以移动到上一菜单项。按【Tab】键或光标向右键可以选择菜单项。界面底部亮起的“Select”是确定按钮。按空格键或回车键可以选择菜单项。如果想了解Raspi-config程序的信息,可以选择“Info”项并单击“Select”按钮确认。此时将会出现一个新的界面(简单介绍什么是Raspi-config),用户可以通过单击“OK”按钮或按空格键返回主菜单。绝大部分的Raspi-config配置界面都是有“Cancel”按钮的,如果想取消当前操作,可以按【Tab】键,直到“Cancel”按钮亮起时按空格键或回车键即可。上一页下一页返回1.4任务实现利用主菜单上的“Finish”按钮可以退出Raspi-config菜单。大部分通过Raspi-config完成的配置都需要重新启动系统,所以当单击“Finish”按钮时,系统将重新启动。当用户重新启动系统时,Raspi-config是不会自动运行的,但是不用担心,如果需要重新启动Raspi-config,可以启动一个终端程序,并输入以下命令即可:Pi@raspberry:~$sudoraspi-config上一页下一页返回1.4任务实现

使用Raspi-config设置智能家居机器人控制系统在开始使用智能家居机器人时,用户需要使用Raspi-config进行一些重要的系统设置。例如,用户可以使用Raspi-config为SD卡设定正确的区或扩展其可用存储空间。本小节介绍Raspi-config中重要的菜单项。当然,在以后的项目中也将提到其他菜单项。1.扩展SD卡的所有空间Raspbian镜像在整个系统中只占用了2GB的空间。换句话说,即使用户使用较大的SD卡,由于系统镜像存储空间只有2GB,当用户将镜像写入16GB的SD卡时,系统默认也只能用2G的SD卡空间。上一页下一页返回1.4任务实现使用Raspi-config程序中的“expand_rootfs”选项可以改变这种情况。选择这个菜单项,然后重新启动,镜像就会扩展到整个SD卡的空间。而这个程序运行需要花费的时间长短则由SD卡的空间和存储速度决定。除了第一次启动Raspbian时以外,Raspi-config是不会自动启动的,所以用户需要用“Pi”作为用户名,用“raspberry”作为密码登录系统后,才能用下面的命令再次启动Raspi-config:Pi@raspberry:~$sudoraspi-config上一页下一页返回1.4任务实现2.设置HDMI显示屏为全屏显示由于系统板在设计的时候希望能兼容尽可能多的显示设备,所以支持过扫描和欠扫描。在欠扫描时,视频输出没有占满整个显示窗口,用户将在视频输出窗口外围看到黑边。在过扫描模式下是不一样的,用户但有时也可能看到视频的绝大部分。用户可以通过Raspi-config中的“overscan”选项来开启或关闭过扫描模式。3.重新设置键盘和区域在键盘的设置布局上,某些初次使用的用户可能会感到疑惑,因为Debian默认用户使用的是英式键盘布局。用户可以通过configure_keyboard”选项改变键盘类型。如图1.4.4所示,“configure_keyboard”选项界面会询问用户使用何种类型的键盘。上一页下一页返回1.4任务实现下一步,用户需要设定语言种类,之后用户可以根据自己的喜好设定一些特殊设置。启用新的键盘类型需要单击“Finish”按钮退出Raspi-config并重启系统,但在这之前用户还需要通过“change_locale”选项设定区域。区域的设定不仅包括键盘类型,还决定了系统如何对数据进行排序和日期时间的显示格式。例如,语言的设定会影响系统程序的显示。图1.4.5

所示是英文显示,用户也可以看到德语版本的桌面显示,同样用户也可以通过Raspi_config中的“change_locale”选项来选择适合自己的区域。上一页下一页返回1.4任务实现4.设定时区、时间和日期智能家居机器人系统设置正确的日期和时间不仅是一个基本的系统功能,对于一些加密操作来说更是至关重要,如验证证书。因此用户需要正确的时间以便完成很多任务,Raspbian可以通过网络连接到时间服务器并自动启动和设定当前日期和时间。这样系统就可以准确地显示国际标准时区的日期和时间,但是这并不代表系统可以自动显示用户的时区。选择Raspi-congfig中的“change_timezone”选项,系统会显示几个问题来确定用户所处的地理位置,即将时区信息自动存储在用户所处的地理位置中,然后将时区信息自动存储在用户的配置文件中,当下一次启动系统时就可以看到用户所处的时区。上一页下一页返回1.4任务实现如果用户没有将系统连接网络,也可以使用以下命令人工设定日期和时间:Pi@raspberry:~$sudodate–set=“2014-02-2113:23:42”这样设定时间是有一些弊端的,因为时间不可能完全准确并且每次启动系统的时候都要重新设置一次,有时用户也可能忘记重新设定时间而导致一些问题的出现。5.更改用户密码通过Raspi-config中的“change_pass”选项来更改密码,Raspi-config界面会显示让用户输入新密码并确认再次输入新密码。需要注意的是,出于安全问题请不要使用过于简单的密码,如“123”或者“aaa”。上一页下一页返回1.4任务实现

启动桌面不同于其他操作系统,Linux的图形桌面环境不是必需的。用户可以在登录后手动启动桌面环境,或者设置为在用户启动Pi时自动启动桌面环境。用户可以通过Raspi-config中的“boot_behaviour”选项来激活这个设置(如果用户很少使用命令行,这是一个方便的选择)。否则,Pi就会引导用户登录进入命令行模式,如图1.4.6所示。当用户成功登录后,看到的仍然是命令提示符,输入以下指令可以启动LXDE桌面环境:Pi@raspberry:~$startx几秒钟以后,控制系统板的显示屏上会出现一个拥有美丽背景的桌面,如图1.4.7所示。上一页下一页返回1.4任务实现1.4.3通过apt-get管理软件现在用户已经设置好了Raspbian,可以增加更多的软件。如果以前认为Linux安装新软件是一件非常麻烦的事情,那么用户只要先下载源代码和编译器,然后对软件进行编译后再自动安装软件即可,这样既方便又快捷。如果程序依赖于其他项目或者库文件,则需理解编译器或链接器显示的错误信息,然后下载依赖文件或库自行解决这个问题,随后才能编译甚至安装更多的程序。幸运的是,现在没有这些问题了,新的Linux发行版附带有软件包管理器,它可以自动下载和安装新的程序。软件包管理器不仅自动解决所有依赖问题,还可以自动下载二进制软件包,而不是在本地编译它们。它可以帮助用户删除不再需要的软件。上一页下一页返回1.4任务实现Raspbian的软件包管理器名为“apt-get”(APT代表先进封装工具)。1.安装新软件安装新的Raspbian嵌入式系统自带的程序比较简单,这是有原因的。因为系统没有硬盘,如果想要更好地使用系统,那么用户可能需要自行安装一些程序。Debian操作系统在控制系统板上安装软件是不同于在普通的计算机上安装软件的。用户使用的软件大多来自相同的地方并有很多程序可供选择。不幸的是,不是所有的软件包都适合系统板的ARM架构。另外,有一些程序在系统板上无法运行,因为它们运行时所需要的资源超过了系统板所能提供的资源,不过用户仍可以找到足够多的可用程序。上一页下一页返回1.4任务实现在这时,用户将要在系统板上安装PDF阅读器。如果用户以前使用过Microsoft的Windows操作系统或Apple的MacOSX操作系统,是不用担心不会安装PDF阅读器的。但是在某些Linux系统下,特别是在有的控制系统上,并不能保证可以找到一个完美的PDF阅读器。有趣的是,用户可以使用install命令来安装新的软件包。输入以下命令就可以安装xpdf和evince(注意要确保连接网络):Pi@raspberry:~$sudoapt-getinstallxpdfPi@raspberry:~$sudoapt-getinstallevince或者用户可以输入以下命令安装以上两个软件包:Pi@raspberry:~$sudoapt-getinstallxpdfevince上一页下一页返回1.4任务实现现在用户已经在独立的软件包中安装了这两款PDF程序(见图1.4.8),然后可以运行这两款软件,看看哪一款更适合自己。用户可以在LXDE的桌面快捷菜单中找到这两款程序的快捷方式,同样也可以输入以下两个命令来实现(在用户启动桌面环境之后):Pi@raspberry:~$evince或输入:Pi@raspberry:~$xpdf2.删除软件尝试使用这两款软件,然后选择一款用户自己最喜欢的使用。假设用户更喜欢evince软件,则可以通过以下命令来删除xpdf:Pi@raspberry:~$sudoapt-getpurgexpdf上一页下一页返回1.4任务实现运行完这段程序后,相当于现在xpdf程序已经被完全地删除了,且没有留下任何痕迹。用户如果只想删除程序但希望保存配置文件,则可以在上面的命令中用“remove”参数替换“purge”参数。1.4.4使用PiStore安装软件和多媒体2012年年底,嵌入式控制板基金与Indiecity和Velocix一起发布了PiStore网站。在Store里可以找到免费和收费的程序、游戏、发布工具和一些多媒体,如杂志和视频。其中有两种收费程序:一种是直接付费的程序;另一种是类似于自愿捐赠的程序。PiStore是一个网站,用本地的客户端程序去访问它更加方便,图1.4.9所示为PiStore中的本地用户。最新的Raspbian镜像包含了PiStore,用户可以通过单击桌面图标进行登录。上一页下一页返回1.4任务实现如果没有PiStore登录程序,则可以通过以下命令安装:Pi@raspberry:~$sudoapt-getupdatePi@raspberry:~$sudoapt-getinstallpistore这是一个一目了然的程序,在登录进去以后用户只需单击鼠标就可以安装程序。当前PiStore只有少量的程序,经过一段时间的发展,这个情况会有所改善的。1.4.5设置RaspbianLinux固件下面列出用户可能需要修改的重要配置,需要时可以参考。在配置界面上,可以用光标上下移动键来选择菜单中的不同项,并按空格键确认选择,可用【Tab】键在不同输入框中进行切换光标,用光标左右移动键选择窗口底部的不同按钮。下面按菜单中的顺序依次介绍这些配置项。上一页下一页返回1.4任务实现1.ExpandRootfs(扩展根分区)当用户第一次启动系统时,总是需要执行这个选项。执行这个选项后,可以把文件系统扩展到整个SD卡容量中去。2.Overscan(过扫描)用户可以暂时先把这个选项禁用。如果用户正在使用一个高分辨率的显示器,可能会发现这些文字在显示区域的外面。若要解决这个问题,可以启用Overscan选项并修改配置值使显示的画面撑满整个屏幕,这个配置值决定了显示驱动需要进行过扫描的量。如果屏幕上无法显示完整的画面,则把这个值设置为正数;如果画面边上留有黑边,则把这个值设为负数。上一页下一页返回1.4任务实现3.Keyboard(键盘)默认的键盘设置为普通英式键盘布局。为了让键盘上的键与显示在屏幕上的字符一致,则需要把键盘布局设置成与所使用的键盘实际布局一致。幸运的是这个键盘布局列表非常完整,不必担心在里面找不到与键盘布局一致的选项。值得注意的是,系统的区域设置也可能会影响键盘的设置。4.Password(密码)最好把默认密码raspberry改为其他更复杂的密码,以确保安全。5.ChangeLocale(修改区域设置)如果用户在英国以外的地区,可以修改区域设置让它与自己的语言和字符编码相匹配。默认的设置是标准UTF-8编码的英式英语(en_GB.UTF-8);如果用户在美国,可以将其设为“en_US.UTF-8”上一页下一页返回1.4任务实现6.ChangeTimezone(修改时区)通常可能需要设置一下正确的时区。7.MemorySplit(内存分配)这个选项用于修改分配给CPU和GPU的内存比例,暂时可以先保持默认的设定。8.Overclock(超频)用户可以把处理器的运行速度设定为高于正常700MHz的值。如果是初次使用,建议保持默认值或尝试Medium(中等)或Modest(适中)值。以后可以再考虑改成其他设置(Turbo模式可以让处理器运行在1000MHz的速度)。上一页下一页返回1.4任务实现9.SSH这个选项用于启动SSH(SecureShell)服务器,用于通过网络远程登录到系统中去,这是一个非常有用的功能。10.DesktopBehavior(桌面行为)这个选项用于设置是否默认启动图形化桌面环境,默认值是“启动”。如果选择“不启动”,系统启动后就会停留在命令行模式下,用户可以自己登录系统并手工启动图形化桌面环境:Raspberrypilogin:PiPassword:raspberryPi@raspberry:~$startx上一页下一页返回1.4任务实现当进入图形界面后,命令行界面就会消失,用户可以通过打开一个终端程序来使用命令行。单击屏幕左下角的桌面菜单,然后选择“附件->LX终端(Accssories->LXTerminal)”。11.Update(更新)如果接入了Internet,可以通过这个选项来更新配置工具。刚开始尝试使用Pi时,请暂时不要更新系统。当完成所需的设置后,单击“Finish”(完成)按钮,然后就会重新回到命令行模式下。此时输入:Pi@raspberry:~$sudoreboot上一页下一页返回1.4任务实现重启系统,使设置生效。如果一切顺利(并且设置了自动启动到图形桌面环境),重启后用户会看到运行在轻量化X11桌面环境(LightweightX11DesktopEnvironment,LXDE)下的Openbox窗口管理器。这时,完成了设置,并且系统已经正常运行了!1.4.6把控制器变成多媒体中心交互式智能家居机器人控制器具有对高清视频的硬件解码能力,这使其成为出色的一体化多媒体中心的“候选人”,就如PlayStation游戏机和Apple电视一样。它把控制器变成多媒体中心需要的一个特殊软件:XBMC。XBMC是一个能够把几乎所有的PC变成一个为电子设备服务的娱乐中心的媒体播放器。交互式智能家居机器人控制器也不例外。本小节介绍如何在控制器上运行XBMC。上一页下一页返回1.4任务实现1.安装RaspbmcXBMC是一个很大的软件工程,它的安装和配置不太容易。幸运的是,用户不必亲自为控制器烦恼,因为这一切都已经被Raspbmc团队解决了。Raspbmc是一个运行在Linux系统下的发行版本。用户可以像平常一样把镜像写到一张SD卡上,然后用这张SD卡来引导系统。不需要启动一个终端或者一个桌面环境,Raspbmc系统会自动启动XBMC。和其他为控制板设计的Linux发行版相比,Raspbmc团队不仅提供一个完整的SD卡镜像文件供下载,他们还决定制作一个供所有主要平台使用的安装程序。这个安装程序会在网上下载最新版本的Raspbmc,然后自动写入SD卡。上一页下一页返回1.4任务实现如果用户在Windows操作系统下安装Raspbmc,则需要下载安装程序,并将之解压到个人硬盘里,然后启动installer.exe程序,这类似于图1.4.10。插入一张SD卡,然后单击“Install”按钮,安装程序就会下载最新版本的Raspbmc并将之复制到SD卡上。注意:这个安装程序会删除这张SD卡上的所有数据。Linux和Mac系统的Raspbmc安装程序没有华丽的UI,但同样使用简单。因为它是一个python程序,在完成下载后,可以在一个终端上运行以下程序:上一页下一页返回1.4任务实现Maik>sudopythoninstall.py安装程序会列出当前电脑上的所有驱动器,其中包括连接到计算机的SD卡读卡器。在PC上的输出会有所不同,但是前面的例子中,SD卡由disk1s1、disk1s2、disk1s3三个分区组成,输入第一个分区的名字disk1s1,然后确认想安装的Raspbmc。请确保选择了正确的SD卡设备,因为安装程序会删除所选驱动器的所有数据!创建一个可引导的SD卡后,将读卡器插入控制板,然后启动控制器。令人惊讶的是,Pi不会立即启动XBMC,而是引导Linux系统启动并安装Raspbmc。首先,它会重新对SD卡分区并格式化新建分区。然后,它将下载并安装最新版本的XBMC。所有这些步骤不需要用户操心。根据SD卡的读写速度和网速,这个过程需要约20min。上一页下一页返回1.4任务实现2.第一次启动Raspbmc在安装过程完成后,Raspbmc自动启动XBMC,其主菜单如图1.4.11

所示。XBMC像许多其他的媒体播放器一样,它有菜单项可以浏览照片、观看视频、播放音乐,并配置一些系统选项。这些功能是不言自明的,用于播放或观看任何类型的媒体,用户可以方便地从SD卡或USB设备上选择媒体文件,XBMC就能播放或显示它们。要将USB设备,如硬盘驱动器或U盘连接到Pi,必须使用USB集线器,这时用户应暂时断开鼠标使用键盘控制XBMC。选择菜单项,单击鼠标左键,也可以用光标将焦点移到一个按钮上并通过回车键选择。如果按下【Escape】键,将返回到上一级菜单界面。上一页下一页返回1.4任务实现XBMC不仅是一个简单的媒体播放器,用户可以在网络上查找免费的插件来增强它的功能(见图1.4.12)。简单地说,插件给了访问Web上的媒体权限。例如,用户可以找到针对某些电视台的内容或能提供最棒的视频游戏音乐的插件。XBMC甚至提供了一个非常便捷的插件管理工具。用户可以花几分钟的时间浏览插件列表,看看是否有自己感兴趣的插件。如果不确定某个插件的功能,试着安装它。如果不喜欢,可以很容易地删除它。请注意,这需要足够强的网络宽带,因为很多在线视频插件都要求大量的数据流量。上一页下一页返回1.4任务实现根据SD卡和互联网连接的速度,用户会在XBMC选择菜单项时遇到一个明显的延迟。将来的版本会做得更好,但就目前而言,用户不得不忍受并耐心等待XBMC的菜单导航。不过在XBMC播放内容的时候画面很顺畅,通常不会有任何延迟。最后,应该查看一下“Systems->Setting”菜单,确认所有的设备是否匹配本地设置。如果使用的是复合视频,则选择模拟音频输出设备为“Systems->Seting->Audio”。1.4.7在控制器上面玩游戏一直以来,Linux就不是一个受欢迎的游戏平台。尽管这种情况在近些年来有所改善,但是想要等一个巨作的出现可能需要一些时间,不过现在用户也可以在上面玩一些有趣的游戏。上一页下一页返回1.4任务实现例如,可以在控制器上玩成千上万的文字冒险游戏。如果用户还没有玩过这些经典游戏,如Zork,那么应该尝试一下。另一个经典的游戏类型是包括Poin-and-Click在内的冒险游戏,如TheSecretofMonkeyIsland和DayoftheTentacle。虽然控制器没有强大到足以运行现代游戏,如《雷神之锤》(QuakeIII),但它有足够的能力去模仿一些过去的家用计算机和游戏机的功能。例如,用户可以在控制器上玩所有的ArariVC2600Pi系列游戏。在家用计算机刚刚开始普及的年代,文字冒险游戏很受欢迎。对比壮观的3D图形与带有环绕立体声的现代游戏,文字冒险游戏看起来很简朴。它们只能输出文本,而且只能通过在键盘上键入命令来控制游戏。在这里,Zork号称“最有名的文字冒险之一”。上一页下一页返回1.4任务实现<ZORKI:TheGreatUndergroundEmpireCopyright(C)1981,1982,1983Infocom,Inc.Allrightsreserved.ZORKisaregisteredtrademarkofInfocom,Inc.Revision88/Serialnumber840726WestofHouseYouarestandinginanopenfieldwestofawhitehouse,Withaboardedfrontdoor.Thereisasmallmailboxhere.》>openmailbox<openingthesmallmailboxrevealsaleaflet.上一页下一页返回1.4任务实现》>takeleaflet<Taken.》>readleaflet<“WELCOMETOZORK!别被游戏的表面所迷惑,很多文字冒险游戏都有非常精彩的故事情节,用户可能会沉迷其中。虽然文字冒险游戏几十年前就没有商业版了,但这类游戏仍然有一个活跃的社区,其可以制作出令人兴奋的游戏。它们大多数都有精心设计的故事情节,所以它们的创作被称为“互动小说”。上一页下一页返回1.4任务实现刚开始设计出文字冒险游戏的公司中有个名为“Infocom”的开发商,在几年时间里创造了一些有史以来最伟大的文字冒险游戏。Infocom早就意识到,他们能通过创造出特定区域的用语言描述的文字冒险游戏来减轻工作量。这种语言被称为Z语言,文字冒险游戏制作者至今仍用它创建游戏。若要运行由Z语言编写的程序,则需要一个命名为“Z-machine”的虚拟机,其中最好的名为“Frotz”。可以使用以下命令来安装:Pi@raspberry:~$sudoapt-getinstallfrotz用Frotz玩文字冒险游戏,仅需要这个游戏的Z语言文件。InteractiveFictionArchive是开启冒险之旅的好地方,因为它能装载成千上万款游戏。上一页下一页返回1.4任务实现如果用户是文字冒险游戏的新手,那么应该从Zork三部曲开始冒险之旅。这一系列游戏使得Infocom名声大噪,尽管它们已有几十年的历史,但它们依然像第一天一样新鲜。同时,它们可被免费下载。下载Zork并按以下程序启动:Pi@raspberry:~$unzipzork1.zipPi@raspberry:~$frotzzork1/DATA/ZORK1.DAT这包括了Z-machine运行环境和运行储存在ZORK1.DAT中的游戏。上一页下一页返回1.4任务实现1.4.8使用RaspbianLinux系统编译Python程序把Python作为入门语言非常合适,它的代码非常清晰,安装和设置运行环境也很容易。更重要的是,它有一个庞大的用户群,大家可以在一起分享代码或共同分析、解决问题。GuidovanRossum创造了Python语言,并在很早的时候就把它设计成一门适合入门的计算机语言。1999年,GuidovanRossum提出一项叫作“人人能编程”的宏伟计划,计划用Python语言在中小学开展编程教学。十多年时间过去,从现在的使用情况来看,这个计划得以实现。上一页下一页返回1.4任务实现Python是一种解释性语言,用户所编写的程序或脚本可以直接被执行,而不需要把它们先整体编译成机器码。解释性语言用起来很便捷,并且有一些额外的优点。例如,在Python中,用户不需要指定某一个变量是数字、列表还是字符串,解释器在执行脚本时会自动判断出变量的类型。Python的解释器有两种运行模式:它既可以被当成一个交互式的终端执行单条命令,也可以作为一个命令行工具运行独立的脚本。系统板也提供了与Python绑定在一起的集成开发环境IDLE(见图1.4.13)。上一页下一页返回1.4任务实现1.初始Python学习Python最好的方式就是实践。虽然用户可以用任何文本编辑器来编写脚本,但我们仍会从使用IDE(集成开发环境)开始。可以双击桌面上的IDLE3图标打开IDLE3开发环境,也可以单击左下角的桌面菜单,选择“编程(Programming)->IDLE3”。IDLE启动需要花费几秒钟时间,当它启动后,用户可以看到它的界面,里面包含了一个交互式的终端。行首显示的3个大于号(>>>)是命令提示符,当你看到这个提示符时,就表明解释器正在等待输入命令。下面,尝试在提示符后输入:>>>print(“SalutonMondo!”)按回车键,Python就会执行用户输入的命令,并在窗口中显示运行结果。注意,print()命令是在Python3.0中引入的重要改变之一,如果运行命令出错了,请检查一下运行的是不是3.0版本的IDLE。上一页下一页返回1.4任务实现用户可以把命令行当成计算器来计算表达式的值:>>>3+4+512用户可以把命令提示符后面输入的每一条命令看成一个程序,只不过每次只运行了这个程序中的一行而已。用户可以在命令行中创建变量或导入模板:>>>importmath>>>(1+math.sqt(5))/21.618033988749895Import命令把Python数学函数库的功能都导入程序供用户使用(参考“对象与模块”来了解更多具体的信息)。如果要创建变量,可以使用赋值运算符(=):上一页下一页返回1.4任务实现>>>importmath>>>radius=20>>>radius*2*math.pi125.66370614359173如果用户想清除所有的变量并恢复到初始状态,则选择“Shell->RestartShell”即可。用户可以通过help命令获取某个表达式、模块或其他Python功能的描述:help(“print”)如果要显示主题的列表,可以运行:help(“topics”)help(“keywords”)help(“modules”)上一页下一页返回1.4任务实现Python解释器很适合用于测试表达式或进行简单的操作,但通常人们更希望把Python脚本当作一个程序来运行。若要新建一个Python程序,则选择菜单中的“File->NewWindow”,IDLE会帮用户打开一个脚本编辑窗口(见图1.4.14)。用户可以尝试输入一些命令,然后选择“Run->RunModule”,系统会弹出一个警告框“SourceMustBeSaved?”。然后把这个脚本保存到主目录中,命名为“SalutonMondo.py”,此时就可以在终端中实行它。如果不想通过IDLE环境来运行程序,也可以打开LX终端(LXTerminal),在命令行上输入:PythonSalutonMondo.py上一页下一页返回1.4任务实现此时,程序即将运行。前面介绍的都是最基本的环境使用知识,下面可以真正开始学习这门语言了。用户如果以前用过arduino,则会习惯把程序(在arduino术语中称为“Sketch”,但在Python中称为“脚本”)写成setup/loop结构,setup只在程序启动时运行一次,而loop函数会一直被循环执行。下面的例子展示了如何在Python中实现这样的结构。在IDLE3中选择NewWindows创建一个新窗口,输入下面的代码:上一页下一页返回1.4任务实现#setupn=0#loopWhileTruen=n+1#The%isthemodulooperatorIf((n%2)==0);Print(n)执行RunModule并给脚本起一个名字(如EvenIntegers.py)。当程序运行起来后,用户可以看到屏幕上依次打印所有的偶数(按【Control-C】键中断程序,否则它会一直运行下去)。上一页下一页返回1.4任务实现在Python程序中,空格非常重要,空格和缩进决定了程序的逻辑结构。在下面的例子中,loop()函数下面同一缩进层次的代码被定义为这个函数的函数体。当代码的缩进层次提高一层(或到达文件结尾)时,就意味着循环的结束。这与C语言等以花括号或其他符号作为代码块分隔符的语言很不一样。通过定义函数,可以把一个代码块组合成一个整体,在脚本中的其他地方进行调用。可以用函数把上一个例子进行重写,如下(运行时,请把它保存为“CountEvens.py”):上一页下一页返回1.4任务实现#Declareglobalvariablesn=0①#setupfunctiondefsetup():②globalnn=100defloop():③globalnn=n+1if((n%2)==0):上一页下一页返回1.4任务实现print(n)#Main④setup();whileTrue:loop()在这个例子中,输出的值是从“102”开始的所有偶数,解释如下:①首先,变量n被定义成全局变量,所以它可在整个脚本的任意位置使用。②这里定义了setup()函数(但还没有执行它)。③类似地,这里定义了loop()函数。④在主程序段中,setup()被调用了一次,然后循环调用loop()函数。上一页下一页返回1.4任务实现每个函数第一行的global关键字非常重要,它告诉解释器,这个函数中将要使用全局变量n,而不是在这个函数中创建一个只能在本函数中使用的新的局部变量(local,只对本函数有效)n。受篇幅和内容所限,本书不可能写出完整的Python参考手册,如果要深入学习这门语言,读者可以购买一些介绍Python语言的专业书籍。上一页返回1.5考核评价任务1RaspbianLinux系统安装要求:能够独立完成RaspbianLinux系统的安装,能用专业语言正确流利地展示安装过程,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。任务2使用Raspi-config设置系统要求:学会进入Raspi-config配置菜单,学会如何配置扩展SD卡的所有空间,设置嵌入式控制板全屏模式,重新设置键盘和区域,设定时区、时间和日期,调整系统的内存分配,修改用户密码等,能用专业语言正确流利地展示配置的基本步骤,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。下一页返回1.5考核评价任务3启动进入桌面要求:启动系统后,能够在命名提示符中使用Startx命令进入LXDE桌面,掌握桌面基本的操作技巧,能用专业语言正确流利地展示配置的基本步骤,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。任务4通过apt-get安装新软件要求:学会使用apt-get安装新软件,熟练掌握install命令的使用,可以试着安装xpdf和envince软件,能用专业语言正确流利地展示配置的基本步骤,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。上一页下一页返回1.5考核评价任务5通过apt-get删除软件要求:学会使用apt-get删除软件,清楚remove和purge命令的区别,可以试着删除xpdf软件,能用专业语言正确流利地展示配置的基本步骤,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。任务6使用Python编写简单的Hello程序要求:学会通过IDLEPythonShell编写简单的程序,如通过print()内置函数打印出Hello简单程序,能用专业语言正确流利地展示配置的基本步骤,思路清晰、有条理,能圆满回答老师与同学提出的问题,并能提出一些新的建议。返回上一页1.6拓展提高任务1升级固件或内核Raspbian镜像中已经包含了使用于系统的固件,但是Linux内核和控制器的固件开发者经常发布升级程序。新的升级版包括了错误程序的修复和功能的提升,所以升级对内核和固件都有好处。通过以下命令可以检查安装在控制器上的内核和固件的版本:Pi@raspberrypi~$uname–aLinuxraspberrypi3.6.11+#348PREEMPTTUEJan116:33:22GMT2013Armv61GNU/LinuxPi@raspberrypi~$/opt/vc/bin/vcgencmdversionDec28201211:22:54Copyright(C)2012BroadcomVersion359904(release)下一页返回1.6拓展提高用户可以经常在GitHub上找到最新的版本,而且只需将程序下载,写入SD卡即可。如果安装新的内核和固件,用户需要在控制器的“/boot”目录下更换一些文件,这个/boot目录同FAT文件系统的格式属于SD卡的启动分区。所以,用户不仅可以通过控制板来读写,几乎全世界所有的计算机都可以读写。图1.6.1所示为GitHub所包含的内容。固件存储在start.elf文件中,而内核存储在kernel.img文件中。因此用户可以使用家用计算机下载新的内核和固件并使用读卡器将之复制在SD卡里,这个过程仍然烦琐且容易出错。幸运的是,rpi-update程序可以自动运行整个过程。在控制板的系统中,已经默认安装了rpiupdate程序,它可以自动检测是否有新的固件,并自动下载新固件。用户在运行rpi-update之前需要安装一些必要的软件包。此时,输入以下命令:上一页下一页返回1.6拓展提高Pi@raspberry:~$sudoapt-getinstallca-certificatesgit-core现在,用户可以下载rpi-update程序并为它增加可执行权限:Pi@raspberry:~$sudowgethttp://goo.gl/1B0fJ-0/usr/bin/rpi-updatepi@raspberry:~$sudochmod+x/usr/bin/rpi-update之后,开始运行rpi-update程序:Pi@raspberry:~$sudorpi-update嵌入式控制板firmwareupdaterbyhexxeh,enhancedbyAndrewSperformingselfupdateARM/GPUsplitisnowdefinedin/boot/config.txtusingthegpu_memoption!上一页下一页返回1.6拓展提高We’rerunningforthefirsttimeSettingupfirmware(thiswilltakeafewminutes)usigHardFPlibrariesIfnoerrorsappeared,yourfirmwarewassuccessfullysetupArebootisneededtoactivatethenewfirmware如果没有显示错误信息,则说明固件安装成功,但需要重启来激活固件。任务2设置视频输出用户可以通过使用“/boot/config.txt”文件内的多种参数设置固件,它包括所有控制器固件的所有配置参数。在浏览器中将它的描述设置为“书签”是一个好办法,因为用户可能修改一些参数,而通过浏览器查看参数设置说明是非常方便的。使用config.txt配置文件,用户可以调节视频和音频输出,甚至可以改变CPU的运行频率。上一页下一页返回1.6拓展提高“config.txt”默认设置在大部分的硬件系统下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论