首页 文章 精选 留言 我的

精选列表

搜索[计算机基础],共10000篇文章
优秀的个人博客,低调大师

Android Animation(动画)---基础二(LayoutAnimationController)

LayoutAnimationController动画效果,一次出现 一、布局文件使用 动画list_item_layout.xml <?xml version="1.0" encoding="utf-8"?> <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/list_item_alpha" android:animationOrder="normal" android:delay="0.8" /> 每个列表项动画list_item_alpha.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" /> </set> 主界面布局文件activity_main.xml 特别注意要在ListView中添加android:layoutAnimation="@anim/list_item_layout" <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.mazaiting.layoutanimationcontroller.MainActivity" > <ListView android:id="@+id/listView" android:layoutAnimation="@anim/list_item_layout" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="测试" android:onClick="test" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="清空" android:onClick="clear" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 列表布局文件item_list.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="@string/app_name" android:textSize="20sp" /> 主界面代码 public class MainActivity extends AppCompatActivity { private ListView mListView; private static final String[] STRINGS = { "BruceZhang", "Alpha", "Translate", "Blanklin", "Rotate", "GreenFrank" }; private ArrayAdapter<String> mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) this.findViewById(R.id.listView); mAdapter = new ArrayAdapter<>(this, R.layout.item_list, STRINGS); } public void test(View view) { mListView.setAdapter(mAdapter); } public void clear(View view) { mListView.setAdapter(null); } } 二、代码配置 动画文件 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" /> </set> 主界面布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.mazaiting.layoutanimationcontroller.MainActivity" > <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="测试" android:onClick="test" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="清空" android:onClick="clear" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 主界面动画设置 public class MainActivity extends AppCompatActivity { private ListView mListView; private static final String[] STRINGS = { "BruceZhang", "Alpha", "Translate", "Blanklin", "Rotate", "GreenFrank" }; private ArrayAdapter<String> mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) this.findViewById(R.id.listView); mAdapter = new ArrayAdapter<>(this, R.layout.item_list, STRINGS); // 1. 创建一个Animation对象 Animation animation = AnimationUtils.loadAnimation(this, R.anim.list_item_alpha); // 2. 使用如下代码创建LayoutAnimationController对象 LayoutAnimationController lac = new LayoutAnimationController(animation); // 3. 设置控件显示的顺序 lac.setOrder(LayoutAnimationController.ORDER_RANDOM); // 4. 为ListView设置LayoutAnimationController尚需经 mListView.setLayoutAnimation(lac); } public void test(View view) { mListView.setAdapter(mAdapter); } public void clear(View view) { mListView.setAdapter(null); } }

优秀的个人博客,低调大师

SQLite学习快速入门-- 基础介绍

一、介绍:SQLite是目前最流行的开源嵌入式数据库,主要特征有: 1). 管理简单。 2). 移植性好,SQLite生成的数据库文件可以在各个平台无缝移植。 3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。 4). 易于维护。 二、用途 本地轻量级数据库的最佳选择之一,android系统的标配数据库就是这个,还有配置文件也是一方面,它更多的用于中间数据、实时数据以及小数据量个人信息的存储。 三、工具的使用 SQLite Database Browser 如下图 四、与其它数据库的区别 于access的区别,sqlite的便携性和平台无关性要远远好于access,只是在可视化操作方面确实不如access。 本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/02/20/2358955.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Zigbee联盟基础知识普及

