• 最近由于开发调试需要,安装了Genymotion安卓模拟器(传说很好用、很快)。 不喜欢各种国内的模拟器,很多广告各种预装游戏等。 想把一些需要的其他应用也安装进去,方便电脑上使用安卓应用。 总是显示安装失败。 ...

    最近由于开发调试需要,安装了Genymotion安卓模拟器(传说很好用、很快)。

    不喜欢各种国内的模拟器,很多广告各种预装游戏等。

    想把一些需要的其他应用也安装进去,方便电脑上使用安卓应用。

    总是显示安装失败。


    最终找到了原因,虽然简单,但是不知道就会走弯路,避免大家也跳入大坑。

    在此分享出来


    在网上查询了很多资料,

    意思是说Genymotion是基于X86的,不支持ARM架构。所以有些应用是基于ARM架构编译的就无法安装。


    大都是说下载个ARM转换器,拖拽到模拟器的主页屏幕,然后点击OK进行安装,或者再运行linux命令啥的。安装完毕后重启模拟器即可。


    大多数是针对linux或者mac系统的,window10的教程很少。



    我下载的Genymotion_Arm转换器(文章最后有下载地址)


    但是折腾了好几个小时没弄好,拖动到屏幕上以后显示

    “Files successfully copied to: /sdcard/Download”

    压根就没安装(文件我是放到桌面的)。各种办法都试过了,还是不行。

    最后终于找到原因,囧....


    原来此文件是不能放到含有中文路径的,因为我的用户名是中文,其实桌面的路径也是带中文的!  

    而且路径和文件名不能有空格!比如有人把“Genymotion_ARM_Translation_5.1.zip”改成了 “Genymotion_ARM_Translation 5.1.zip”(5.1前没下划线)


    1 把它拷贝到纯英文的路径(直接拷贝到D盘根目录也行)

    2 拖拽到模拟器主页屏幕上即可正常安装!


    点击OK  等待一小会儿,


    提示安装成功请重启模拟器,点击OK。

    3 然后将模拟器关机,关闭模拟器后重启即可。




    哈哈,一切正常,软件装上了。。。


    如果重启Genymotion以后提示你:没有安装 Oracle VM VirtualBox,去下载重新安装即可。


    自己搜集的各版本Genymotion_ARM_Translation(4.4、 5.1 、6.0) :

    链接:http://pan.baidu.com/s/1eRRW7GQ 密码:nxdc

    其中 5.1 亲测可用。


    参考:http://blog.csdn.net/zy517863543/article/details/54629390

    展开全文
  • Windows8 游戏开发教程-开篇 准备开始写一个win8游戏开发教程了,现在这里整理一下思路。 需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。   1.阅读这个教程需要什么样的基础? 2.这个教程...
    来自 Windows8 游戏开发教程-开篇


    准备开始写一个win8游戏开发教程了,现在这里整理一下思路。

    需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。

     

    1.阅读这个教程需要什么样的基础?

    2.这个教程能带来一个怎样的DEMO,结束之后能开发什么游戏?

    3.这个教程覆盖哪些知识,使用什么语言和工具开发?

     

    问题1: 首先是编码能力,这不是一本程序教材,编码基础不讲,选择c#作为主要开发语言,读者需对c#有一定的了解。其次一定的动手能力,有时需要一定的c++开发,会提供详细的代码,如果你跳过这些代码,最起码你应该能够编译他们,使用他们。第三、探索精神,重点是针对win8 游戏开发这个专题,专题以外的知识一定有更合适的资料去了解和学习。

     

    问题2: 这个教程不会带来一个完美的游戏,但一定会向你展示开发一个Win8 Metro 游戏所需要的方方面面。带来一个 2D 3D 绘图、音乐音效、多点触控,资源、线程管理的一系列例子,以及把多个示例穿起来的演示项目,挑选一个简单的游戏方式来说明如何把这些例子穿成一个游戏。理论上来讲,你可以开发任何游戏了,只差一点,你的持续努力。

     

    问题3:

    这个教程会覆盖一定的算法、数据结构、图形学。

    开发工具涉及DirectX、winrt、xaml、xml、winmd

    开发语言工具涉及c#、c++,

    环境要求 windows 8、vs2011 for windows8

    其他工具:

    图片、模型处理工具:简单点就是2D 3D美术工具,毫无意外的,这些东西程序员必须会使用,美术规格都应该由使用相关资源的程序员提供,自己当然要先熟悉。未免不必要的麻烦,虽然我基本都使用一些大牌美术工具,考虑到版权问题,教程中介绍时均采用免费工具,你可以用大牌工具完成一样的工作。

    版本管理工具:即使你只是在本机写一些练习,也强烈要求你使用版本管理工具(比如svn),保存自己的每一步操作,学习一个版本管理工具花不了几个钟头,坚持使用他吧。

    文本比较工具:版本管理的延伸,检查两个版本之间的差异,是一种非常实用的手段,当你搞不清楚改了什么出问题了,看看上个版本吧。

    工作记录工具:文本、邮件、blog,随便什么,无论多少,把自己的点滴进展记录下来,经常回顾,坚持做计划,坚持执行计划。否则,几乎不可能完成一个需要10天以上的工作。30项工作你的大脑会把他拧成麻花,但是记录在纸上不过半页,而且很容易有条理,你今天只需关注今天的事情,别让大脑在这件事情上折腾,我们要思考的东西还多着呢。

     

    嗯,工具说了一大堆,我在教程中并不会告诉你工具怎么用,我会尽量在教程中提示该使用哪些工具,但这些使用工具习惯的养成终究要靠你自己。

     

    让我们开始说重点吧

    为什么需要 windows 8 游戏开发教程

    windows 8 使用的主要的界面叫做metro,传统的界面称为desktop,仅在win8桌面版支持,作为对老操作系统的兼容和过渡。Metro UI程序的开发,始于windows phone 7,和过去的windows桌面程序开发有比较大的不同。并且和windows phone 7也有很大的不同,甚至有种说法,windows phone 8 也会升级为和windows 8 类似的界面。

    引入了winmd接口形式,c++的加入,dotnet性能的劣势部分和winrt、dotnet ramework中没有提供的功能,可以很容易的补上。winmd作为一个新的接口形式,还没有充足的资料,此教程也将作为winmd的资料。

    有什么是新的

    Metro UI :摒弃了窗口的概念,基本UI形式还是按控件组织,用xaml组织,从wpf->silverlight->metro ui这样发展而来。

    WINMD:新的接口技术,像是com和dotnet的混血,使用c++、dotnet、js 都可以直接调用winmd接口。目前使用c++和dotnet都可以生产winmd接口的类库,dotnet可以生产跨平台的winmd接口类库,c++需要针对不同平台编译。

    windows kits:非全新,有很大一部分来自windows sdk win32API,,c++头文件和lib,还有WINRT,这次提供了三种平台的lib(x86 x64 arm),并不包括所有的WIN32 API,Metro UI仅能使用windows kit,不要尝试使用传统win32 api。

    winrt:用winmd接口包装的面向对象形式的windows api,基本上取代了dotnet framework或者说是dotnet framework中的大部分改成了winmd接口。现在c#开发metro ui应用,大部分调用都是winrt。c++ 和 js 应用开发,也需要调用winrt。

    imageimage

    从容量上对比,就可以看出dotnet framework的大部分功能都瘦身掉了,瘦身掉了的部分就由winrt补上了,开发中调用的 windows命名空间中全部是winmd接口,他们就是winrt。

    c++ cx:c++和 winmd 通讯的扩展,典型语法"^“ “ref new xxx”

     

    看上去很可怕,一大堆新东西,其实呢,你根本不用关心winmd winrt都是什么东西,他们都是api,调用时都以命名空间的形式组织,作为类库来说扩展名是winmd,实际使用dotnet类库和winmd类库从编码角度没有差异,winrt中的lib 也是标准的c++类库。和c++以前链接库也没有差异。

     

    有什么旧的可用

    c++开发知识没有变化,毫无变化,唯一不同的是提供了三种平台的lib 多了arm。

    c# 和dotnet 开发知识没有变化,dotnet framework 还是那么工作的,不过是有一部分被winrt替代了。而且替代部分也不影响你的开发,最多命名空间不同,重新找一下。

    directX 知识,目前winrt中没有提供绘图API,dotnet framework中删去了绘图api,XNA还没有登陆win8的消息。所以使用c++ 调用 DX 来开发图形部分,成为目前开发windows 8 游戏的必然选择。

    由于winmd接口的引入,混合编程变得容易,c++ 和 DirectX 积攒了大量的游戏、引擎,我们可以大胆预测,XNA4或许是最后一个版本,XNA5恐怕会以winmd接口形式出现,退回MDX的模式,作为DX的winmd接口版本,总之按照这个发展势头,XNA不再是平台唯一解决方案,他将面对无数的竞争,包括本教程^_^。

    还可以大胆预测winmd这么华丽的形式,一定会登陆 windows phone 和 xbox,然后,dotnet的XNA会逐渐变成可选项,然后就没有然后了,还是那句话,XNA5可能就变成了DX的winmd包装。

     

    如果发现有什么不对的地方,请求大家积极的批评指正。

    预告、下周结合代码介绍Metro UI

    展开全文
  • 配置QT5.7基于x86及arm 等两种CPU架构的调试及开发环境; 移植arm编译后的QT5.7及屏幕校准工具tslib1.4至CORTEX ARM9实验平台; 开发基于QT5.7的嵌入式音视频播放器; 开发基于QT5.7的嵌入式串口工具,实现数据...

    一、 项目要求

    1. 配置QT5.7基于x86arm 等两种CPU架构的调试及开发环境;
    2. 移植arm编译后的QT5.7及屏幕校准工具tslib1.4CORTEX ARM9实验平台;
    3. 开发基于QT5.7的嵌入式音视频播放器;
    4. 开发基于QT5.7的嵌入式串口工具,实现数据双向通信;
    5. 能用Q5.7T在开发板上实现读取SD卡及U盘的文件(目录)信息,并以相关组件展示;
    6. 开发基于QT5.7的嵌入式LED io控制器,实现对LED设备的控制;
    7. 开发嵌入式QT小游戏模块;
    8. QT开发计算器模块;
    9. 实现日期组件,能够修改系统(arm平台)时间并实时刷新;

    二、 项目开发环境

    2.1 硬件环境

    2.1.1开发端(PC) 

    操作系统:64ubuntu-19.04(虚拟机)

    CPU    INTER_X86 core i5-6200 主频可加速至2.8GHZ

    GPU  NVIDIA GEFORCE-920M

    虚拟硬盘:25GB

    RAM  4GB

    2.1.2教学实验平台 

    CPUSamsung Exynos4412, 四核Cortex-A9,主频为1.41.6GHz

    GPU: ARM Mali-400 MP Core (Quad Fragment processors)

    操作系统:Linux 3.0

     

    2.2 软件环境

    2.2.1 编译QT5.7(ARM)

    QT及相关工具下载

    1. http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz下载linuxQT5.7源码版本(考虑到QT4.8.5中对音视频库的支持不够友好,我们直接选择版本更高的QT5并将平台上的QT4予以替换)
    2. 由于编译源码的需要,需要从https://www.veryarm.com/arm-none-linux-gnueabi-gcc下载交叉编译工具arm-none-linux-gnueabi-gcc
    3. 实验平台屏幕校准工具tslib1.4http://vdisk.weibo.com/s/AcUHxOERV2k0?sudaref=www.baidu.com
    4. 最后将下载成功的qt-everywhere-opensource-src-5.7.0.tar.gz、arm-linux-gcc-4.4.3-20100728.tar.gztslib1.4.tar.gz拷贝到虚拟机上。

    交叉编译环境配置

    解压arm-linux-gcc-4.4.3-20100728.tar.gz

     

    执行tar  zxvf arm-linux-gcc-4.4.3-20100728.tar.gz  并将解压后的目录复制到/usr/local/arm/4.4.3下得到:

     

    配置arm-gcc环境变量

     

    重启之后执行arm-linux-gcc -v

    这里出现报错,查阅相关资料了解到该交叉编译工具仅支持32系统,需安装依赖包

    执行sudo apt-get install lib32ncurses5 lib32z1之后 验证arm-linux-gcc -v命令显示成功!

     

    由此交叉编译环境搭建完毕。

     

    交叉编译tslib1.4

    进入tslib1.4压缩文件目录,并解压

     

    安装完成进入tslib目录执行./configure命令

     

    此处如果出现了报错,原因是autoreconf:notfound 则是缺失automakeautoconf库,

    索性一次性安装所有make命令相关依赖包

    执行sudo  apt-get  install  autoconf  automake  libtool  make libsysfs-dev 

     

    这里我在解压后的tslib-1.4目录新建配置脚本autogen.sh

    写入 ./configure --prefix=/usr/local/tslib --host=arm-linuxac_cv_func_malloc_0_nonnull=yes并修改其文件模式为777

    执行./autogem.sh

     

    成功配置之后会在相应目录下生成Makefile文件,执行编译操作

     

    如果在/user/local/tslib下生成了bin include等目录则证明编译成功!

     

    交叉编译QT5.7

    解压QT5.7在任意目录

    命令行模式下进入该目录,修改qmake.conf配置参数

    执行命令为vim ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

    并修改为以下内容:

    MAKEFILE_GENERATOR      = UNIX
    
    CONFIG                 += incremental
    
    QMAKE_INCREMENTAL_STYLE = sublib
    
    QT_QPA_DEFAULT_PLATFORM = linux #eglfs
    
    QMAKE_CFLAGS_RELEASE += -O2 -march=armv9-a
    
    QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv9-a
    
    include(../common/linux.conf)
    
    include(../common/gcc-base-unix.conf)
    
    include(../common/g++-unix.conf)
    
    # modifications to g++.conf
    
    QMAKE_CC                = arm-none-linux-gnueabi-gcc
    
    QMAKE_CXX               = arm-none-linux-gnueabi-g++
    
    QMAKE_LINK              = arm-none-linux-gnueabi-g++
    
    QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++
    
    # modifications to linux.conf
    
    QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    
    QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    
    QMAKE_NM                = arm-none-linux-gnueabi-nm -P
    
    QMAKE_STRIP             = arm-none-linux-gnueabi-strip
    
    load(qt_config)

    创建一个脚本文件,用于生成Makefilevim autocqt.sh,主要目的就是对qt进行裁剪和一些安装配置,脚本内容如下

    #!/bin/sh
    
    ./configure \
    
    -v \
    
    -prefix /user/local/Trolltech/QtEmbedded-4.6.3-arm \
    
    -release \
    
    -opensource \
    
    -make libs \
    
    -xplatform linux-arm-gnueabi-g++ \
    
    -optimized-qmake \
    
    -pch \
    
    -qt-sql-sqlite \
    
    -qt-libjpeg \
    
    -qt-zlib \
    
    -no-opengl \
    
    -skip qt3d \
    
    -skip qtcanvas3d \
    
    -skip qtpurchasing \
    
    -no-sse2 \
    
    -no-openssl \
    
    -no-nis \
    
    -no-cups \
    
    -no-glib \
    
    -no-iconv \
    
    -nomake examples \
    
    -nomake tools \
    
    -skip qtvirtualkeyboard \
    
    -I/user/local/tslib/include \ #注意该路径为方才交叉编译tslib的目标目录下相应的include目录
    
    -L/user/local/tslib/lib #注意该路径为方才交叉编译tslib的目标目录下相应的lib目录
    
    Exit

    执行./autocqt.sh

     

    这里出现错误,缺失libxtst-dev,执行apt-get还是不能安装

     

    解决办法:进入软件包目录, 直接安装缓存的软件包

     

    找到libx11-dev*libxext-dev*

     

    问题解决,提示如下信息则执行make命令

     

    还是出现错误,提示如下信息,太不容易了,继续排错。

     

    找到linux-gcc的位置,添加如下变量

     

    不存在QMAKE_CXXFLAGS变量,则在../common/linux.conf../common/gcc-base-unix.conf../common/g++-unix.conf 这三个文件。如果没有找到还需要递归的打开着三个文件中包含的文件。

    ../common/gcc-base.conf (包含在文件../common/gcc-base-unix.conf 中)文件中找到,并修改为

     

    ../common/g++-base.conf

     

    以及../common/gcc-base.conf,和以上文件一样的修改方式相同

    修改之后运行成功查看 /user/local/Trolltech/QtEmbedded-4.6.3-arm

    qmake被成功构建

     

    至此QT5.7交叉编译成功!

    整理待移植目录到任意目录下

     

     

    2.2.2 QT5.13测试环境(X86)配置

    测试环境的配置相对简单

    执行sudo apt-get install qtcreator qt5-default

     

    安装成功!

     

    2.2.3 QTcreator配置交叉编译环境

    arm环境QT工具包配置

    QTVersion:版本选择方才编译后的qmake路径(/user/local/Trolltech/QtEmbedded-4.6.3-arm/bin/qmake;

    QGCC:选择gcc/opt/arm_gcc/bin/arm-linux-none-gnueabi-g++,为了区分重命名为arm_gcc

    QDebugger: /opt/arm_gcc/bin/arm-linux-none-gnueabi-gdb,为了区分重命名为arm_gdb

    KITS: 选择综上几步QT的环境依赖,QT(arm编译的版本)GCC(arm_gcc),  QDebugger(arm_gdb)

    X86-QT5.13测试环境配置

    这里我们是采用命令行安装的x86-qt5.7的工具包,其会默认配置环境到/user/sbin/目录下,此时qtcreator能够自动检测出该qt包,所以直接选择Desktop(default)套件。

    三、 项目分析

    3.1 硬件模块分析

    1. 串口(UART)通信模块有对串口数据的接收与发送、波特率的设置、端口的打开与关闭等功能,其上位机与下位机通信,需要解决两个问题,一个是通信数据的编码与解码方式,另一个是收发数据时的状态监听接口。
    2. LED设备的控制模块有跑马灯、呼吸灯、普通开关灯等功能,由于QT本身采用C++实现,在ARM实验平台上安装LED设备驱动后,能够直接在QT程序中引入实现led控制的系统头文件,通过调用内核态的标准文件及IO处理库函数,达到控制LED设备的IO状态。
    3. 设备文件信息读取模块有展示文件信息,目录的打开与关闭等功能,对于SD卡以及U盘等设备的文件树读取,模块的核心基于linux系统的自动挂载特性,本质上就是递归目录并抽象成树结构,然后将该文件树可视化即可。
    4. 时钟控制模块有实时展示系统时间、修改设备时间等功能。QT5.7提供了修改系统时间的函数接口,但需要注意的是,执行程序的用户身份需要拥有root权限,否则无法修改对应系统时间的内核文件。其功能主要有实时展示系统时间

    3.2 软件模块分析

    1. 音视频播放器模块有播放,暂停,快进等功能。其实现有两种方式,第一种是采用mplayer这一强大的linux媒体播放插件,通过在QT程序中另开进程执行相应的bash命令达到音视频的播放;另一种是采用qt原生媒体处理库,但是值得注意的是,在使用原生qt音视频播放库的时候,可能会出现媒体文件解码失败,导致白屏或者黑屏的情况,所以这里我们组采用第一种方式。
    2. 小游戏模块(扫雷)有方块点击识别,重新开始,方阵规格设置等功能,该游戏的核心在于随机生成雷点方阵,可以抽象化为一个矩阵,并以0代表类,随后扫描所有矩阵内元素,并在该位置填充提示雷点个数的信息。
    3. 计算器模块能够进行加减乘除等基本运算,能够取消当次运算操作。该类实现较简单,用变量保存每次的运算状态即可。
    4. 整体布局及界面。需要遵循操作友好,布局合理等。在web前端设计中,栅格布局的思想同样适用于QT界面设计,QT提供了丰富的布局类来实现布局。

    四、 设计与实现

    4.1 设计思路

    首先先将整个项目分为七大模块,然后分别针对这七个模块单独完成其核心功能。做到让整个项目模块化使项目整体具有清晰的层次结构 

    以下是各模块的设计思路以及介绍:

      

    4.1.1 游戏模块:扫雷小游戏

    模块介绍 在设计之前,我们先来了解这款游戏的规则。 在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。 游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标记或取消标记地雷,反复按下右键则方块会以标记,取消标记两者之间不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。 

    模块功能能够显示主菜单和界面,能够接收鼠标输入功能;能够根据规则翻转相应的格子;能够判断游戏胜负。

    模块分析:流程规划大致上可以分为三个部分,分别为:游戏开始阶段、游戏进行阶段和游戏结束阶段。 游戏开始时,会以游戏者最后一次设定的地雷区大小为范围画出地雷区,同时会产生地雷并且开始计时。游戏进行阶段主要就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过扩散的观念来检查周边的方块是否含有地雷及是否继续往外翻开,以及鼠标右键的标记功能的实现。游戏结束阶段,判定游戏是否结束有两种情况,第一种是没有踩到雷,成功完成游戏,会弹出提示框提示赢得游戏,如果创造了新的纪录,则会弹出提示框提示输入姓名。第二种是踩到雷,也就是游戏失败,同样会弹出提示框来提示输掉游戏。  

    设计思路:

    1. 使用int型双指针对象Map, Map成员变量用来保存雷区信息.以为雷区行数列数根据难易级别要动态改变,所以这里定义成指针,方便动态分配空间.当Map[x][y]取值为0-8时表示(x,y)这一格周围8格中的雷数,并且是已经被点开来了的,-1表示雷.若未被点开,则范围为99-10899表示雷,100-108表示周围雷个数.若这个地方被插上小红旗,则范围为49-58
    2. 布雷的实现主要依据于随机数,以数组矩阵的一维变量为一个循环层,分层生成其预定义矩阵宽度之内的随机雷点个数,记录其随机数作为雷点的位置索引,进行填雷,这里已-1代表雷。
    3. 提示信息的生成主要依据与上步中随机数组矩阵的雷点位置,循环每一个点,记录该点外层雷点个数,填充即可。

    游戏模块流程图如下:

     

     

    4.1.2 音视频播放器模块

    模块介绍:用户通过该应用可以完整无误的播放音视频文件,并为用户提供一个简洁友好的用户界面。音视频播放器模块有播放,暂停,快进等功能。。

    模块分析音视频播放器模块有播放,暂停,快进等功能。其实现有两种方式,第一种是采用mplayer这一强大的linux媒体播放插件,通过在QT程序中另开进程执行相应的bash命令达到音视频的播放;另一种是采用qt原生媒体处理库,但是值得注意的是,在使用原生qt音视频播放库的时候,可能会出现媒体文件解码失败,导致白屏或者黑屏的情况,所以这里我们组采用第一种方式。下面是对音视频文件解码的分析:

    1.PCM(脉冲编码调制)技术及声波的数字化

    我们知道声音是一种连续变化的波形,是模拟信号,而我们的计算机或者说MCU存储及使用的都是二进制数字信号,所以我们需要对声音信号进行一些处理,这里便使用到了PCM技术,即脉冲编码调制,该技术属于通信原理或数字信号处理相关理论范畴,相关知识可以搜索脉冲编码调制关键字查看相关课件进行了解,不过需要一些相关理论知识,否看不懂。

     

    如图是一个使用PCM技术的将模拟信号转换成数字信号传输的系统方框图,现在我们主要看A/D模数转换区间内的内容,因为我们的音频数据就是根据这个过程得到的。这里我们需要解决三个部分的问题即采样频率、量化位数以及编码方式。

    采样频率

    常用有1025Hz(11kHz) 22050Hz(22kHz)44100Hz(44kHz) 三种,我们知道人耳能够听到的声波频率为0~20kHz,根据抽样定理,我们需要大于等于两倍于声波频率的采样频率采样才能还原出原有的波形,所以对于声音采样为44kHz已经可以覆盖人耳可听到的声波范围。

    量化位数

    常用有8位、16位、24位,注意这里是二进制权,即8位实际表示来量化精度或者说量化间隔为1/256

    编码方式

    数字通信系统中编码是为了更好的传输,而我们这里是为了便于使用和存储,因为编码方式不同就形成了不同格式的音频文件。

    声道

    我们知道声道是为了模拟人对声音的立体感,他是基于双耳效应的,它是音频所特有的,由于他是对双耳效应的模拟,我们一般是单声道输入,双声道输出,实际对于音频数据来讲就是将单声道的数据倍份为两份。

    设计思路:

    1. 音视频播放主要采用mplayer插件,在qt程序中实例化QTprocess开启进程并使用mplayerbash命令)来与系统交互;
    2. Mplayer提供了多种模式,只需指定相关参数,其中重要的参数有,‘-wid’(linux系统会为每一个窗体对象派发一个windowId来唯一确定,使用该参数能够指定mplayer的媒体流的输入窗体对象,‘-quiet’静默模式播放,‘-slave’从模式播放等),另外还有很多交互模式下的命令来动态获取播放信息,‘pause\n’(暂停或者开启播放,我们需要在类中定义好媒体文件的播放状态),‘seek %s 1\n’(该命令主要控制媒体文件的播放进度)

    音乐模块的功能模块图如下:

     

    4.1.3  Led灯控模块

    模块介绍:用户通过试验箱上得触屏可以控制LED的开关和其亮度的变化并能在一定时间间隔进行连续操作。硬件电路如下图所示,可以看出三个LED灯与GPF4,5,6相连接。且当io口输出为高电平时,led灯熄灭,当io输出低电平时,led灯点亮。

     

    模块分析:硬件电路图分析

     

    nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭,

     

    S3C2440芯片GPF4-GPF6对应nLED_1, nLED_2, nLED 

    设计思路:LED设备的控制模块有跑马灯、呼吸灯、普通开关灯等功能,由于QT本身采用C++实现,在ARM实验平台上安装LED设备驱动后,能够直接在QT程序中引入实现led控制的系统头文件,通过调用内核态的标准文件及IO处理库函数(sys/ioctl库、fcntl库),达到控制LED设备的IO状态。具备上述功能之后,跑马灯、呼吸灯的实现变得更为简单,实例化QTimer来控制实现不同LEDIO状态。

     

    4.1.4 RTC时钟控制模块

    模块介绍

    实现在主菜单界面下的时钟实时刷新功能,并能够通过QT修改内核下的关于系统时间的相关文件,达到时钟控制的效果。

     

    模块分析:

    硬件逻辑分析:

       

    RTC工作过程

    RTC架构
    图中浅灰色的部分都是属于备份域的,VDD掉电时可在VBAT的驱动下继续运行.这部分仅包括RTC的分频器,计数器,和闹钟控制器.VDD电源有效,RTC可以触发RTC_Second(秒中断)RTC_Overflow(溢出事件)RTC_Alarm(闹钟中断).从结构图可以看到到,其中的定时器溢出事件无法被配置为中断.如果STM32原本处于待机状态,可由闹钟事件或WKUP事件(外部唤醒事件,属于EXTI模块,不属于RTC)使它退出待机模式.闹钟事件是在计数器RTC_CNT的值等于闹钟寄存器RTC_ALR的值时触发的
    因为RTC的寄存器是属于备份域,所以它的所有寄存器都是16位的.它的计数RTC_CNT32位由RTC_CNTLRTC_CNTH两个寄存器组成,分别保存计数值的低16位和高16.在配置RTC模块的时钟时,把输入的32768HzRTCCLK进行32768分频得到实际驱动计数器的时钟TR_CLK = RTCCLK/37768 = 1Hz,计时周期为1,计时器在TR_CLK的驱动下计数,即每秒计数器RTC_CNT的值加1(常用)

    由于备份域的存在,使得RTC核具有了完全独立于APB1接口的特性,也因此对RTC寄存器的访问要遵守一定的规则
    系统复位后,禁止访问后备寄存器和RCT,防止对后卫区域(BKP)的意外写操作.(执行以下操作使能对后备寄存器好RTC的访问): 
    1,设置RCC_APB1ENR寄存器的PWRENBKPEN位来使能电源和后备接口时钟
    2,设置PWR_CR寄存器的DBP位使能对后备寄存器和RTC的访问
    设置为可访问后,在第一次通过APB1接口访问RTC,必须等待APB1RTC外设同步,确保被读取出来的RTC寄存器值是正确的,如果在同步之后,一直没有关闭APB1RTC外设接口,就不需要再次同步了
    如果内核要对RTC寄存器进行任何的写操作,在内核发出写指令后,RTC模块在3RTCCLK时钟之后,才开始正式的写RTC寄存器操作.我们知道RTCCLK的频率比内核主频低得多,所以必须要检查RTC关闭操作标志位RTOFF当这个标志被置1,写操作才正式完成

     

    软件逻辑分析:

    该模块基于QDateTime::currentTime()获取当前系统时间,其对象的setTime方法来修改系统时间,对于实时刷新功能,则采用定时器(QTimer)来控制实现。

    4.1.5 计算器模块

    模块分析:将计算器的计算流程分成三个部分,分别为数据采集与存储、计算结果以及显示结果。数据的存储采用数组的形式存储,在数据采集的同时并调用显示,所以将LED的显示写成一个函数,这样方便被调用,简化程序。同时,存储数据时将数值与运算符分开存储,即采用两个数组存储,这样方便计算部分程序的设计。在计算部分,为实现先乘除后加减的运算,先遍历一遍存储运算符的数组,先计算乘除,选出乘除运算符对应下标的数据计算结果放入乘号或除号后面那个存储单元,设为digit[i+1],digit[i]数据单元赋值为0,再通过判断digit[i]数据单元前面的运算符号这里设为symbol[i-1]来选择数据digit[i+1]digit[i]之间的运算符symbol[i]为加还是减,如果symbol[i-1]为减,则symbol[i]为减,否则为加。这样将数据数组和运算符数组经过计算乘除后重新赋值,在进行一次简单的加减运算便得到结果了。最后返回计算结果并显示。 

    计算器模块功能图:

     

    4.1.6 UART模块

    模块介绍该模块需要UART通信相关的寄存器的功能和设置方法,设置引脚复用,选择UART接收和发送对应的引脚用于UART通信,数据流格式设置,设置UART通信的数据帧格式,波特率等,设置UART部件的工作模式等。

     

    模块分析:

    硬件分析

     

    我们可以从原理图上看到,教学平台的串口信号是由一块 MAX3380ECUP 芯片转换输出到

    COM 口上的。它的电气标准遵循 RS232 协议。教学平台上的 4 个串口端口,其中 UART2 和

    UART3 室插针接口。可以在教学平台上看到其标号。 串口的使用场景最常见的是,教学平台的串口信息调试。教学平台上电启动之后,无论是 Uboot 还是 kernel 内核还是 Android 系统,都会在其运行过程中打印输出一些信息到系统的 console 控制台。系统中指定 UART1 为调试串口。 424我们使用教学平台的 UART1 来输出打印信息到 PC 上的串口中,需要在 PC 端的串口终端上 配置一些参数。以 Ubuntu 系统的 minicom 串口终端为例: 串口通讯需要做一些配置,配置参数有上图显示中的波特率、硬件/软件控制位、通信位。上 图中的“115200 8N1” 代表的就是波特率设置为 115200,一帧传输 8 位数据,1 位停止位。波特率指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。它是对符号传输速率的一种度量,1 波特即指每秒传输 1 个符号。

     

    软件分析:

    QtSerialPort库及QSerialPortInfo库提供了丰富的接口,例如串口扫描(QSerialPortInfo::availablePorts())、设置数据校验位、设置波特率以及接收与发送数据等接口,对于数据的接收,QtSerialPort对象同样提供了readyRead()来监听数据接收区的缓冲流。

    1. 对发送操作来说,通过读取QCombox中的text(),来判定用户是否完成通信波特率以及串口的设置,若完成,则在对该text采用‘latin1’进行编码后发送。
    2. 对接收操作来说,QtSerialPort对象的readyRead()信号能够及时的收取接收缓冲区的数据,最后对QByteArray类型的缓冲数组进行清空操作。

     

    4.1.7 USB HOST、SD/MMC模块

    模块介绍当用户通过该模块可实时查看USB的插入情况等。

     

    模块分析该模块应具有可以弹出该USB设备/SD卡读取界面的功能,并通过对单片机编程与PC机通过通用串行通讯接口进行通讯,并令PC机识别出一个USB存储设备,并以P2口作为PIO口控制NAND FLASH芯片的读写,且将NAND FLASH的容量大小通过USB发给PC机。工作模式是针对主机控制器来说的。也就是说,SD/MMC 控制器可以在符合 MMC

    的标准下工作,或者可以在符合 SD 的标准下工作,或者可以在符合 SDIO 的标准下工作。故

    就分别简称为:MMC 模式、SD 模式和 SDIO 模式。传输模式:传输模式也是针对主机控制器来说的,指控制器与卡之间数据的传输模式,或者说是总线类型。SD/MMC 控制器可支持 DMA 数据传输模式、1 位/4 位/8 位的三种传输模式(总线类型)。该

     

    模块流程逻辑图:

                       

     

     

    4.2 设计和实现的主要内容

    4.2.1 主界面具体布局实现:

     

     

    web开发前端设计中,各大前端框架如bootstrap,easyUI等都有着栅格布局的思想,而QT对于其窗体程序的布局设计较之更为灵活,提供了大量布局类(诸如QHBoxLayout、QVBoxLayout、QGridLayout等)来支持。对页面设计十分友好。相较于在.cpp文件中用代码实现界面设计的方式,我们更倾向于在qt-designer中事先对界面进行排布,更加直观清晰。

    4.2.2 游戏模块具体的实现

    1. 核心代码及其作用:

     

    初始化:首先定义了一个类来实现扫雷相关操作.

    class CMineMap
    
    {
    
    public:
    
        CMineMap();
    
        ~CMineMap();
    
        void Create();
    
        void Create(int,int,int);
    
        void Restart();
    
    private:
    
        int ctnflag(int m, int n);
    
     
    
    public:
    
        int **Map;
    
        int nMime;//雷数
    
        int mx;   //行数
    
        int my;   //列数
    
        bool Onrbtdown(int m, int n);
    
        bool Onlrbtdown(int m, int n);
    
        bool Onlbtup(int m, int n);
    
        bool iswin();
    
        int winf;
    
        int rMine;
    
        bool first;
    
        int timer;
    
    };

    初始化结构类解释:Map成员变量用来保存雷区信息.以为雷区行数列数根据难易级别要动态改变,所以这里定义成指针,方便动态分配空间.当Map[x][y]取值为0-8时表示(x,y)这一格周围8格中的雷数,并且是已经被点开来了的,-1表示雷.若未被点开,则范围为99-10899表示雷,100-108表示周围雷个数.若这个地方被插上小红旗,则范围为49-58

    布雷:上述类中nMine表示雷的数量,在雷区范围内生成nMine个随机坐标,把对应坐标的赋值成99,在没有雷的地方统计周围的雷数,并赋值为100-108 

    点击事件 当一个格子(坐标为(x,y))被点下,如果个格子周围有雷,则Map[x][y]值为101-108,将这个值减去100就行了.如果周围都没有雷,就会爆出一大片

    bool CMineMap::Onlbtup(int m, int n)
    
    {
    
        if (Map[m][n] >= 101 && Map[m][n] <= 108)
    
        {
    
            Map[m][n] -= 100;
    
            first = 0;
    
            iswin();
    
            return true;
    
        }
    
        if (Map[m][n] == 100)
    
        {   //点击的地方周围都没雷,则递归点击周围8个
    
            Map[m][n] -= 100;
    
            Onlbtup(m - 1, n);
    
            Onlbtup(m + 1, n);
    
            Onlbtup(m, n - 1);
    
            Onlbtup(m, n + 1);
    
            Onlbtup(m - 1, n - 1);
    
            Onlbtup(m + 1, n - 1);
    
            Onlbtup(m - 1, n + 1);
    
            Onlbtup(m + 1, n + 1);
    
        }
    
        if (Map[m][n] == 99)
    
        {   // 中雷了
    
            ... // 相应处理函数
    
        }
    
        return true;
    
    }

    鼠标消息处理 Qt 中添加鼠标消息很容易,直接重载父类的mousePressEvent函数就好了.

    通过event->button()event->buttons()可以获取到底是哪个键被按下.

    通过event->x()event->y()获取鼠标按下的坐标.根据这个坐标计算出点到哪一格,然后调用扫雷类的相关操作.另外,当游戏失败或过关时,可以通过点击表情从新开始游戏。

    void MainWindow::mousePressEvent(QMouseEvent *event)
    
    {
    
        int px=event->x()-offsetx;
    
        int py=event->y() -offsety;
    
        int m = (px) / 20;
    
        int n = (py) / 20 - 2;
    
        if(event->buttons()==(Qt::LeftButton|Qt::RightButton))
    
        {
    
            if(mineMap.Onlrbtdown(m, n))
    
                update();
    
        }
    
        else if(event->button()==Qt::LeftButton)
    
        {
    
            if(mineMap.Onlbtup(m,n))
    
            {
    
                if (!(rumtime->isActive() ))
    
                    rumtime->start(1000);//开始计时
    
                update();
    
            }
    
            if (mineMap.winf==0 || mineMap.winf == 2)
    
            {
    
                if (rumtime->isActive() )
    
                    rumtime->stop();//停止计时
    
                if (px >  mineMap.mx * 10 - 15 && px< mineMap.mx * 10 + 15 && py>4 && py < 34)
    
                {
    
                    mineMap.Restart();//点击表情图标重新开始
    
                    update();
    
                }
    
            }
    
        }
    
        else if(event->button()==Qt::RightButton)
    
        {
    
            if(mineMap.Onrbtdown(m, n))
    
                update();
    
        }
    1. 模块展示实列图:

     

     

     

    4.2.3 音视频播放模块的具体实现

    1. 核心代码及其作用(由于音视频均采用mplayer插件,这里我们就以视频播放器为例):

    文件选择:

    QStringList  arr = QFileDialog::getOpenFileNames(this,
    
                                      "需要播放的文件",
    
                                      ".",
    
                                      "video (*.mp4 *.avi *.rmvb)");

    播放功能:该功能主要依赖mplayer插件以及QProcess类,他们分别的作用是:1.mplayer控制音视频的播放,包括其进度,播放列表,媒体流输出窗体、暂停等等交互命令,2. QProcess另开了一个进程,用以执行mplayer命令(bash), 此外与mplayer进程交互相关播放信息。

    void VideoWidget::playMovie(const QString filename){
    
        playProcess->close(); // 该处process为QProcess的实例
    
        QString program = "mplayer";
    
        QStringList arguments;
    
        arguments << filename;
    
         //(mplayer -gui-wid<window_id>)  can play video in a gun widget
    
        arguments << "-wid"; // 表示视频流的输出窗体
    
        arguments << QString::number(ui->label_show->winId());//parse to string
    
        arguments << "-slave"; // 从模式下,支持wid投射视频流至qt窗体中
    
        arguments << "-zoom"; // 自适应
    
        arguments << "-quiet"; // 静默模式
    
        playProcess->start(program, arguments); //执行bash命令,设置mlayer相关控制参数
    
        isPlaying = 1;
    
        ui->btn_start->setIcon(QIcon(":/new/prefix1/res/stop.png"));
    
        QString cmd = QString("volumn %1 1\n").arg(ui->dial_volice->value()); // 初始音量调节
    
    //            qDebug() << cmd << endl;
    
        playProcess->write(cmd.toLatin1());
    
        ui->horizontalSlider->setValue(0);
    
    }
    
     
    
    快进后退:QT中的QSlider控件支持value_change事件,当拖动操作发生时,我们考虑触发事件,随后转到该槽,执行mplayer的”seek %s 1\n”这一交互式命令来控制进度。
    void VideoWidget::on_horizontalSlider_valueChanged(int value)
    {
        if(isPlaying == 1 || isPlaying == 2){
            QString cmd = QString("seek %1 1\n").arg(value);
    //        qDebug() << cmd << endl;
            playProcess->write(cmd.toLatin1()); 
        }
    }

     

    音量调节:与快进后退的原理一致,这里直接来代码

    void VideoWidget::on_dial_volice_valueChanged(int value)
    {
    //        qDebug() << value;
            if(isPlaying == 1 || isPlaying == 2){
                QString cmd = QString("volumn %1 1\n").arg(value);
    //            qDebug() << cmd << endl;
                playProcess->write(cmd.toLatin1());
            }
    }

     

    1. 模块展示实列图:

    视频播放器示例图

     

    音频播放器实例图

     

    4.2.4Led灯控模块的具体实现

    1. 核心代码及其作用:

    LED设备的控制:在实验教学平台上,在安装LED设备驱动之后,通过调用系统文件以及IO库函数(sys/fcntl.h sys/ioctl.h),为验证LED设备驱动时候安装成功,可以进入/devfind命令查找,在该arm平台上LED设备驱动已经安装成功,位置位于/dev/leds,所以直接只用ioctl来控制设备IO

    void LedControl::open_led(){
    
        fd = ::open("/dev/leds", 0);
    
        if(fd < 0){
    
            QMessageBox::warning(nullptr, tr("LED"), tr("led 设备打开失败"));
    
     
    
        }else { 
    
            ::ioctl(fd, 1, 1);
    
            ::ioctl(fd, 1, 2);
    
            ::ioctl(fd, 1, 3);
    
            ::ioctl(fd, 1, 4);
    
        }
    
    }

     

    呼吸灯实现:呼吸灯依赖于定时器(QTimer),这里我们采用的方式是用一个全局变量count来记录QTimer对象中的槽函数执行次数,如果count为奇数则关闭设备,否则打开设备,从而实现呼吸灯的效果

    void LedControl::void_second_model(){
    
        count += 1;
    
        if(count%2==1){
    
            led_init();
    
        }
    
        else{
    
            ::ioctl(fd, 1, 1);
    
            ::ioctl(fd, 1, 2);
    
            ::ioctl(fd,1, 3);
    
            ::ioctl(fd, 1,4);
    
        }
    
    }

     

    跑马灯:跑马灯同样依赖于定时器(QTimer),与呼吸灯不同的是,其需要将变量count,维护一个取值范围(该范围是0-3,代表不同的led编号)

    void LedControl::void_third_model(){
    
        if(led_index==3){
    
            led_index = 0;
    
            return;
    
        }
    
        else{
    
            ::ioctl(fd, 0, 0);
    
            ::ioctl(fd, 0, 1);
    
            ::ioctl(fd, 0, 2);
    
            ::ioctl(fd, 0, 3);
    
            ::ioctl(fd,1, led_index);
    
        }
    
        led_index += 1;
    
    }
    1. 模块展示实列图:

    跑马灯示例图

         

    呼吸灯示例图

     

     

    4.2.5系统时间模块的具体实现

    1. 核心代码及其作用:

    系统时间获取与修改

    void SysTimeControl::on_pushButton_clicked()
    {
        QDateTime dt = QDateTime::currentDateTime(); //获取时间
        dt.setTime(ui->dateTimeEdit->time()); // 修改时间
        time_t tt = (time_t)dt.toTime_t();
        int r = stime(&tt);
        if (r)
        {
            if (errno == EPERM)QMessageBox::warning(this, "Error", "没有权限");
        }
    }

     

    系统时间显示

    用定时器每隔一秒刷新时间数据到LcdNUmber控件中,

    void MainMeun::init(){
    
        sys_timer = new QTimer(this);
    
        connect(sys_timer, SIGNAL(timeout()), this, SLOT(flush_time()));
    
        sys_timer->start(500);
    
    }
    
     
    
    void MainMeun::flush_time(){
    
        ui->lcdNumber->display(QTime::currentTime().toString("hh:mm:ss"));
    
    }
    1. 模块展示实列图:

    五、 参考文献

    [1]  徐千洋.Linux C函数库参考手册.[M]中国青年出版社.2002

    [2]  李现勇.Visual C++串口通信技术与工程实践[M].人民邮电出版社.2004

    [3]  何小平.选择适合ARM的嵌入式操作系统[J].BMRfech Inc.2003

    [4]  马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础[M].北京航空航天大学出版社.2002

    [5]  邹思铁.嵌入式Linux设计与应用[M].北京清华大学出版社.2002

    [6]  杜春雷.ARM体系结构与编程[M].清华大学出版社.2003

    [7]  Kirk Zurell[M].C Programing For Embedded Systems

    [8]  杨海清,周安栋,罗勇,陈牧.嵌入式系统实时网络通信中的LCD显示设计方法[J].计算机与数字工程.201002

    [9]  田泽.嵌入式系统开发与应用[M].北京航空航天大学出版社.2005

    [10]  陈鑫.嵌入式软件技术的现状与发展动向[M].软件世界.2001

    [11]  田泽.嵌入式系统开发与应用实验教程[M].北京航空航天大学出版社.2004

    [12]  Alessandro RubiniJonathan Corbet.Linux设备驱动程序[M].中国电力出版社.2002

     

    转载于:https://www.cnblogs.com/kisun168/p/11201055.html

    展开全文
  • 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命令详解 点击下载 深入理解Linux内核(第三版 pdf英文版)...
    史上最牛的Linux内核学习方法论 点击下载
    我的arm_linux移植笔记 点击下载
    S3C2440完全开发流程 点击下载
    Linux系统命令及其使用详解完整版 点击下载
    Linux主要shell命令详解 点击下载
    深入理解Linux内核(第三版 pdf英文版) 点击下载
    深入分析Linux内核源代码教程pdf完整版 点击下载
    linux从入门到精通教程pdf完整版 点击下载
    Linux菜鸟专用资料pdf完整版 点击下载
    Linux网络编程教程pdf完整版 点击下载
    嵌入式Linux应用开发完全手册-pdf完整版 点击下载
    Linux设备驱动程序学习pdf完整版 点击下载
    Linux实用培训教程合并版pdf完整版 点击下载
    精通linux shell编程教程pdf完整版 点击下载
    Qt编程及应用经典教程 点击下载
    Linux嵌入式软件开发教程pdf完整版 点击下载
    Linux程序员指南教程--pdf完整版 点击下载
    ARM9+嵌入式Linux教程pdf完整版 点击下载
    LINUX编程白皮书pdf完整版 点击下载
    ARM应用系统开发详解-pdf完整版 点击下载
    Linux C语言编程一站式学习--pdf完整版 点击下载
    linux命令大全--分类总结、实例和用法 点击下载
    ARM应用系统开发详解——基于S3C4510B的系统设计(pdf第二版) 点击下载
    ARM嵌入式入门级教程--pdf完整版 点击下载
    ARM嵌入式系统基础教程+周立功-pdf版 点击下载
    U-boot源代码分析-pdf版 点击下载
    Ubuntu从入门到精通-pdf完整版 点击下载
    uCOS_ARM移植要点详解—pdf北航版 点击下载
    嵌入式Linux入门经典笔记——学习心血 点击下载


    14本名师经典励志教程22本经典英语口语教程

    技术开发海量资料下载导航


    周立功ARM培训精华(全套) 点击下载
    周立功的ARM468问 点击下载
    深入浅出ARM7+LPC213X+214X(超清晰)上下册 点击下载
    嵌入式实时操作系统ucOS-II中文教程 点击下载
    嵌入式实时操作系统ucOS-II英文教程 点击下载
    嵌入式Linux系统开发技术详解--基于ARM(完整版) 点击下载
    Linux+系统开发技术详解——基于ARM 点击下载
    c语言嵌入式编程 点击下载
    ARM嵌入式系统实验教程(二)扩展实验 点击下载
    ARM嵌入式系统软件开发实例大全 点击下载
    ARM嵌入式系统软件开发实例 点击下载
    《ARM与嵌入式系统基础教程》 点击下载
    arm_linux移植笔记 点击下载
    深入浅出STM32系列ARM_Cortex-M3 点击下载
    嵌入式ARM_培训教材 点击下载
    ARM入门教程 点击下载
    ARM嵌入式系统硬件设计及应用实例 点击下载
    ARM嵌入式系统实验教程 点击下载
    ARM嵌入式-WINCE实践教程 点击下载
    ARM嵌入式Linux系统开发--从入门到精通 点击下载
    ARM开发流程-最小系统-启动文件详解 点击下载
    ARM开发工程师入门宝典 点击下载
    ARM汇编语言程序设计基础 点击下载
    ARM工程师手册 点击下载
    ARM_高效的C编程 点击下载
    ARM_Linux_下驱动程序编写 点击下载
    ARM_2440_uboot移植过程 点击下载

    14本名师经典励志教程

    贡献22本经典英语口语教程

    技术开发海量资料下载导航

    php新手上路教程 点击下载
    php实例教程 点击下载
    PHP入门教程pdf版 点击下载
    PHP内核介绍及扩展开发指南 点击下载
    php类与api详细讲解 点击下载
    php类详细讲解 点击下载
    php技术精华文摘 点击下载
    PHP精华教程 点击下载
    php简明教程-PHP程序设计简明教程-PHP教程 点击下载
    php基础教程-绝对推荐--ppt355页 点击下载
    Php官方手册中文完整版 点击下载
    PHP调试技术手册pdf版 点击下载
    PHP的16个经典例程源代码 点击下载
    php程序员入门教程 点击下载
    PHP圣经--PHP bible 点击下载
    PHP MySQL教程 点击下载
    php.ini配置文件中文详细解释 点击下载
    PHP5中文手册 点击下载
    Zend API:深入PHP内核 点击下载

    2011年6月英语四级cet4真题及答案(含详细解析) 点击下载
    2010年12月英语四级cet4真题及答案(含详细解析) 点击下载
    2010年6月英语四级考试cet4真题及详细答案(含详细解析) 点击下载
    2010年6月英语四级考试cet4真题及答案(含详细解析) 点击下载
    2009年12月四级cet4真题+答案(含详细解析) 点击下载
    2008年12月英语四级考试cet4真题与答案(含详细解析) 点击下载
    2008年6月大学英语四级cet4真题及答案(含详细解析) 点击下载
    2007年12月英语四级真题cet4试题和答案(含详细解析) 点击下载
    2007年6月英语四级cet4真题及答案(含详细解析) 点击下载
    2006年12月大学英语新四级cet4真题和答案(含详细解析) 点击下载
    2006年6月大学英语四级cet4真题和答案(含详细解析) 点击下载
    2005年12月大学英语四级CET4真题试卷及答案(含详细解析) 点击下载
    2005年6月全国大学英语四级考试cet4真题和答案(含详细解析) 点击下载
    2005年1月大学英语四级考试试题cet4真题及答案(含详细解析) 点击下载
    2004年6月大学英语四级cet4真题及答案(含详细解析) 点击下载
    2004年1月大学英语四级CET4真题试卷及参考答案 点击下载
    2003年12月大学英语四级CET4真题试卷及答案 点击下载
    2003年6月大学英语四级cet4真题及答案 点击下载
    2003年1月大学英语四级考试cet4试题及参考答案 点击下载
    2002年6月大学英语四级考试cet4试题及参考答案 点击下载
    2002年1月大学英语四级cet4真题及答案 点击下载
    2001年6月大学英语四级cet4真题及答案 点击下载
    2001年1月大学英语四级cet4真题及答案 点击下载
    2000年6月大学英语四级cet4真题及答案 点击下载
    2000年1月全国大学英语四级cet4考试真题和答案 点击下载


    贡献22本经典英语口语教程
    英语谚语精选1000句(EnglishProverbCollection) 点击下载
    英语_四六级口语考试练习题 点击下载
    英语谚语大全(约3000条) 点击下载
    新托福口语真题和答案集 点击下载
    国际会议英语口语100句 点击下载
    疯狂英语之口语突破突破单词 点击下载
    最新大学英语口语教程 点击下载
    英语口语必备生活分类词汇 点击下载
    英语口语一语千说--经典英语口语 点击下载
    英语口语学习方法-Baobab的学英语经历 点击下载
    最最实用英语口语——高级BEC剑桥商务英语口语 点击下载
    厚黑学-全集完整版--励志经典 点击下载
    英语学习_旅游英语口语九百句_必备 点击下载
    英语口语学习方法技巧 点击下载
    一语惊人英语口语--经典口语 点击下载
    研究生复试英语口语问题典型75例--经典口语 点击下载
    研究生复试英语口语--经典口语 点击下载
    新东方英语口语终极教程--经典口语 点击下载
    实用英语口语8000句--经典口语 点击下载
    商务英语口语900句[含中文解释]--经典口语 点击下载
    日常英语口语900句--经典口语 点击下载
    求职面试英语口语对话资料--经典口语 点击下载
    365天英语口语大全—交际口语篇--经典口语 点击下载
    新大纲大学英语四级690个高频词汇 点击下载

    2011新大纲四级高频词汇 点击下载
    2011新大纲大学英语四级词汇表 点击下载
    30天攻克大学英语四级(听力分册) 点击下载
    Cet4大学英语四级考试冲刺班内部笔记 点击下载
    历年大学英语四级真题全集 点击下载
    CET4大学英语四级优秀作文精选 点击下载
    CET4英语四级考前复习--词汇语法篇 点击下载
    CET4英语四级作文——万能作文之句子篇 点击下载
    大学英语四级考试算分器(710分) 点击下载
    大学英语四级——资料大全 点击下载

    养成励志的习惯,一生励志——文指星终极励志

    经典英语口语与英语学习资料

    2000年-2011年大学英语四级cet4历年24份真题和答案(含详细解析)

    15本经典C、C++、MFC、VC++教程,都是pdf完整版的

    30本经典Linux学习和开发教程和资料,都是pdf完整版的

    10本经典Java教程,都是pdf完整版的

    15本超级经典Android教程,都是pdf完整版的

    一语惊人英语口语--经典口语

    日常英语口语900句--经典口语

    《人性的弱点》戴尔·卡耐基著--励志经典

    厚黑学--完整版--厚黑励志经典


    C++ Primer第三版(中文pdf高清完美版,1043页) 点击下载
    C++实例教程(pdf版) 点击下载
    More Effective C++ 教程 点击下载
    STL源码剖析——标准C++/STL经典教程 点击下载
    VC-MFC编程实例教程 点击下载
    深入浅出MFC(李久进pdf完整版) 点击下载
    深入浅出MFC-经典教程 点击下载
    深入剖析WTL 点击下载
    WTL_For_MFC_Programmer 点击下载
    嵌入式C/C++语言精华教程 点击下载
    30天掌握C++精髓——经典教程 点击下载
    高质量C++/C编程指南(林锐博士) 点击下载
    C++入门到精通(经典pdf完整版) 点击下载
    C++程序设计语言(pdf版)英文原版 点击下载
    谭浩强经典C++教程ppt 点击下载
    C++Primer+中文第四版(pdf高清完整版) 点击下载


    语言的突破全集 卡耐基 --励志经典 点击下载
    人性的优点--卡耐基名著--励志经典 点击下载
    人生格言精华总集 点击下载
    人生定律与原则--励志经典 点击下载
    厚黑学--完整版--厚黑励志经典 点击下载
    乔布斯传:神一样的传奇--励志经典 点击下载
    李开复给中国学生的四封信--励志经典 点击下载
    卡耐基-人性的弱点--励志经典 点击下载
    卡耐基经商之道--励志经典 点击下载
    口才学--卡耐基--励志经典 点击下载
    激发个人潜能成功日记-30天改变你的人生(安东尼罗宾)--励志经典 点击下载
    花10钟看一看少走30年弯路——人生终极指导--励志经典 点击下载
    改变自己的128种方法——教你变得更优秀--励志经典 点击下载
    成功一定有方法(易发久)--励志经典 点击下载
    陈安之超级成功法则--励志经典 点击下载
    《人性的弱点》戴尔·卡耐基著--励志经典 点击下载


    养成励志的习惯,一生励志——文指星终极励志

    经典英语口语与英语学习资料

    2000年-2011年大学英语四级cet4历年24份真题和答案(含详细解析)

    15本经典C、C++、MFC、VC++教程,都是pdf完整版的

    30本经典Linux学习和开发教程和资料,都是pdf完整版的

    10本经典Java教程,都是pdf完整版的

    15本超级经典Android教程,都是pdf完整版的

    一语惊人英语口语--经典口语

    日常英语口语900句--经典口语

    《人性的弱点》戴尔·卡耐基著--励志经典

    厚黑学--完整版--厚黑励志经典


    Java学习开发必备资料与培训资料 10多本经典教材

    希望能够对你的学习及找工作有所帮助。

    Java经典入门教程pdf完整版

    点击下载
    Java编程思想中文版——高清pdf完整第四版超级经典 点击下载
    Java教程——清华大学 点击下载
    The Art of Java 中文版 点击下载
    Java+就业培训教程.pdf 点击下载
    thinking-in-java第二版 点击下载
    JAVA程序设计与问题解决基础篇.(美国)Savitch.pdf清晰版 点击下载
    VC-MFC编程实例 点击下载
    MFC教程 点击下载
    MFC深入浅出pdf完整版 点击下载
    Java语言程序设计案例教程pdf完整版 点击下载
    java编程思想第二版pdf 点击下载
    JAVA项目开发全程实录 点击下载
    Java经典入门教程pdf完整版 点击下载
    Java编程思想中文版——高清pdf完整第四版超级经典 点击下载
    <wbr><p><br><strong></strong></p> <p></p> <table id="gv_data" rules="all" border="0" cellpadding="0" cellspacing="0"><tbody> <tr> <td><a href="http://www.shangxueba.com/share/p3119331.html" target="_blank" rel="nofollow"><strong><span style="color:#ff0000">J2EE教程(中文版)</span></strong></a></td> <td><strong></strong></td> <td><strong> </strong></td> <td><a href="http://www.shangxueba.com/share/p3119331.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119322.html" target="_blank" rel="nofollow"><strong>J2ME的3D开发教程</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119322.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119321.html" target="_blank" rel="nofollow"><strong>J2ME开发教程</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119321.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119320.html" target="_blank" rel="nofollow"><strong>j2se面试题</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119320.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119319.html" target="_blank" rel="nofollow"><strong>尚学堂J2SE笔记</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119319.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119318.html" target="_blank" rel="nofollow"><strong>基于J2ME_(Java_2_Micro_Edition)的手机游戏开发</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119318.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> </tbody></table> <p></p> </wbr>

    Android 贪吃蛇、俄罗斯方块、中国象棋、阅读器等应用功能150多个实例源码

    15本超级经典Android教程,都是pdf完整版的

    海量源码 不断更新中。。。

    Android 贪吃蛇 程序代码源码 点击下载
    7个经典Android应用程序实例源代码 点击下载
    安卓Android俄罗斯方块游戏--完整游戏项目源码 点击下载
    安卓Android中国象棋Chess程序项目源码源代码 点击下载
    Android应用开发详解教材源码(上册)--10个单元40多个实例源码 点击下载
    Android应用开发详解教材源码(下册)--8个单元30多个实例源码 点击下载
    Mp3播放器源码Android实战项目源码 点击下载
    Android 培训示例大全--18个单项功能实例源码 点击下载
    Android 小项目开发示例大全--20个通用具体应用程序实例源码 点击下载
    Android 文件下载功能Java多线程下载功能的例子实例源码 点击下载
    安卓Android开源小说阅读器CoolReader源码 点击下载

    15本超级经典Android教程,都是pdf完整版的

    Android开发编程从入门到精通——Android程序员必备 点击下载
    Android应用程序开发36技(pdf完整版359页) 点击下载
    Android新手开发教程 点击下载
    Android2.3用户手册 点击下载
    Android开发教程笔记pdf完全版 点击下载
    Android SDK 中文开发文档 点击下载
    Linux内核阅读心得体会——pdf高清版 点击下载
    linux Android基础知识总结 点击下载
    Android系统移植技术详解 点击下载
    Android-Google手持设备应用程式设计入门 点击下载
    Android编程入门教程 点击下载
    Android驱动开发入门及手机案例开发分析教程 点击下载
    Android开发手册——API函数详解 点击下载
    深入浅出Android——Android开发经典教材 点击下载
    Android 开发环境搭建步骤详细图解 点击下载

    如果觉得免费的Android电子教程不过瘾的话,你可以花钱买纸质的教材,教程不在多,在于精。

    你可以花钱买一两本经典的纸质Android书籍,这个仔细看或者收藏;其他的看免费的电子版的Android教材就好了,建议不要花太多冤枉钱。

    1

    2

    3


    24本经典Arm教程与学习开发资料下载

    18本经典PHP教程与开发资料下载

    2000年-2011年cet4历年24份真题和答案(含详细解析)

    22本经典英语口语教程下载

    14本名师经典励志教程

    30本pdf完整版的经典Linux学习和开发教程和资料

    成为Java高手需要达到的25个学习目标--经典

    15本经典C、C++、MFC、VC++教程与开发资料

    一生励志,养成励志的习惯,励志经典书籍

    Java学习开发必备资料与培训资料

    Android 15本经典教程和150多个实例源码



    <wbr><p><br><strong></strong></p> <p></p> <table id="gv_data" rules="all" border="0" cellpadding="0" cellspacing="0"><tbody> <tr> <td><a href="http://www.shangxueba.com/share/p3119331.html" target="_blank" rel="nofollow"><strong><span style="color:#ff0000">J2EE教程(中文版)</span></strong></a></td> <td><strong></strong></td> <td><strong> </strong></td> <td><a href="http://www.shangxueba.com/share/p3119331.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119322.html" target="_blank" rel="nofollow"><strong>J2ME的3D开发教程</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119322.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119321.html" target="_blank" rel="nofollow"><strong>J2ME开发教程</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119321.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119320.html" target="_blank" rel="nofollow"><strong>j2se面试题</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119320.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119319.html" target="_blank" rel="nofollow"><strong>尚学堂J2SE笔记</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119319.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> <tr> <td><a href="http://www.shangxueba.com/share/p3119318.html" target="_blank" rel="nofollow"><strong>基于J2ME_(Java_2_Micro_Edition)的手机游戏开发</strong></a></td> <td><strong></strong></td> <td><strong></strong></td> <td><a href="http://www.shangxueba.com/share/p3119318.html" target="_blank" rel="nofollow"><strong>点击下载</strong></a></td> </tr> </tbody></table> <p></p> </wbr>
    展开全文
  • win8游戏开发教程开篇

    2019-08-11 22:57:56
    准备开始写一个win8游戏开发教程了,现在这里整理一下思路。 需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。 1.阅读这个教程需要什么样的基础? 2.这个教程能带来一个怎样的DEMO,结束之后能...

    准备开始写一个win8游戏开发教程了,现在这里整理一下思路。

    需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。


    1.阅读这个教程需要什么样的基础?

    2.这个教程能带来一个怎样的DEMO,结束之后能开发什么游戏?

    3.这个教程覆盖哪些知识,使用什么语言和工具开发?


    问题1: 首先是编码能力,这不是一本程序教材,编码基础不讲,选择c#作为主要开发语言,读者需对c#有一定的了解。其次一定的动手能力,有时需要一定的c++开 发,会提供详细的代码,如果你跳过这些代码,最起码你应该能够编译他们,使用他们。第三、探索精神,重点是针对win8 游戏开发这个专题,专题以外的知识一定有更合适的资料去了解和学习。


    问题2: 这个教程不会带来一个完美的游戏,但一定会向你展示开发一个Win8 Metro 游戏所需要的方方面面。带来一个 2D 3D 绘图、音乐音效、多点触控,资源、线程管理的一系列例子,以及把多个示例穿起来的演示项目,挑选一个简单的游戏方式来说明如何把这些例子穿成一个游戏。理 论上来讲,你可以开发任何游戏了,只差一点,你的持续努力。


    问题3:

    这个教程会覆盖一定的算法、数据结构、图形学。

    开发工具涉及DirectX、winrt、xaml、xml、winmd

    开发语言工具涉及c#、c++,

    环境要求 windows 8、vs2011 for windows8

    其他工具:

    图片、模型处理工具:简单点就是2D 3D美术工具,毫无意外的,这些东西程序员必须会使用,美术规格都应该由使用相关资源的程序员提供,自己当然要先熟悉。未免不必要的麻烦,虽然我基本都使 用一些大牌美术工具,考虑到版权问题,教程中介绍时均采用免费工具,你可以用大牌工具完成一样的工作。

    版本管理工具:即使你只是在本机写一些练习,也强烈要求你使用版本管理工具(比如svn),保存自己的每一步操作,学习一个版本管理工具花不了几个钟头,坚持使用他吧。

    文本比较工具:版本管理的延伸,检查两个版本之间的差异,是一种非常实用的手段,当你搞不清楚改了什么出问题了,看看上个版本吧。

    工作记录工具:文本、邮件、blog,随便什么,无论多少,把自己的点滴进展记录下来,经常回顾,坚持做计划,坚持执行计划。否则,几乎不可能完成一个需要 10天以上的工作。30项工作你的大脑会把他拧成麻花,但是记录在纸上不过半页,而且很容易有条理,你今天只需关注今天的事情,别让大脑在这件事情上折 腾,我们要思考的东西还多着呢。


    嗯,工具说了一大堆,我在教程中并不会告诉你工具怎么用,我会尽量在教程中提示该使用哪些工具,但这些使用工具习惯的养成终究要靠你自己。


    让我们开始说重点吧

    为什么需要 windows 8 游戏开发教程

    windows 8 使用的主要的界面叫做metro,传统的界面称为desktop,仅在win8桌面版支持,作为对老操作系统的兼容和过渡。Metro UI程序的开发,始于windows phone 7,和过去的windows桌面程序开发有比较大的不同。并且和windows phone 7也有很大的不同,甚至有种说法,windows phone 8 也会升级为和windows 8 类似的界面。

    引入了winmd接口形式,c++的加入,dotnet性能的劣势部分和winrt、dotnet ramework中没有提供的功能,可以很容易的补上。winmd作为一个新的接口形式,还没有充足的资料,此教程也将作为winmd的资料。

    有什么是新的

    Metro UI :摒弃了窗口的概念,基本UI形式还是按控件组织,用xaml组织,从wpf->silverlight->metro ui这样发展而来。

    WINMD:新的接口技术,像是com和dotnet的混血,使用c++、dotnet、js 都可以直接调用winmd接口。目前使用c++和dotnet都可以生产winmd接口的类库,dotnet可以生产跨平台的winmd接口类库,c++需要针对不同平台编译。

    windows kits:非 全新,有很大一部分来自windows sdk win32API,,c++头文件和lib,还有WINRT,这次提供了三种平台的lib(x86 x64 arm),并不包括所有的WIN32 API,Metro UI仅能使用windows kit,不要尝试使用传统win32 api。

    winrt:用 winmd接口包装的面向对象形式的windows api,基本上取代了dotnet framework或者说是dotnet framework中的大部分改成了winmd接口。现在c#开发metro ui应用,大部分调用都是winrt。c++ 和 js 应用开发,也需要调用winrt。


    2.png

    2012-1-16 15:41 上传
    下载附件(26.94 KB)

    1.png

    2012-1-16 15:41 上传
    下载附件(28.67 KB)

    从容量上对比,就可以看出dotnet framework的大部分功能都瘦身掉了,瘦身掉了的部分就由winrt补上了,开发中调用的 windows命名空间中全部是winmd接口,他们就是winrt。

    c++ cx:c++和 winmd 通讯的扩展,典型语法"^“ “ref new xxx”


    看 上去很可怕,一大堆新东西,其实呢,你根本不用关心winmd winrt都是什么东西,他们都是api,调用时都以命名空间的形式组织,作为类库来说扩展名是winmd,实际使用dotnet类库和winmd类库从 编码角度没有差异,winrt中的lib 也是标准的c++类库。和c++以前链接库也没有差异。


    有什么旧的可用

    c++开发知识没有变化,毫无变化,唯一不同的是提供了三种平台的lib 多了arm。

    c# 和dotnet 开发知识没有变化,dotnet framework 还是那么工作的,不过是有一部分被winrt替代了。而且替代部分也不影响你的开发,最多命名空间不同,重新找一下。

    directX 知识,目前winrt中没有提供绘图API,dotnet framework中删去了绘图api,XNA还没有登陆win8的消息。所以使用c++ 调用 DX 来开发图形部分,成为目前开发windows 8 游戏的必然选择。

    由 于winmd接口的引入,混合编程变得容易,c++ 和 DirectX 积攒了大量的游戏、引擎,我们可以大胆预测,XNA4或许是最后一个版本,XNA5恐怕会以winmd接口形式出现,退回MDX的模式,作为DX的 winmd接口版本,总之按照这个发展势头,XNA不再是平台唯一解决方案,他将面对无数的竞争,包括本教程^_^。

    还可以大胆预测winmd这么华丽的形式,一定会登陆 windows phone 和 xbox,然后,dotnet的XNA会逐渐变成可选项,然后就没有然后了,还是那句话,XNA5可能就变成了DX的winmd包装。

    转载于:https://www.cnblogs.com/yangkai-cn/archive/2012/11/11/4017359.html

    展开全文
  • 1 Gstreamer基本概念 GStreamer 是一个开源的多媒体用的框架,采用了基于插件(plugin)和管道(pipeline)的体系结构,框架中的所有的功能模块都被实现成可以插拔的组件, 并且在需要的时候能够很方便地安装...
  • 准备开始写一个win8游戏开发教程了,现在这里整理一下思路。 需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。 1.阅读这个教程需要什么样的基础? 2.这个教程能带来一个怎样的DEMO,结束之后能开发...
  • 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux主要shell命令详解   点击下载 深入理解Linux内核...
  • 精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技) 基本信息 原书名: Pro Android Games 原出版社: Apress 作者: (美)Vladimir Silva 译者: 王恒 苏金国 丛书名: 图灵程序设计丛书.移动开发类 出版社...
  • win8游戏开发教程开篇

    2013-06-25 09:44:52
    准备开始写一个win8游戏开发教程了,现在这里整理一下思路。 需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。 1.阅读这个教程需要什么样的基础? 2.这个教程能带来一个怎样的DEMO,结束之后能开发...
  • 准备开始写一个win8游戏开发教程了,现在这里整理一下思路。 需要在开篇解释的问题就有一大堆了,先尝试一个个把他们写下来。 1.阅读这个教程需要什么样的基础? 2.这个教程能带来一个怎样的DEMO,结束之后能...
  • Android平台最震撼人心之处在于Android手机系统的...我帮大家精心搜集了30篇Android开发教程。   资料名称 下载地址 5个Android毕业设计优秀论文集锦  http://down.51cto.com/data/277283
  • linux+ARM学习路线

    2019-03-01 11:14:17
    linux+ARM学习路线 学习步骤如下: 1、Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的...
  • 【笔记】ARM架构和ARM芯片(三)
  • 华为云推出业界首个基于ARM框架的云手机解决方案在手机已经普及到千家万户的时代,人们对手机应用的诉求日益提升。为此,华为云推出了云手机。 华为云云手机提供基于云的虚拟仿真手机服务,将手机上的应用转移到云上...
  • By Toradex Giovanni Bauermeister 1). 简介 相比曾经,如今科技设备对处理性能和速度要求越来越高。为了应对这种技术需求,许多公司发明了不少方法来获得更好的处理性能。例如苹果公司,发明了 Open Computing ...
  • 实现了游戏在arm游戏实验箱上的使用 理解游戏的整体思路与各模块的大致功能 二、实验环境 Eclipse软件开发环境; windows操作系统。 arm实验箱的配置。 三、实践内容 Windows环境...
1 2 3 4 5 ... 20
收藏数 2,976
精华内容 1,190