版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
物联网应用技术与开发
(基于Android和Linux)第1章
物联网应用开发环境第2章AndroidStudio应用开发基础第3章
硬件接口Android移植第4章IPv6综合平台Android开发第5章
传感网Android专项开发第6章
射频识别Android专项开发第7章UbuntuLinux应用开发基础第8章
嵌入式物联网Qt程序设计第9章
物联网综合应用设计全套可编辑PPT课件
第1章物联网应用开发环境1.1物联网两个典型虚拟仿真平台物联网虚拟仿真平台虚拟仿真了各种射频识别(RFID)、无线传感网(WSN)等常见的物联网感知层设备。具有真实设备的完整接口和特性,可以通过串口及网络进行访问。1.1.1
RFID虚拟仿真开发软件RFID虚拟仿真软件基于低频125KHz、高频13.56MHz、超高频915MHz、微波2.4GHz等四种主流频段的通信原理和实现技术,以及对应硬件设备的接口和原理,模拟出在真实的RFID平台中功能一样的虚拟设备。具体的RFID虚拟设备(1)125K虚拟设备125K设备主要有125K读写器、125K标签、125K控制器、125K门禁。。(2)14443虚拟设备14443虚拟设备有14443读写器、14443标签。(3)15693虚拟设备14443虚拟设备包含15693读写器、15693天线、15693标签、15693多路复用器。多路复用器接8个天线,每个天线可放置15693标签。(4)超高频设备包含超高频设备有超高频读写器和超高频标签,使用方法与14443设备使用时一样。(5)有源2.4G设备包含有源2.4G标签和有源2.4G读写器,其读写器工作电源是“3V2A”。RFID虚拟仿真软件125K示实例1.1.2传感网虚拟开发环境无线传感网络(WSN)是由部署在监测区域内的大量微型传感器节点组成,是采用无线通信的方式形成的一个多跳自组织网络系统,能够通过集成化的微型传感器,协同地实时监测、感知、采集和处理网络覆盖区域中各种感知对象的信息,并对信息资料进行处理,再以自组多跳网络方式传送给监测区域的执行器,以此实现数据收集、目标跟踪以及报警监控等各种功能。WSN虚拟仿真实验平台主界面具体的WSN虚拟设备(1)公共设备除虚拟网关设备、315M信息转发器、无线路由器和协调器外,电源是传感网设备中必不可缺少设备,虚拟电源有“3V2A”、“5V2A”、“9V1.5A”、“12V1A”四种电源。具体的WSN虚拟设备(2)WSN设备WSN虚拟设备主要有NBIOT传感器、LoRa传感器、WiFi传感器、433MHz传感器、蓝牙传感器、ZigBee传感器等几类,每一类都包括一些常用的传感器,比如温湿度传感器、光照传感器等;门磁报警器、门磁报警器、电动窗帘、风扇、智能开关、智能插座、继电器、数码管、LED灯、无线遥控开关等。具体的WSN虚拟设备(3)模拟设备模拟器虚拟设备主要有:温湿度模拟器、土壤温湿度模拟器、烟雾模拟器、震动模拟器、红外热感模拟器、光照度度模拟器、气压模拟器、PM2.5模拟器、位移模拟器、扭矩模拟器、CO2浓度模拟器、角度模拟器、声音模拟器、PH值模拟器、光敏模拟器等。具体的WSN虚拟设备(4)其他虚拟设备其他虚拟设备拟包括二维码、条码、扫描枪、灯光、电磁锁、天窗、灌溉、遮阳、水帘、空调、蜂鸣器、投食机等。1.1.3物联网虚拟仿真的通信协议传输的数据格式为16进制,共9字节,如表所示。Byte数据示例说明0A5协议头110终端节点类型201终端节点在组⽹中的地址3-700FF00FFFF数据位85A协议尾(接收为B5)1.2
物联网应用开发硬件平台IPv6下一代物联网综合平台主系统采用Android操作系统,可进行移动互联网技术开发。涉及技术有Android技术、移动互联网、BS/CS应用、3G/4G通信等,该平台提供高端的1GHz主频的Cortex-A8应用处理器,并且板载丰富主流移动互联网和物联网应用接口,包括3G/4G、WiFi、GPS、蓝牙、ZigBee等。可开展物联网相关应用开发、中间件开发、系统移植、综合项目案例等内容。1.2.2
物联云魔盒创新平台物联云魔盒创新嵌入式平板默认安装Android操作系统。涉及技术点有Android程序开发、ZigBee、IPv6、BS/CS应用、3G/4G移动互联网通信等,该平台核心板为四核的CPU,内核为Cortex-A9,并且板载丰富的主流移动互联/物联网应用接口,包括3G/4G/WAN通讯、WiFi、北斗BD+GPS双模定位、蓝牙、ZigBee通讯模块、IPv6通讯模块、九轴传感器、红外遥控、RS232、VGA、HDMI、OTG、USB2.0、BNC模拟摄像头等。内容覆盖应用开发、中间件开发、系统移植、综合项目案例等。1631.3
OneNET开发平台OneNET是中国移动物联网开放平台,官方网址为/,其宗旨为一切从连接开始OneNET让物联网设备轻松上云,帮助企业客户快速开发物联网应用。物联网开放平台OneNET定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的应用平台.面向设备,适配多种网络环境和常见传输协议,提供各类硬件终端的快速接入方案和设备管理服务;面向企业应用,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身应用的开发,而不用将工作重心放在设备接入层的环境搭建上,从而缩短物联网系统的形成周期,降低企业研发、运营和运维成本。物联网OneNET架构1.4
搭建AndroidStudio开发环境1.4.1
部署AndroidStudio集成环境(1)安装AndroidStudio在官方网站/studio/下载最新的AndroidStudio集成环境android-studio-203-windows.exe,默认安装1.4.2
第一个AndroidStudio项目(1)任务描述创建第一个安卓项目MyIOTApplication,完成定义显示内容,并规范编码,最后在模拟器上部显示“HelloIOTWorld!”,字体大小为20sp,并将安装在模拟器或移动终端设备上。(2)新建工程1.5
基于Linux的QT开发环境1.5.1安装VMwareWorkstation虚拟机常用流行的虚拟机软件有VMwareWorkstation、VirtualBox和VirtualPC,其中VMware是全球领先的虚拟产品服务商。可从/products/workstation-pro.html官方网站下载目前最新的VMwareWorkstation16.2.3forWindows虚拟机。1.5.2
安装Ubuntu操作系统Linux主要发行版本有两大系列:面向服务器的RedHat和以桌面应用为主的Ubuntu,后者每六个月发布一个新版本,每2年发布一个LTS版本,每个版本都有代号和版本号,版本号源自发布日期,例如22.04版本,代表是2022年04月发行。1.5.3
安装物联网图形用户界面开发工具QT在嵌入式物联网应用系统中,图形用户界面(GUI)的地位也越来越重要,但不同于桌面机,物联网GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,嵌入式物联网GUI应具备高度可移植性与可裁减性,以适应不同硬件条件和使用需求。而基于C++的Qt是一个跨平台开发框架,可以让用户快速、高效地设计、开发、部署和维护软件,同时在所有设备上可提供无缝的用户体验。1.5.4
第一个基于Linux的QT项目学习一种编程语言或编程环境,通常会先编写一个“HelloWorld”程序。这里也用QtCreator编写一个基于信号与槽且具有关闭按钮的“HelloWorld”程序,以初步了解QtCreator设计应用程序的基本过程,对使用QtCreator编写QtC++应用程序建立初步的了解。第2章AndroidStudio应用开发基础
本章基于Android-Studio-203-Windows.exe作为开发环境,结合一般物联网应用用户界面设计的需求,主要讲解该开发环境的一些基础知识,重点是介绍约束布局使用方法,并给出几个用户界面设计的典型实例。2.1
应用开发的基础知识2.1.1
应用程序主要组件(1)活动Activity(2)内容提供者ContentProvider(3)服务Service(4)广播接收器者BroadcastReceiver(5)意图Intent2.1.2高效的约束布局
Android系统提供了许多控件与布局管理方式,控件包括文本、按钮、图片等,布局方式有线性、表格、相对、约束等。合理功能控件与布局方式可以为物联网应用程序构建美观、易用的用户界面,让人身心悦目,也增加应用程序的吸引力。
GuideLine用法2.1.3
布局中的其他常用辅助组件除约束布局自身属性之外,谷歌还提供了很多辅助布局,只是在布局中起辅助作用,并不会在界面真正显示,来使约束布局的功能更加强大,常用这些辅助布局如下。(1)参考线GuideLineGuideLine有水平参考线和竖直参考线两种,其作用就像是一个虚拟的参考线,只是用来方便其他View以它为锚点来布局。(2)分组框Group
分组框Group可以同时控制多个可见性的虚拟View。
(3)占位布局Placeholder占位布局自己本身不会绘制任何内容,但可以通过设置app:content="id",将idView的内容绘制到自己的位置上,而原id的View就像消失了一样。Placeholder的应用可以作为位置模板,引入后只需要写内容View;使用代码动态改变内容,结合TransitionManager可以做一些有趣的过度动画等。(4)屏障Barrier屏障Barrier是一个虚拟View。主要解决下面类似问题,比如两个上下排列的TextView、一个Button位于他们的右边。Button事先设置在下面TextView的右边。假设有时上面TextView文本变长,则布局会变为TextView和Button重叠。(5)约束布局实例任务描述:创建UIConstraintLayoutForIOTApp的应用程序,在屏幕中包含ImageView、EditText、Password、Button和TextView控件,完成效果如图2-10所示。
2.1.4
物联网应用常用控件AndroidStudio中有几十个控件,其中跟物联网应用相关的五种常见控件如图所示。常用控件实例任务描述,使用五种常见的控件创建UIFiveControlsForIOTApp的应用程序,在屏幕中包含TextView、Switch、ProgressPar、Number、Button、RadioButton、ImageView、CheckBox、SeekBar和RatingBar控件,完成效果如图所示。控件实例运行结果2.2用户界面设计的项目实施2.2.1实例1:网关登录界面(1)任务描述使用控件创建MySmartHomeLoginApplication的智能家居网关登录应用程序,在屏幕中包含ImageView、EditText、CheckBox和Button控件,完成效果如图所示。ImageViewEditText用户名CheckBox记住密码EditText用户密码Button登录2.2.2实例2:近距离无线通信服务设置(1)任务描述使用控件创建MyWirelessServiceApplication的近距离无线通信服务应用程序,在屏幕中包含TextView、Switch和Button控件,完成效果如图2-23所示。近距离无线通信服务设置界面设计(3)运行结果2.2.3
实例3:智慧农场SQLite数据库(1)任务描述创建MyIOTSQLiteDataBaseApp的智慧农场数据库应用程序,在屏幕中包含TextView、ImageView、EditText、RadioGroup、RadioButton和Button控件,效果如图2-26所示。Design中添加相关控件和设置对应属性(3)运行结果2.2.4实例4:文件存取操作(1)任务描述使用控件创建MyIOTFileApplication的文件存取应用程序,在屏幕中包含EditText和Button控件,完成效果如图2-29所示。文件存取界面设计2.2.5实例5:普通和有序广播通信(1)任务描述使用控件创建MyIOTBroadcastApplication的广播通信应用程序,在屏幕中包含Button和EditText控件,完成效果如图2-32所示。普通和有序广播通信界面设计2.2.6实例6:获取网络图片资源(1)任务描述使用控件创建MyGetNetworkResourceApplication的获取网络图片资源应用程序,在屏幕中包含EditText、Button和ImageView控件,完成效果如图2-35所示。获取网络图片界面设计第3章
硬件接口Android移植在Android系统移植中,有很重要的一个部分工作,就是为新平台的硬件设备移植程序。比如在物联云魔盒Contex-A9创新平台(以下简称A9平台)上开发适应其硬件设备的APP应用程序,主要内容包括按键操作、SD卡操作、ZigBee通信、WiFi通信、蓝牙通信、短信和通话、GPS及位置服务、百度地图与应用、北斗定位、数字摄像头、模拟摄像头、加速度传感器、姿态传感器、红外遥控传感器和磁力传感器等安卓程序开发。3.1按键操作3.1.1工作原理按键使用GPIO接口,但按键本身需要外部输入,按键入口对应于核心板的GPIO接口,当其中一个按键被按下,通过查询方式就可以检测到是哪一个接口有输入信号,从而控制相应操作,但实际按键动作会在几毫秒至几十毫秒短时间内产生信号抖动。例如,当按键被按下时,其动作就像弹簧的若干次往复运动,将产生几个脉冲信号。一次按键操作将会产生若干次按键中断,从而会产生抖动现象。因此驱动程序中必须要解决去除抖动所产生的毛刺信号问题。目前编译好的按键驱动已经加载到Android内核,用户只需要使用Android控件按键事件,编写按键程序即可。任务:将A9平台通过MinUSB连接上电脑,运行AndroidStudio集成开发环境,在弹出菜单中选择OpenanExistingProject导入配套资源的MyKeyDemoApplication应用程序。在布局设计视图最上方EditText控件显示按键硬件编码信息,TextView控件显示按键事件详细信息,包括按键动作、按键代码、重复次数、硬件编码和按键标志。3.2
SD卡操作3.2.1工作原理SD卡已成为目前消费数码设备中应用最广泛的一种存储卡。SD卡是具有大容量、高性能、安全等多种特点的多功能存储卡,它比MMC卡多了一个进行数据著作权保护的暗号认证功能,读写速度比MMC卡要快4倍,达2M/秒。一般在物联网的Contex-A9平台的系统都是安装在SD卡。因此,Android应用程序访问SD卡,需要申请访问SD卡的权限。即需要在应用程序中的AndroidManifest.xml中加入访问SD卡的权限。A9平台带有SD卡,用户也可通过SD卡口放置卡,在拔卡之前运行“设置”→“设备”标签中选择“存储”。运行“ES文件浏览器”应用程序查看SD卡内的文件。3.3
ZigBee通信3.3.1工作原理在ZigBee通信过程中,终端主控模块实时查询传感器的温湿度数据,并通过终端无线模块上报给嵌入式平板中的ZigBee协调器,Android应用程序通过串口从ZigBee协调器获取并展示传感器的实时数据。所需硬件设备:嵌入式平板1台,1个节点主控模块及其电源、1个ZigBee无线模块、1个温湿度传感器模块、1根MiniUSB数据线。搭建硬件环境,将ZigBee无线模块插接到主控模块无线节点接口母口上,将温湿度传感器插接到主控的另一个母口上,给温湿度传感器模块供电,然后按一下主控模块开机键,观察到首页显示出无线网络与传感器信息后,按一下左侧菜单键,打开的通信信息页面3.4
WiFi通信3.4.1工作原理WiFi是一种可以将个人电脑、手持设备等终端以无线方式交换数据的局域网,帮助用户访问电子邮件、Web和流式媒体的技术,底层硬件通常是集成化WiFi芯片。能够访问WiFi网络地方被称为热点,其在2.4GHz频段工作,优点是传输速度快,最高可达到11Mbps。设置WiFi应用3.4.2实现过程
在A9平台中依次选择“菜单→设置→无线和网络→WLAN”打开WLAN。点击【扫描】菜单,如果有无线网络,会自动搜索到所有可用的无线网络,点击需要连接的网络,弹出输入密码对话框,输入正确密码后,点击【连接】按钮连接到指定网络。3.5
蓝牙通信3.5.1工作原理蓝牙是一种支持设备短距离通信的无线电技术,一般10米内。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网之间的通信,从而使数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz频段。其数据速率为1Mbps,采用时分双工传输方案实现全双工传输。3.5.2实现过程在A9平台中依次选择“菜单→设置→无线和网络→蓝牙”打开蓝牙。点击【搜索设备】菜单,如果有蓝牙设备,会自动搜索到所有可用的蓝牙设备。点击需要匹配的蓝牙设备,弹出蓝牙配对请求对话框,输入匹配码后,点击【确认】进行匹配。3.6短信和通话3.6.1工作原理
电话系统Android应用程序如果应用程序使用电话服务API,那么在使用API前,检查设备是否有电话服务硬件。为此,需要使用PackageManager的hasSystemFeature方法,并指定FEATURE_TELEPHONY功能来检测是否有电话服务。(2)短信Android应用程序短信(ShortMessageSystem,SMS)用于手机间发送短文本消息,为发送的用户来阅读文本消息和应用程序使用数据消息提供支持。但短信传递不是很及时,与使用基于IP或者套接字的传输相比较,使用SMS在应用程序间传递数据消息的速度很慢,而且花费较大并且具有较高的延迟。因此SMS并不真正适合于要求实时响应的应用程序。3.6.2实现过程将4G手机卡放置在A9平台的自弹式SIM卡槽,卡金手指面朝上,带斜口一侧先插到SIM卡槽,正常插入卡后会听到锁住卡的清脆响声,此时SIM卡已锁牢,不能随意拔出来,再将4G天线安装到A9平台上。在AndroidStudio开发环境中,将MySendSMSApplication应用程序运行在A9平台上。输入手机号码点击【拨打此号】可以进行拨号操作。输入手机号码和短信内容,点击【发送短信】按钮短信将被发送到指定号码。3.7
GPS及位置服务3.7.1工作原理全球定位系统(GlobalPositioningSystem,GPS)GPS空间部分是由24颗卫星组成,距地表20200km,均匀分布在6个轨道面,每个轨道面4颗,轨道倾角为55度。卫星分布使得在全球任何地方任何时间都可观测到4颗以上卫星,并能在卫星中预存导航信息。地面控制系统由监测站、主控制站、地面天线所组成,地面控制系统负责收集卫星传回的消息并计算卫星星历、相对距离和大气校正等数据3.7.2
实现过程A9平台解锁后,依次选择“菜单→设置→位置信息”,在【位置信息】中打开位置信息。在【位置信息】界面点击【模式】选项进入【位置信息模式】界面,勾选“仅限设备”和“GPSsatellites”。在AndroidStudio开发环境中,将MyGPSDemoApplication应用运行在A9平台上,界面如图所示。3.8
百度地图及应用3.8.1工作原理百度地图API是为开发者免费提供一套基于百度地图服务的应用接口,包括JavaScriptAPI、Web服务API、AndroidSDK、iOSSDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。3.8.2
实现过程在电脑浏览器中访问百度地图API官网/,登录百度账号,进入“控制台看板”中选择“我的应用”页面。单击“创建应用”,进入创建应用页面,输入应用名称,在应用类型中选择AndroidSDK。3.9
数字摄像头3.9.1工作原理数字摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。数字摄像头可以直接捕捉影像,然后通过串、并口或者USB接口传到计算机里。目前市场上的摄像头基本以数字摄像头为主,而数字摄像头中又以USB数字摄像头为主,市场上可见的大部分都是这种产品。3.9.2实现过程在AndroidStudio环境中新建名为MyCameraDemoApplication的应用程序,在界面布局res/layout/activity_main.xml中添加一个SurfaceView控件和一个Button按钮,SurfaceView用于预览照片,Button用于拍照。将CameraDemo应用程序运行在手机上,如图所示。3.10加速度传感器3.10.1工作原理加速度传感器是用来感应嵌入式平板加速度的,其返回值是一个长度为3的数组(value),数组中的3个元素依次代表嵌入式平板在x轴、y轴和z轴方向上的分量,单位都是米/平方秒。3.10.2
实现过程在AndroidStudio环境中新建名为AccelerationSensorDemo的应用程序。右击AccelerationSensorDemo应用程序,在弹出菜单中选择NewClass,在NewJavaClass的Name选项中输入RotateUtil,左击Finish完成RotateUtil.java文件添加,用于将加速度传感器获得的数据转换成屏幕上的x和y坐标。在AndroidStudio环境中,将应用程序运行在A9平台上,平板倾斜时,屏幕上的圆球会向低处滚动,效果如图所示。3.11姿态传感器3.11.1工作原理姿态传感器主要用于感知A9平台姿态的变化,其每次读取的是静态的状态值,表示当前的姿态。每组姿态值包括3个,分别代表A9平台在Yaw、Pitch和Roll轴的旋转角度。3.11.2实现过程在AndroidStudio开发环境中,将应用程序运行在A9平台上。当A9平台姿态变化时,屏幕上的显示数据会随之变化,如图3-20所示。3.12
磁场传感器3.12.1工作原理磁场传感器主要用于探测嵌入式平板周围的磁场强度,其返回值是一个长度为3的数组(value),数组中的3个元素依次代表磁场强度在x轴、y轴和z轴上的分量,单位都是特斯拉。磁场传感器坐标系的原点位于嵌入式平板的左下角。x轴平行于屏幕的短边,从左到右,y轴平行于屏幕的长边,从上到下,z轴垂直于屏幕,与x轴和y轴正交。坐标轴绑定在嵌入式实验平板,即坐标轴不会随着嵌入式平板姿态的改变而改变。3.12.2
实现过程在AndroidStudio开发环境中,将应用程序运行在A9平台上。当A9平台位置变化时,屏幕上的显示数据会随之变化。3.13
IrDA红外通信3.13.1工作原理红外通信(TheInfraredDataAssociation,IrDA)是一种利用红外线传输信息的通信方式,可传输语言、文字、数据、图像等信息。数据通信按发送速率分为三大类:串行红外、中速红外和高速红外。串行红外速率覆盖RS-232端口通常支持的速率是9600b/s~115.2kb/s,中速红外可支持0.576Mb/s和1.152Mb/s的速率,高速红外通常用于4Mb/s的速率,有时也可用于高于串行红外的所有速率。3.13.2
实现过程步骤1:准备一个IrDA红外遥控器。步骤2:A9平台解锁后,点击IRTest图标,运行IRTest应用程序,如图3-23所示。步骤3:先使IrDA红外遥控器顶部的发射器对准A9平台底部的IrDA模块,然后使用IrDA红外遥控器的按键可以对A9平台进行控制。注意:IrDA红外遥控器可以对A9平台上的所有应用程序进行控制,仅以IRTest应用程序为例。第4章IPv6综合平台Android开发
基于IPv6下一代物联网综合硬件平台、AndroidStudio集成开发环境的约束布局方法和对应硬件接口移植技术,介绍物联网应用中的多媒体播放、传感器数据采集、执行器器动画以及Http网络访问的实现所需要的安卓开发技术。4.1多媒体应用AndroidStudio提供了常见媒体的编码、解码机制,因此可以非常容易地集成音频、视频和图片等多媒体文件到物联网的应用程序中,让用户的交互更为生动。4.1.1工作原理主要是通过调用Android提供的现有API,实现音乐播放器、视频播放器、录音和摄像等应用程序,当然有些需要硬件的支持,通过Activity和Intent直接来访问这些媒体文件。音频播放的主要流程(2)视频播放基本思想VideoView类可以从不同的来源,比如说文件系统和内容提供商的网站下载视频文件,并显示在窗体布局上。因为它可以配合窗体布局设计来控制视频窗体的大小,提供各种选项,比如缩放和着色。使用VideoView类的视频播放技术基本思想视频播放的主要流程4.1.2实现过程在AndroidStudio开发环境中,将应用程序运行在A9平台上。4.2传感器应用4.2.1工作原理传感器是一种微型的物理设备,能够探测,感受到外界信号,并按一定规律转换成人们需要的信息,也是物联网应用感知层最常见的设备。除了安卓系统本身的微信摇一摇、指南针应用、跳跳游戏等传感器外,常见的物联网传感器如图4-4所示。物联网应用感知层最常见的传感器设备开发传感器安卓应用的主要流程4.2.2
实现过程(1)光线/光敏传感器
在AndroidStudio开发环境中新建名为MyLightSensorApplication的应用程序。在布局文件res/layout/activity_main.xml中添加TextView和EditText控件,(2)指南针应用在AndroidStudio开发环境中新建名为MyCompassApplication的应用程序。在布局文件res/layout/activity_main.xml中添加TextView和EditText控件(3)常见传感器4.3风扇执行器动画的实现在物联网应用中经常需要进行环境控制,根据执行器的值来打开或关闭风扇、窗户、灯光等,这时在移动终端界面上也需要同步动画。比如,在农业大棚界面中,点击风扇图片风扇动画开始显示风扇转动,再次点击风扇停止;当人体传感器读取到有人时界面中的门动画开启,无人时门关闭。下面以风扇执行器动画实现为例进行讲解。4.3.1工作原理把将要实现的风扇动画拆分为帧(一张张风扇图片)的形式,按照一定的周期顺序播放出来。若要实现风扇动画加速或减速,就需要在如上的风扇图片初始化之后,规定在一定的周期内旋转。比如加速,本质上就是在设定好的周期内变换旋转角度或者修改周期,即在预设周期内旋转一定角度,角度和周期一定会变化一个,就可以决定动画的快慢。如:从2秒内旋转360度到1秒内旋转360度就是一种加速,从2秒内旋转360度到2秒内旋转720度也是一种加速,反之就是减速。本次风扇动画采用AnimationDrawable帧动画。4.3.2实现过程在AndroidStudio开发环境中新建名为MyFanAnimationApplication的应用程序。在布局文件activity_main.xml中添加ImageView和Button等控件,使用Android的Drawable实现风扇的动画,首先,准备好风扇动画图片8张拷贝到Drawable目录,编写对应xml文件,如图4-12所示。风扇执行器界面设计4.4终端Http网络开发4.4.1传输方式Android开发中最重要的组成部分就是网络与服务器端进行交互操作,以获取数据。目前,物联网或移动终端设备运用较多的有Http、WiFi、蓝牙、NFC等协议。本节介绍Http基本的网络技术和常用的传输数据格式,其他三种在物联网通信技术中讲解。4.4.2实现过程在AndroidStudio开发环境中新建名为MyHTTPConnectApplication的应用程序。在布局文件activity_main.xml中添加EditText和Button等控件。显示网络Http获取的数据第5章传感网Android专项开发
本章基于物联网虚拟仿真平台,专注于ZigBee传感网移动终端的安卓应用专项开发。5.1传感网网关连接创建一个移动端程序,通过串口通信、Socket通信来连接网关。所需硬件为WSN网关、ZigBee协调器、电源规格为5V2A、安卓终端,物联网虚拟仿真的硬件连接如图5-1所示。建立网关服务端仿真环境右击ZigBee协调器,在菜单中打开测试程序,并打开相应的串口,会弹出一个Socket服务,App端通过连接Socket服务与设备通信。5.1.1
实例设计界面设计及控件属性5.2
传感网继电器控制创建一个移动端程序,通过串口通信、Socket通信来连接WSN网关、通过协调器控制继电器节点。所需硬件有WSN网关、ZigBee协调器、ZigBee继电器、电源规格5V2A、安卓移动终端,对应的物联网虚拟仿真的硬件连接如图5-5所示。控制继电器仿真环境App除用到KV_WSN.jar的linkGateway()和disconnectGateWay()两个方法外,针对继电器,还用到KV_WSN.jar包中四个方法。5.2.1实例设计应用WsnRelay布局所需控件5.3
传感网数码管显示创建一个移动端程序,通过串口通信、Socket通信来连接WSN网关、通过协调器控制数码管节点。所需硬件有WSN网关、ZigBee协调器、ZigBee数码管、电源规格5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-9所示。数码管仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()、getAllDevice()、addSensorChangeListener()方法和sendData()等公共方法外,针对数码管,还用到KV_WSN.jar包中makeLEDCommand()方法,生成控制数码管指令。数码管仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()、getAllDevice()、addSensorChangeListener()方法和sendData()等公共方法外,针对数码管,还用到KV_WSN.jar包中makeLEDCommand()方法,生成控制数码管指令。5.3.1实例设计在AndroidStudio环境将应用运行移动设备上5.4传感网温湿度传感器创建一个移动端程序,通过串口通信、Socket通信来连接网关,然后获取温湿度传感器数据。所需硬件有WSN网关、ZigBee协调器、ZigBee温湿度传感器及其模拟器、电源规格为5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-13所示。温湿度传感器仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()和getAllDevice()等公共方法外,针对温湿度传感器还用到KV_WSN.jar包中获取温湿度传感器数据的方法。5.4.1实例设计在控件摆放区域寻找需要空间,然后拖拽摆放到窗体中,在窗体选择控件可以在右侧修改选择控件属性,可以在控件列表区域查看使用到的控件及其id。5.5传感网烟雾传感器创建一个移动端程序,通过串口通信、Socket通信来连接网关,然后获取烟雾传感器数据。所需硬件有WSN网关、ZigBee协调器、ZigBee烟雾传感器及其模拟器、电源规格为5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-16所示。烟雾传感器仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()和getAllDevice()等公共方法外,针对烟雾传感器,还用到KV_WSN.jar包中获取烟雾传感器数据的方法。5.5.1实例设计源码完成后,在AndroidStudio环境将应用运行移动设备上,如图所示。5.6传感网红外对射光栅创建一个移动端程序,通过串口通信、Socket通信来连接网关,然后获取红外对射光栅数据。所需硬件有WSN网关、ZigBee协调器、ZigBee红外对射光栅、电源规格5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-19所示。红外对射光栅仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()和getAllDevice()等公共方法外,针对烟雾传感器还用到KV_WSN.jar包中获取光栅传感器数据的方法.5.6.1实例设计源码完成后,在AndroidStudio环境将应用运行移动设备上,如图所示。5.7传感网震动传感器创建一个移动端程序,通过串口通信、Socket通信来连接网关,然后获取震动传感器数据。所需硬件有WSN网关、ZigBee协调器、ZigBee震动传感器及其模拟器、电源规格为5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-22所示。震动传感器仿真环境App除用到KV_WSN.jar的linkGateway()、disconnectGateWay()和getAllDevice()等公共方法外,针对烟雾传感器,还用到KV_WSN.jar包中获取震动传感器数据的方法。5.7.1实例设计源码完成后,在AndroidStudio环境将应用运行移动设备上,如图所示。5.8
传感网红外热感传感器创建如何创建一个移动端程序,通过串口通信、Socket通信来连接网关,然后获取红外热感传感器数据。所需硬件有WSN网关、ZigBee协调器、ZigBee红外热感传感器及其模拟器、电源规格5V2A,安卓移动端,对应的物联网虚拟仿真的硬件连接如图5-25所示。红外热感传感器仿真环境App除用到KV_WSN.jar的连接网关和断开连接两个方法外,针对红外热感传感器,还用到KV_WSN.jar包中四个方法。5.8.1实例设计源码完成后,在AndroidStudio环境将应用运行移动设备上,如图所示。第6章
射频识别Android专项开发
基于物联网虚拟仿真平台,本章专注于射频识别RFID移动终端的安卓应用专项开发。6.1低频125K读标签数据创建一个移动端程序,通过串口通信、Socket通信来连接中间件网关、读取低频125K标签功能。所需硬件有ISO125KRFID读写器、九针串口线、电源规格为5V2A、ISO125K标签、安卓移动端,对应虚拟仿真下的硬件连接图6-1所示低频125K读取标签仿真环境App用到RFIDLibrary.jar公共包中部分方法6.1.1实例设计布局设计,从左侧工具箱中找到所需控件,拖拽添加到窗体中,如图所示。源码完成后,在AndroidStudio环境将应用运行移动设备上6.2高频15693寻卡创建一个移动端程序,通过串口通信、Socket通信来连接网关,进行高频15693寻卡操作。所需硬件有ISO15693RFID读写器,九针串口线,电源规格为9V1.5A,安卓移动端,ISO15693天线,ISO15693标签,对应物联网虚拟仿真的硬件连接图6-7所示。高频15693寻卡的仿真环境App除用到RFIDLibrary.jar的连接中间件和断开中间件两个方法外,针对高频15693寻卡操作,还用到RFIDLibrary.jar包中findCardBySelsct()方法。6.2.1实例设计启动中间件网关,连接对应15693设备和相关串口号,在AndroidStudio环境将应用运行移动设备上。6.3高频15693读写数据创建一个移动端程序,通过串口通信、Socket通信来连接网关,进行寻卡、写入数据操作。所需硬件有ISO15693RFID读写器,九针串口线,电源规格为9V1.5A,安卓移动端,ISO15693天线,ISO15693标签,对应物联网虚拟仿真的硬件连接图6-11所示。高频15693写卡的仿真环境App除用到RFIDLibrary.jar的连接中间件和断开中间件两个方法外,针对高频15693寻卡操作,还用到RFIDLibrary.jar包中两个方法。6.3.1实例设计6.4高频14443标签休眠与解除创建一个移动端程序,通过串口通信、Socket通信来连接、断开网关、读取标签、标签休眠等功能,所需硬件有ISO14443RFID读写器,九针串口线,电源规格为5V2A,安卓移动端、ISO14443卡片,对应物联网虚拟仿真的硬件连接图6-14所示高频14443卡休眠的仿真环境App除用到RFIDLibrary.jar的连接和断开中间件网关等公共方法外,针对高频14443寻卡和休眠操作,还用到RFIDLibrary.jar包中五个方法。6.4.1实例设计6.5高频14443密钥认证与读写数据创建一个移动端程序,通过串口通信、Socket通信来连接、断开网关;读取标签、认证密钥功能等功能,所需硬件有ISO14443RFID读写器,九针串口线,电源规格为5V2A,安卓移动端、ISO14443卡片,对应物联网虚拟仿真的硬件连接图6-17所示高频14443密钥认证的仿真环境App除用到RFIDLibrary.jar包中连接和断开中间件网关等公共方法外,针对14443密钥认证,还用到包中两个方法。6.5.1实例设计6.6
高频14443电子钱包创建一个移动端程序,通过串口通信、Socket通信来连接、断开网关;读取标签、认证密钥、电子钱包初始化、电子钱包充值、消费与读取功能,所需硬件有ISO14443RFID读写器,九针串口线,电源规格为5V2A,安卓移动端、ISO14443卡片,对应物联网虚拟仿真的硬件连接图6-20所示高频14443电子钱包的仿真环境App除用到RFIDLibrary.jar的连接和断开中间件网关等公共方法外,针对高频14443电子钱包操作,还用到RFIDLibrary.jar包中四个方法。6.6.1
实例设计6.7超高频18000读写数据创建一个移动端程序,通过串口通信、Socket通信来连接中间件程序,建立与超高频读写器通信、识别标签和读写数据等功能,所需硬件有ISO18000超高频RFID读写器,九针串口线,电源规格为5V2A,安卓移动端、超高频卡片,对应虚拟仿真硬件连接图6-23所示。超高频标签读写的仿真环境App除用到RFIDLibrary.jar的连接和断开中间件网关等公共方法外,针对高频18000操作,还用到ISO18000.jar包中四个方法。6.7.1实例设计6.8
有源2.4G读写ID创建一个移动端程序,通过串口通信、Socket通信来连接网关、开始读取标签和停止读取标签、修改标签ID以及修改读写器ID等功能,所需硬件2.4G读写器,有源2.4G标签,九针串口线,电源规格为3V2A,安卓移动端,对应虚拟仿真的硬件连接如图6-26所示。有源2.4G读写仿真环境App用到ISO18000.jar包的方法6.8.1实例设计第7章
UbuntuLinux应用开发基础Linux开放的源代码效率比较高、成本低廉和高度的可设置性,特别适合嵌入式物联网应用系统。目前,Linux主要发行版本有两大系列:面向服务器的RedHat和以桌面应用为主的Ubuntu,而针对目前物联网终端嵌入式设备多以Ubuntu作为首选开发平台。7.1嵌入式开发的基本命令Linux常用操作命令,针对物联网嵌入式工程师来说必须熟练掌握,并且能通过手册寻求帮助,特别是在无法启动图形界面的情况下,使用命令行就是唯一选择。对普通用户来说,他能操作的目录只有当前用户目录,root用户没有限制,可以操作任意目录和文件。7.1.1Linux常用命令(1)mkdir、mv、touch、rm、find命令(2)rar归档管理7.1.1Linux常用命令(3)cal、date、ps、kill、du、df命令7.1.1Linux常用命令(3)cal、date、ps、kill、du、df命令(4)useradd、passwd、su、sudo、exit、whoami、userdel命令LInux是多用户多任务系统,而Windows是单用户多任务系统。①useradd命令用来建立用户帐号和起始目录,使用权限是超级用户,如果带-m参数,系统将会在home目录下同事创建同名的文件夹,以被该用户存放自己的文件。②passwd命令用来设置或修改使用者的密码。③su命令用来变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码,如果想切换到超级用户root,可使用命令sudo-s实现。④exit命令用于退出目前的shell。⑤sudo指以超级用户的方式执行命令,这里的超级用户指的就是root用户,我们在Linux中有时会遇到permissiondenied的情况,如以ubuntu用户的身份查看/etc/shadow的内容,因为它是只有root用户才能查看的,这个时候就可以使用sudo。⑥whoami命令用于显示自身用户名称。userdel命令用来删除指定用户,以及用户相关的文件。如不加选项则仅删除用户账号,而不删除相关文件。(5)chmod修改文件权限chmod命令来修改文件属性,修改权限有两种方法:①字母法字母u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是;r表示可读取,w表示可写入,x表示可执行,X表示只有当该文件是个子目录或者该文件已经被设定过为可执行。比如chmodu=rwx,g=r,o=r-xtestqt.out,即可设置testqt.out权限为-rwxr--r-x②数字法chmod可以使用数字来代表各权限,语法为chmodabcfile。其中,a、b、c各为一个数字,分别表示User、Group及Other的权限。设r=4、w=2、x=1,若要rwx属性则4+2+1=7;若要rw-属性则4+2=6;若要r-x属性则4+1=5。比如chmod666testqt.out,即可设置testqt.out权限为-rw-rw-rw-(6)reboot和shutdown命令操作Linux服务器时,肯定会有需要重启系统或者关闭系统等操作。reboot与shutdown命令都可以用来作为关机重启操作。reboot使用方法:直接在权限用户下输入reboot命令就可以看到ThesystemisgoingdownforrebootNOW的提示,目前就重启系统,reboot工作过程差不多跟halt一样,不过它是引发主机重启而halt是关机(7)pwd、clear、ifconfig、ping、apt-get等其他命令针对嵌入式物联网应用系统开发,其他的一些常用命令如下:①pwd命令用于显示工作目录②clear这个命令将会刷新屏幕③ifconfig命令配置和修改IP,并查看网络接口情况ifconfigens3339#修改ens33的IP④ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。⑤apt-get命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。一般需要root权限执行,所以一般跟着sudo命令,格式比如为sudoapt-getinstallupdate。读者可以不用记住所有命令选项,但要学会查询Linux命令使用用法,如find-help。7.1.2编辑器之神-vim编辑器vim是从vi发展出来的一个基于控制台文本编辑器。在代码补完、编译等方面,功能特别丰富。它有命令、插入及底行等三种模式,在不同模式下有不同的操作功能,一定要时刻注意屏幕最下方的提示,分清当前所在的模式,模式间切换快捷键如图7-8所示。切换模式功能键7.1.3编译器gcc和arm-linux-gcc编译器gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般编译器相比平均效率要高20%~30%。gcc能将C、C++语言源程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件名,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一后缀,系统从文件属性来区分可执行文件和不可执行文件。对于编译源码,会用到大量的gcc选项,以hello.c文件为例,常见的使用编译的参数如下。gcc–ohellohello.c:将hello.c文件编译成hello的可执行文件gcc–chello.c:将hello.c文件生成hello.o文件gcc-Ehello.c:只是激活预处理,不生成文档,需要把它重定向到另外一个文档里gcc–Shello.c:将hello.c文件生成hello.s文件的汇编代码gcc–pipe–ohellohello.c:使用管道代替编译中临时文档gcchello.c–include/root/hello.h:包含某个代码,相当于在代码中使用#include<hello.h>7.1.4Makefilemake命令执行时,需要一个Makefile文件,以告诉命令怎样去编译和链接程序。(1)Makefile里有什么Makefile里主要包含显式规则、隐晦规则、变量定义、文件指示和注释等内容。①显式规则。显式规则说明如何生成一个或多的的目标文件,这是由Makefile的书写者明显指出要生成的文件、文件的依赖文件、生成的命令。②隐晦规则。由于make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。③变量的定义。在Makefile中要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。④文件指示。包括三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。⑤注释。Makefile中只有行注释,和Shell脚本一样,其注释是用“#”字符,就像C/C++中的“//”一样。如果要在Makefile中使用“#”字符,可用反斜框进行转义,如“/#”。最后,还值得一提的是在Makefile中的命令,必须要以Tab键开始。7.2嵌入式Linux应用程序开发在进行应用程序开发前,准备好固化好Linux系统网关平台,还需要保证Ubuntu所在主机与网关平台正常通信。验证方法:交叉网线和交叉串口线连接好主机和网关,在Ubuntu终端上用ifconfigethx192.168.1.xxx命令设置IP地址。确保主机IP和网关IP地址为同一个网段。例如,网关IP地址若为05,主机网卡IP地址可为00。7.2.1文件读写(1)基本任务在Ubuntu嵌入式Linux环境中,编写文件读写及上锁的程序。(2)工作原理标准I/O库以及其他头文件提供了一个到底层I/O系统调用的一个万能接口,这个库并不是标准C的一部分,但这个库却提供了许多复杂的函数用来处理格式化输出以及描述输入,例如fopen()、fread()、fwrite()和fcntl()等函数的使用,同时也会小心的处理设备所要求的缓冲区。当需要打开文件建立访问路径时,会返回一个值,并会作为一个调用其他I/O库函数的参数。这个与低层文件描述符等同的被称之类流,并且作为一个指向结构的指针FILE*来实现。当程序启动时会自动打开在stdio.h中定义标准输入stdin、标准输出stdout、标准错误输出stderr三个文件流,也与底层文件描述符0、1和2相对应。7.2.2进程控制(1)基本任务在Ubuntu嵌入式Linux环境中,编写多进程及进程间通信的程序。(2)工作原理进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体,而且是独立竞争资源的基本实体。在Linux系统中,用户创建一个进程的唯一方法就是使用系统调用fork。内核为完成系统调用fork要进行几步操作。7.2.3
线程控制(1)基本任务在Ubuntu嵌入式Linux环境中,编写多线程程序。(2)工作原理使用多线程的理由之一是和进程相比,它是一种非常节俭的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵”的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。7.2.4
计时器控制(1)基本任务在Ubuntu嵌入式Linux环境中,编写计时器程序。(2)工作原理在程序当中常要输出系统当前时间,比如使用date命令,这时可使用两个函数。#include<sys/time.h>time_ttime(time_t*tloc);char*ctime(consttime_t*clock);函数time返回从1970年1月1日0点以来的秒数,存储在time_t结构之中,主要目的是给第二个函数使用,将秒数转化为字符串,第二个函数返回类型是固定的,一个可能值为ThuDec714:58:592000,这个字符串的长度是固定的为26。有时要计算程序执行的时间,比如要对算法进行时间分析,可能用到以下这些结构体和函数。7.2.5
TCP和UDP通信(1)基本任务在Ubuntu嵌入式Linux环境中,编写TCP和UDP通信过程以及实现方法的程序。(2)TCP工作原理双方建立连接时,发送方给接收方TCP数据报,然后等待对方的确认TCP数据报,如果没有就重新发,如果有就发送下一个数据报。接收方等待发送方的数据报,如果得到数据报并检验无误,就发送ACK确认数据报,并等待下一个TCP数据报的到来。直到接收到FIN发送完成数据报。为了建立一个TCP连接,系统可能会建立一个新的进程来进行数据的传送。7.2.6
SQLite数据库移植(1)基本任务在Ubuntu嵌入式Linux环境中,编写SQLite数据库应用程序。(2)工作原理SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用。SQLite占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了并且处理速度快。它能够支持Windows/Linux/Unix等主流的操作系统。7.3
嵌入式Linux驱动程序开发在进行嵌入式Linux驱动程序开发前,准备好固化好Linux系统网关,还需要保证Ubuntu所在主机与网关正常通信。Linux设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。本节驱动程序开发主要内容包括Linux简单字符驱动、LED控制、串口通信、LCD显示、触摸屏控制、SD卡读写、GPS通信、3G通信等。7.3.1简单字符驱动(1)基本任务在Ubuntu嵌入式Linux环境下的简单字符驱动程序的编写、编译和运行。(2)工作原理Linux下设备驱动分为字符设备、块设备、网络设备三类驱动。其中,字符设备是指设备发送和接收数据以字符的形式进行。设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。Linux字符设备驱动的结构图7.3.2基于GPIO的LED驱动(1)基本任务在Ubuntu嵌入式Linux环境下的LED驱动程序的编写、编译和运行。(2)工作原理Linux下的设备驱动程序即是对具体硬件进行操作的程序,是操作系统内核和机器硬件之间的接口。A8网关开发板的LED部分硬件原理图如图7-25所示。LED电路7.3.3
按键驱动设计(1)基本任务在Ubuntu嵌入式Linux环境下的按键驱动程序的编写、编译和运行。(2)工作原理按键同样使用A8网关的GPIO接口,但按键本身需要外部的输入,按键硬件驱动原理图如图7.26所示。在图的1×6矩阵按键SW4~SW9电路中使用EINT2、EINT3、EINT4、EINT8、EINT9和EINT11等6个输入。按键电路按键入口对应于A8网关核心板的GPHO接口,当其中一个SW按键被按下,通过查询方式就可以检测到是哪一个接口有输入信号,从而控制相应的操作。7.3.4串口通信设计(1)基本任务在Ubuntu嵌入式Linux环境下的串口(UART)通信程序的编写、编译和运行。(2)工作原理A8网关UART单元提供了三个独立的异步串行通信接口,如图7-27所示,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230.4Kbps,如果使用外部设备的时钟,可以达到更高的速率。每一个串口单元包含一个16字节的FIFO,用于数据的接收和发送。支持可编程波特率、红外发送/接收、一个或两个停止位、5~8bit数据宽度和奇偶校验。串口电路7.3.5
LCD显示驱动(1)基本任务在Ubuntu嵌入式Linux环境下的LCD显示驱动程序的编写、编译和运行。(2)工作原理要使一块LCD正常显示文字或图像,不仅需要其驱动器,而且还需要相应的控制器。在通常情况下,生产厂商把驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而控制器则是由外部的电路来实现,现在很多的MCU内部都集成LCD控制器,如S5PV210等。通过LCD控制器就可以产生其驱动器所需要的控制信号来控制STN/TFT屏了。控制器可以通过编程支持不同LCD屏的要求,例如行和列像素数,数据总线宽度,接口时序和刷新频率等。控制器主要作用是将定位在系统存储器中的显示缓冲区中的图像数据传送到外部驱动器,并产生必要的控制信号,例如RGB_VSYNC、RGB_HSYNC、RGB_VCLK等。7.3.6触摸屏采集驱动(1)基本任务在Ubuntu嵌入式Linux环境下的触摸屏采集驱动程序的编写、编译和运行。(2)工作原理电容式触摸屏是利用人体电流感应进行工作。电容式触摸屏的感应屏是一块四层复合玻璃屏,玻璃屏的表面和夹层各涂有一层导电层,最外层是一薄层矽土玻璃保护层。当用手指触摸在感应屏上的时候,人体的电场让手指和和触摸屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。Touch外部接口从图中可以看到,既可以工作的SPI的接口方式,也可以工作在I2C的接口方式,不管工作在SPI,还是工作在I2C,从硬件的接口设计上来说,控制口都是需要要接的。7.3.7
SD卡存储驱动(1)基本任务在Ubuntu嵌入式Linux环境下的SD卡存储驱动程序的编写、编译和运行。(2)工作原理SD卡(SecureDigitalCard)是一种为满足安全性、容量、性能和使用环境等需求而设计的一种新型存储器件,卡允许在SD模式和SPI模式工作,接口电路如图7-29所示。SD卡接口电路7.3.8
CMOS摄像头驱动(1)基本任务在Ubuntu嵌入式Linux环境下的摄像头驱动程序的编写、编译和运行。(2)工作原理CMOS摄像头是一种镜头的名称,是数码设备用来感光成像的部件。从原理上,CMOS的信号是以点为单位的电荷信号,速度很快,也很省电。摄像头利用矽感光二极体进行光与电的转换。这种转换的原理与各位手上具备“太阳电能”电子计算机的“太阳能电池”效应相近,光线越强、电力越强;反之,光线越弱、电力也越弱的道理,将光影像转换为电子数字信号。CMOS的影像电荷驱动方式为主动式,感光二极体所产生的电荷会直接由旁边的电晶体做放大输出,具有低成本、低耗电以及高整合度的特性。7.3.9
GPS驱动(1)基本任务在Ubuntu嵌入式Linux环境下的GPS驱动程序的编写、编译和运行。(2)工作原理:全球定位系统GPS是一个由覆盖全球的24颗卫星组成的卫星系统。系统可以保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能,其目的是在全球范围内对地面和空中目标进行准确定位和监测。随着全球性空间定位信息应用日益广泛,GPS提供全时域、全天候、高精度定位服务将给空间技术、地球物理、大地测绘、遥感技术、交通调度、军事作战以及人们日常生活带来巨大变化和深远影响。7.3.10
GPRS驱动(1)基本任务在Ubuntu嵌入式Linux环境下的GPRS驱动程序的编写、编译和运行。(2)工作原理通用分组无线业务GPRS(GeneralPacketRadioService)是在现有全球移动通讯系统GSM上发展起来的一种新的承载业务。GSM空中接口采用时分多址技术,是当前应用最为广泛的移动电话标准。基于这种业务的各种应用也蓬勃发展起来,典型的应用有:工业控制、环境保护、道路交通、上午金融、移动办公、零售服务、公安系统等。第8章
嵌入式物联网Qt程序设计在嵌入式物联网应用系统中,图形用户界面(GUI)的地位也越来越重要,但是不同于桌面机系统,嵌入式物联网GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限条件。而基于C++的Qt是一个跨平台开发框架,可以让用户快速、高效地设计、开发、部署和维护软件,同时在所有设备上提供无缝的用户体验。Qt已成为大多数用户在嵌入式终端和移动设备上进行GUI开发的最佳选择。8.1
Qt基本知识与开发流程Qt图形框架编程的一般步骤如下。①创建工程目录,如mkdirHello,每个Qt程序都要放在一个独立的工程目录下。②进入工程目录编写源代码,如vimmain.cpp,语法和C++基本一致,但使用Qt的类库不在是标准的C++的库。③构建工程,执行qmake-project,生成工程文件,比如H,需要手工添加构建选项“QT+=widgets”。④创建Makefile,执行qmake,可以根据构建的工程文件自动生成Makefile。⑤编译连接,执行make即可完成编译和链接。⑥测试,执行“./Hello”命令观察结果,默认名称与工程名一致。8.1.1
信号与槽信号(Signal)与槽(Slot)是Qt编程的基础,也是Qt的一大创新。因为有了信号与槽的编程机制,在Qt中处理界面各个组件的交互操作时变得更加直观和简单。信号和槽是QT自行定义的一种通信机制,实现对象之间的数据交互。当用户或系统触发了一个动作,导致某个控件的状态发生了改变,该控件就会发射一个信号,即调用其类中一个特定的成员函数(信号),同时还可能携带有必要的参数。8.1.2面向对象的Qt编程基于对象的Qt编程完全不使用任何面向对象技术,而只是利用Qt所提供的类创建对象,并调用对象的接口以满足用户的需求是可能的,但这样构建的应用程序其功能必然是十分有限的。首先,Qt类保护成员中的诸多实现无法在类的外部被复用,Qt试图通过多态实现的很多机制,如事件处理,完全无法使用。再次,Qt提供的信号和槽不可能满足用户所有的需求,自定义信号和槽需要面向对象技术。最后,Qt设计师、Qt创造器等工具链都在以面向对象的方式使用Qt,反其道而行之不会有好结果。8.1.3
Qt设计师用C++代码编写图形界面的问题不直观,而Qt项目开发了专门的可视化图形界面编辑器--QtDesigner或Qt设计师。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。例如,设计一个含有两个标签控件、两个按钮控件和两个组合框控件的“串口设置”主界面,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。8.1.4
Qt创造器在QtCreator创造器诞生之前,程序员可以通过qmake命令行编译,或者像前面几节一样手动输入g++命令编译。如今QtCreator功能十分强大,包含项目模板生成、代码编辑、UI设计、QML界面编辑、调试程序、上下文帮助等丰富功能,而且支持手机平板设备、嵌入式设备等程序的开发调试。开发环境几乎涵盖之前所有工具,比如qmake、designer等。代码编辑模式8.1.5
Qt事件处理机制在Qt开发中,是以事件驱动UI工具集,包括信号和槽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店客户服务专员的招聘与面试技巧
- 企业级项目管理工具使用教程与培训
- 高职职业规划书
- 科大讯飞技术岗面试问题参考
- 中国移动各省公司网络优化方案
- 建筑行业产品经理的职责与面试要点
- 教培行业工会主席面试要点解析
- 群租房消防安全指南
- 房地产开发商区域总经理的项目推进计划
- 现代金融市场营销策略及实战案例解析
- 【10篇】新部编人教版小学语文六年级下册【课内外阅读理解专项训练(完整)】及答案+作文习作
- TCFPA 034-2024 海上油田消防物联网基本框架要求
- 2026年湖南高速铁路职业技术学院单招职业技能测试必刷测试卷附答案
- 高效执行四原则培训
- 电力与算力协同发展专委会:2025年电力与算力协同发展蓝皮书
- (2025年)(焊工)考试题库及焊工证模拟考试(含答案)
- 2025 年高职城市轨道交通机电技术(实训考核)技能测试卷
- 黄酒代理销售合同范本
- 护士精神科面试题库答案
- 2025至2030国内天然橡胶行业深度分析及产业运行态势及投资规划深度研究报告
- 研发项目全流程管理规范与执行细则
评论
0/150
提交评论