做智能家居,还要了解ZigBee联盟,不是做好产品就好吗,与ZigBee联盟有什么关系?在具体说明这个问题之前,我们不妨先来了解一下ZigBee。 ZigBee实际是一种短距离、低功耗的无线通信技术,名称来源于 ZigZag——一种蜜蜂的肢体语言。当蜜蜂新发现一片花丛后会用特殊舞蹈来告知同伴发现的食物种类及位置等信息,是蜜蜂群体间一种简单、高效的传递信息方式,因此ZigBee 也被成为“紫蜂协议”。 这样解释可能还是难以让人明白。简单说,ZigBee是一种类似于WiFi和蓝牙的通信协议,能够让设备与设备之间实现无线通信。而不同的是,虽然都是无线通信技术,ZigBee在智能家居领域却有着独特优势,如功耗低(发射功率仅为1mW)、连接设备多(理论上可达六万多个)、安全性高(AES-128加密算法)等等。 考虑到智能家居系统实质上为电子产品,涉及的设备又比较多,且与用户家庭安全息息相关,ZigBee技术在智能家居行业得到广泛关注也就不足为奇了。事实上,ZigBee目前已成为智能家居领域的一种主流无线技术,被广泛应用于各类家庭智能化产品。 ZigBee是一种实现智能硬件设备连接和数据交换的无线技术,那么ZigBee联盟又是干什么的呢?接下来,就进入正题,说一说ZigBee联盟。 ZigBee联盟(ZigBee Alliance)是为消费、商业和工业应用领域创建开放式全球物联网标准的非营利性组织,在全球拥有成员公司400多家,覆盖芯片供应商,设备制造商,电视、电信运营商,认证机构,大型零售集团等产业链的各个环节。联盟董事会成员包括恩智浦半导体、康卡斯特有线、飞思卡尔半导体、艾创、克罗格、兰吉尔、罗格朗、飞利浦、施耐德、芯科、德州仪器、物联传感(亚洲区唯一董事会成员)、SmartThings(三星子公司)等13家全球知名企业。 说得简单些,ZigBee联盟是制定、优化和完善ZigBee技术标准的非营利组织,组织成员主要为世界各地的知名公司,当然,其中也有不少是来自中国。显而易见,Zigbee联盟在ZigBee技术的逐步完善过程中扮演重要角色,在智能家居乃至整个物联网领域具有重大影响。而混智能家居圈,需要了解ZigBee联盟,也就不难理解了。 那么都是哪些公司有资格成为ZigBee联盟成员呢?是不是只要加入了ZigBee联盟就能参与标准制定和完善了呢? ZigBee联盟没有对申请加入的企业作严格的限定,没有设立过高的门槛。正如上面所说,ZigBee联盟成员覆盖了多个环节,并非局限于某一方面。不过,申请加入的企业还是需要有一定的实力的,绝非随随便便就能加入。需要指出的是,加入ZigBee联盟后,成员的地位有一定的差别。 近日,WiFi联盟(WiFi Alliance)宣布推出全新的会员资格类别(实施级会员),以支持更多企业推出WiFi CERTIFIED认证产品。事实上,ZigBee联盟一直都在实行三级会员资格体系,不同级别会员所拥有的权力范围不相同。 ZigBee联盟成员分为三个级别,分别是促进者(Promoters),参与者(Participants)和采纳者(Adopters)。促进者是联盟中最有影响力的级别,可获得董事会席位;参与者则可以参与细则的制订、技术委员会候选人资格和参加研发工作;而采纳者只能得到最终通过的文书并使用完成的ZigBee规范。 比如,在今年9月23—25日举办的2015上海国际智能建筑展上,一些ZigBee联盟采纳者成员称“一直在积极的参与标准化制定和实施”是不准确的,因为“标准化制定”是“参与者”以上等级会员才能够参与的,采纳者并无权参与。再如,ZigBee联盟前不久宣布,家装零售商Lowe’s(劳氏)以“参与者”身份加入ZigBee联盟,Lowe’s就可以参与细则的制订、有资格成为技术指导委员会的候选人以及参加研发工作。 当然,无论是什么等级的会员,成为ZigBee联盟成员对企业在智能家居领域发展都是有益的。而对于智能家居企业来说,至少有机会获得并且能够影响新兴的ZigBee规范,增强产品和产业的竞争力。 作者:何妍 来源:51CTO

优秀的个人博客,低调大师

开放数据——物联网的基础

虽然智能城市的概念还相对较新,但它已经成为了未来城市环境的热门话题。去年,联合国预测,到2030年,世界上三分之二的人口将生活在城市中。随着这种增长,各个领域的创新也在不断扩大,各个城市必须不断适应持续发展的社会需求。在许多城市,携带纸质地图,或者在家门口拾起订阅的报纸,已经不再常见。相反,城市居民希望通过便利的应用、技术创新和物联网的连接,与他们的城市和市民相连接,来完成他们的日常生活。 促进创新和创意开发是成为智能城市的关键,但首先需要向公众开放数据。例如,允许获取当前公交车位置的数据,这样开发人员就可以创建应用,当公交车快要进站时,通知用户。通过开放数据政策,城市可以加入智能城市运动,将技术和信息融入到城市发展的核心中。 这种数据优先的方法一直是促使城市变得更加智能和打造创新环境的决定因素。根据Sunlight Foundation,美国五大城市——芝加哥、纽约、洛杉矶、休斯敦和费城——允许公众获取数据,发展成为典型的智能城市。 纽约市通过鼓励企业创新思想,推动城市发展成为一个智能城市,从而实现这一目标。Association for Neighborhood and Housing Development的“Displacement Alert Project”项目,使用开放数据,创建了社区和住宅大楼情况的网络可视化,以提高对经济适用住房危机的意识,并确定有严重置换压力的地区。如该应用所示,开放数据让纽约市能够解决诸如对居民幸福感会产生威胁的问题,并有助于简化解决方案,推动智能城市的发展。 希望以类似的方式利用开放数据的好处,数据的全面开放帮助了波士顿对于BOS:311应用的开发,这一应用让居民可以向Constituent Service Center报告非紧急情况,然后就问题派遣相关机构。 纽约和波士顿都证明,将市民连接到一个智能城市需要获得所有方面的数据——只能通过数据优先的方式来实现。 物联网为创新提供了精细数据和实时数据,比如空气质量传感器、公共交通位置设备和灾难预警信号,进一步实现了开放数据计划。通过全面的数据,填补了市民与城市之间的空白,可以更好地监测城市居民的行为和需求,并且为改善城市条件和减轻不便提供了解决方案。 波士顿对一个新的数据门户的测试,将使用更用户友好的方式显示可用数据,以验证让数据更全面,更易于理解,是至关重要的。除了创建一个门户,城市还需要鼓励机构利用和共享数据。波士顿期望其全新的数据系统能够达成这一目标,因此要确保以通用格式提供数据。 可用数据使创新变得更容易。例如,2013年,在纽约加入开放数据行动不久之后,纽约交通部推出了新的交通方式——Citi Bike——一种共享自行车系统。从那时起,几家私人企业就一直使用纽约的开放数据,希望能够开发出一种改善Citi Bike模式的创意。开放自行车通勤数据,发现Citi Bike系统中的问题,让创新者可以解决这些缺陷。Spin和Mobike这样的公司,正在考虑共享单车的解决方案和创意,例如取消停车桩,让出行更便捷。 最近,交通部强调了城市技术的重要性,组织了“智能城市挑战”,城市被要求提出将创新与连接相结合的计划,以赢得执行计划所需的资金。获胜者是俄亥俄州的哥伦布市,其提交了一个大型项目,规划了一个新的交通系统,其中包括一个独立的运输系统,一个所有运输方式的通用应用,和一个数据分析计划。为城市的技术项目提供了信心,哥伦布市希望这笔资金将鼓励企业创新,并促进技术发展,从而通过公共数据,解决哥伦布市的一些缺陷。 为了适应城市的居民,城市必须通过利用物联网和创新的能力来提供技术化生态系统。向公众开放数据,提升了公共和私人部门的技术发展和解决问题的能力,因为它促进了基于社会中可衡量问题的创意开发。这将使成为智能城市的发展过程自然和无缝。 本文转自d1net(转载)

优秀的个人博客,低调大师

摄像头基础介绍【转】

转自:http://www.mamicode.com/info-detail-506798.html 一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。 数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。DSP结构框架: 1. ISP(image signal processor)(镜像信号处理器) 2. JPEG encoder(JPEG图像解码器) 3. USB device controller(USB设备控制器) 常见的摄像头传感器类型主要有两种, 一种是CCD传感器(Chagre Couled Device),即电荷耦合器。 一种是CMOS传感器(Complementary Metal-Oxide Semiconductor)即互补性金属氧化物半导体。 CCD的优势在于成像质量好,但是制造工艺复杂,成本高昂,且耗电高。在相同分辨率下,CMOS价格比CCD便宜,但图像质量相比CCD来说要低一些。CMOS影像传感器相对CCD具有耗电低的优势,加上随着工艺技术的进步,CMOS的画质水平也不断地在提高,所以目前市面上的手机摄像头都采用CMOS传感器。 手机摄像头的简单结构 滤光片有两大功用: 1.滤除红外线。滤除对可见光有干扰的红外光,使成像效果更清晰。 2.修整进来的光线。感光芯片由感光体(CELL)构成,最好的光线是直射进来,但为了怕干扰到邻近感光体,就需要对光线加以修整,因此那片滤光片不是玻璃,而是石英片,利用石英的物理偏光特性,把进来的光线,保留直射部份,反射掉斜射部份,避免去影响旁边的感光点. 二、相关参数和名词 1、常见图像格式 1.1RGB格式: 传统的红绿蓝格式,比如RGB565,RGB888,其16-bit数据格式为5-bit R + 6-bit G + 5-bit B。G多一位,原因是人眼对绿色比较敏感。 1.2YUV格式: luma(Y)+chroma(UV)格式。YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。 色度(UV)定义了颜色的两个方面─色调与饱和度,分别用CB和CR表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。 主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。 1.3RAW data格式: RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。sensor的每一像素对应一个彩色滤光片,滤光片按Bayer pattern分布。将每一个像素的数据直接输出,即RAW RGB data Raw data(Raw RGB)经过彩色插值就变成RGB. RAW格式图像示例 2. 相关技术指标 2.1 图像解析度/分辨率(Resolution): SXGA(1280 x1024)又称130万像素 XGA(1024 x768)又称80万像素 SVGA(800 x600)又称50万像素 VGA(640x480)又称30万像素(35万是指648X488) CIF(352x288) 又称10万像素 SIF/QVGA(320x240) QCIF(176x144) QSIF/QQVGA(160x120) 2.2 彩色深度(色彩位数): 256色灰阶,有256种灰色(包括黑白)。 15或16位彩色(高彩色):65,536种颜色。 24位彩色(真彩色):每种原色都有256个层次,它们的组合便有256*256*256种颜色。 32位彩色:除了24位彩色的颜色外,额外的8位是储存重叠图层的图形资料(alpha频道)。 2.3 光学变焦和数码变焦: 光学变焦:通过镜头的调整,拉近拉远所要拍摄的对象,保持像素不变和画质基本不变,却可以拍到自己 理想的物像。 数码变焦:其实没有什么变焦,只是从原图片中截取出来放大,你从液晶屏幕上看到变大了,实际上画质并没有本质提高,而像素比你相机能拍摄的最大像素降低了。 画质上说基本是鸡肋把,但是可以提供一些方便。 2.4 图像压缩方式: JPEG/M-JPEG H.261/H.263 MPEG H.264 2.5 图像噪音: 指的是图像中的杂点干挠。表现为图像中有固定的彩色杂点。 2.6 自动白平衡处理技术(autoWhite Balance): 简单来说就是:摄像机对白色物体的还原。相关概念:色温。 2.7 视角: 与人的眼睛成像是相成原理,简单说就是成像范围。 2.8 自动对焦: 自动对焦可以分成两大类:一类是基于镜头与被拍摄目标之间距离测量的测距自动对焦,另一类是基于对焦屏上成像清晰的聚焦检测自动对焦(清晰度算法)。 注:变焦就是把远处的物体拉近。对焦是让图像清晰。 2.9 自动曝光和Gamma: 就是光圈和快门的组合。光圈,快门速度,ISO。Gamma即人眼对亮度的响应曲线。 三、高通的CAMERA部分硬件架构 CAMERA部分硬件架构 VFE:VIDEO front-end 视频前端 VPE:Video preprocessing视频预处理 摄像头模组中自带了ISP(图像信号处理器),所以,VFE和VPE有关图像效果处理的功能都是关闭的。 1.VFE的功能: 1.1 通过算法提高图像的质量。 1.2 提供高分辨率的图像的AWB(自动白平衡)/AE(自动曝光)/AF(自动对焦)算法处理。 1.3 图像衰减校正。 1.4 低光下的噪声滤波。 1.5 图像色彩效果优化。 1.6 皮肤颜色效果优化。 1.7 图像抖动计算。 1.8亮度适应算法。 2.VPE的功能: 2.1 图像稳定性。 2.2 数字对焦。 2.3 图像旋转。 2.4 Overlay。 三、android系统camera基本架构 1.应用层 Camera的应用层在Android上表现为直接调用SDK API开发的一个Camera应用APK包。代码在/android/packages/apps/Camera下。主要对 android.hardware.Camera(在Framework中) 类的调用,并且实现Camera应用的业务逻辑和UI显示。一个Android应用中若要使用这个android.hardware.Camera类,需要在Manifest文件声明Camera的权限,另外还 需要添加一些<uses-feature>元素来声明应用中的Camera特性,如自动对焦等。具体做法可如下: <uses-permissionandroid:name="android.permission.CAMERA"/> <uses-featureandroid:name="android.hardware.camera"/> <uses-featureandroid:name="android.hardware.camera.autofocus"/> 2.Framework层 2.1 android.hardware.Camera:代码位置/android/frameworks/base/core/java/android/hardware/Camera.java 这部分目标是framework.jar。这是是Android提供给app层调用的java接口。这个类用来连接或断开一个Camera服务,设置拍摄参数,开始、停止预览,拍照等。 2.2 android.hardware.Camera这个类是和JNI中定义的类是一个,有些方法通过JNI的方式调用本地代码得到,有些方法自己实现。Camera的JAVA native调用部分(JNI):/android/frameworks/base/core/jni/android_hardware_Camera.cpp。Camera.java 承接JAVA代码到C++代码的桥梁。编译生成libandroid_runtime.so。libandroid_runtime.so库是公用的,其中除了Camera还有其他方面的功能。 2.3 Camera框架的client部分: 代码位置:/android/frameworks/base/libs/camera/下5个文件。 Camera.cpp CameraParameters.cpp ICamera.cpp ICameraClient.cpp ICameraService.cpp 它们的头文件在/android/frameworks/base/include/camera目录下。 这部分的内容编译生成libcamera_client.so。在Camera模块的各个库中,libcamera_client.so 位于核心的位置,作为Camera框架的 Client客户端部分,与另外一部分内容服务端libcameraservice.so通过进程间通讯(即Binder机制)的方式进行通讯。 2.4 Camera框架的service部分: 代码位置:/android/frameworks/base/services/camera/libcameraservice。 这部分内容被编译成库libcameraservice.so。CameraService是Camera服务,Camera框架的中间层,用于链接CameraHardwareInterface和Client部分 ,它通过调用实际的Camera硬件接口来实现功能,即下层HAL层。 四. 摄像头预览、拍照、录像基本数据流向和处理流程以及驱动调试 HAl层相关代码:(frameworks/base/services/camera/libcameraservice/CameraService.cpp)vendor/qcom/android-open/libcamera2/QualcommCameraHardware.cppvendor/qcom/proprietary/mm-camera/apps/appslib/mm_camera_interface.cvendor/qcom/proprietary/mm-camera/apps/appslib/camframe.cvendor/qcom/proprietary/mm-camera/apps/appslib/snapshot.cvendor/qcom/proprietary/mm-camera/apps/appslib/jpeg_encoder.cvendor/qcom/proprietary/mm-camera/apps/appslib/cam_frame_q.cvendor/qcom/proprietary/mm-camera/apps/appslib/cam_display.cvendor/qcom/proprietary/mm-camera/targets/vfe31/8x60/vendor/qcom/proprietary/mm-camera/targets/vfe31/common/vpe1/QualcommCameraHardware.cpp主要分为三个部分,preview,snapshot,video。它们分别用一个pthread进行处理。另外还有auto focus功能也是用pthread的方式处理。预览或拍照、视频线程处理得到的数据帧都以datacallback的方式回调到上层CameraService.cpp中,进行存储或预览等操作。以下是HAL层部分的代码大概的调用结构流程。 整个模块主要巡行三个主线程:control、config及frame。 control用来执行总的控制,是上层控制接口。 config主要进行一些配置,这个线程里面主要进行3A的工作,另外还有一些跟效果有关的设置; frame线程主要用来做帧queue的循环获取处理。所有事件或状态的反馈,用回调函数的方式传回QualcommCameraHardware.cpp。 2. 驱动部分从设备驱动s5k8aa.c开始。新建平台设备后,执行入口函数probe时,调用创建摄像头设备功能函数 int msm_camera_drv_start(struct platform_device *dev, int (*sensor_probe)(const struct msm_camera_sensor_info *, struct msm_sensor_ctrl *)) 并将设备信息结构体和摄像头设备调用入口/dev/msm_camera/frame%d /dev/msm_camera/config%d /dev/msm_camera/pic%d 实现了上层库对VFE模块,VPE模块,jpeg_encoder模块和摄像头sensor模块驱动的控制调用接口。在file_operations中的相应函数中分别实现的是这些设备的新建初始化和IOCTL功能调用接口。 然后这个函数还创建了四个工作队列: struct msm_device_queue event_q; struct msm_device_queue frame_q; struct msm_device_queue pict_q; struct msm_device_queue vpe_q; event_q包括/dev/msm_camera/control%d传入的控制信号队列,用于将上层传下来的控制命令(command)传到config thread中去。 frame_q用于对图像帧的操作管理,预览或录像时帧将传递给DSP进行处理。 pict_q包含拍照帧,用于给jpeg_encoder进行图像编码处理。 vpe_q是VPE控制命令队列。 s5k8aa.c是相应摄像头设备的驱动部分。它的功能很简单,主要实现sensor模块的创建、初始化和控制。主要实现以下三个函数: s->s_init = ov2685_sensor_init; s->s_release = ov2685_sensor_release; s->s_config = ov2685_sensor_config; ov2685_sensor_init函数: 主要实现摄像头的上电、时钟控制(MCLK)、设备初始化功能。 上电分为DOVDD、DVDD、AVDD、reset、PWDN几个部分。需要按照设备要求顺序操作,一般时钟控制顺序也包含在内。 设备初始化过程是将sensor设备的所有寄存器全部初始化一遍,采用IIC方式将初始化寄存器地址和值全部发送到sensor端。完成后此时摄像头模组才能正常工作,并将图像通过MIPI线路传送到CPU端。 ov2685_sensor_config函数: 主要实现对sensor的各种配置接口,相应的有帧率配置,白平衡效果设置,曝光度设置,特效设置等等。相应接口将配置好的寄存器列表通过IIC发送到sensor中。 3. 摄像头调试中的几个问题点: 1.1 是否正确上电,是否有时钟波形输出。 检测输出电压的电压值是否和上电时序以及MCLK是否符合sensor的要求。这部分可以用示波器和万用表测量。测量电压值和上电时序以及MCLK的时钟频率是否正确。 1.2 IIC读写是否正常。调试CPU与ISP间的I2C通信。 检测包括IIC地址是否正确,协议是否匹配。这部分也可以用示波器测量IIC的SDA、CLK的峰值、波形逻辑是否正确。 1.3 正确上电并初始化以后sensor模块是否正常工作。 这部分主要通过用示波器测量MIPI线路的数据和时钟PIN是否正确,它的波形是否含有数据,是否标准波形,峰值有没有达到要求等。 1.4 如果以上都正确了以后,MIPI控制器将接收到中断,并开始处理图像信号。此时如果出错,可以通过中断信号的出错值查看错误状态。除CPU端是否正常初始化工作的问题外,需要关注模组端设置的图像格式和CPU接收的默认图像格式和图像大小(SIZE)是否一致。模组中图片格式和图像大小通过寄存器值查看。CPU端接收图片格式和图像大小在HAL部分的s5k8aa中设置, 拍照源图像大小和预览源图像大小需要分别设置。 以上部分完成后,摄像头可以正确预览。 【作者】 张昺华 【出处】 http://www.cnblogs.com/sky-heaven/ 【博客园】 http://www.cnblogs.com/sky-heaven/ 【新浪博客】 http://blog.sina.com.cn/u/2049150530 【知乎】 http://www.zhihu.com/people/zhang-bing-hua 【我的作品---旋转倒立摆】 http://v.youku.com/v_show/id_XODM5NDAzNjQw.html?spm=a2hzp.8253869.0.0&from=y1.7-2 【我的作品---自平衡自动循迹车】 http://v.youku.com/v_show/id_XODM5MzYyNTIw.html?spm=a2hzp.8253869.0.0&from=y1.7-2 【新浪微博】 张昺华--sky 【twitter】 @sky2030_ 【facebook】 张昺华 zhangbinghua 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

优秀的个人博客,低调大师

MaxCompute基础与MaxCompute SQL优化

总论: 大数据计算服务 ( MaxCompute,原名 ODPS ) 是一种快速、完全托管的 TB/PB 级数据仓库解决方案 。MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全 。同时,大数据开发套件和 MaxCompute关系紧密,大数据开发套件为 MaxCompute 提供了一站式的数据同步,任务开发,数据工作流开发,数据管理和数据运维等功能,您可以参见大数据开发套件简介来对其进行深入了解 。 MaxCompute 主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务 。随着社会数据收集手段的不断丰富及完善,越来越多的行业数据被积累下来 。数据规模已经增长到了传统软件行业无法承载的

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册