《基于安卓手机的无线数字化磁力仪毕业论文(36页).doc》由会员分享,可在线阅读,更多相关《基于安卓手机的无线数字化磁力仪毕业论文(36页).doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于安卓手机的无线数字化磁力仪毕业论文-第 29 页本科毕业设计论文题 目 基于安卓手机的无线数字化磁力仪 专业名称 电子信息工程 学生姓名 张松涛 指导教师 * 毕业时间 2015/6 设计论文 毕业 任务书一、题目基于手机的无线数字化磁力仪二、研究主要内容接收来自WiFi模块的的磁力仪数据,在移动设备上进行数据处理与显示,并进行相关数据分析。三、主要技术指标1接收通过WiFi模块传送来的数据,满足传输速率2Mbps 2根据传送来的数据分析出磁场情况。并且能够实时显示磁场数据。 3可以对历史采集数据进行存储,并能随时调用。四、进度和要求1 2 周:初步了解Android软件的编写步骤和方法
2、,安装虚拟机运行Android SDK,安装调试好编程软件Eclipse。3 4 周:翻译3000字左右相关英文文献,学习Java语言,及其开发环境。5 6 周:熟悉WiFi的工作原理并进行相关的简单编程。7 8 周:编写软件框架及代码,实验软件框架的流畅完美运行。9 - 10周:进一步编写软件及调试。11-12周:与硬件联机调试解决程序Bug。13-14周:完成软件整体测试。15-16周:提交论文。制作答辩电子稿,准备答辩。五、主要参考书及参考资料1刘仙艳移动终端开放平台AndroidJ信息通信技术,2011,05(4):50-53DOI:10.3969/j.issn.1674-1285.2
3、011.04.0092于士鹏Android平台下双屏幕切换显示的设计及实现D东南大学,2010 学生学号 学生姓名 指导教师 系主任 本科毕业设计论文题 目 基于手机的无线数字化磁力仪 专业名称 03041102 学生姓名 张松涛 指导教师 李 斌 毕业时间 2015/6/20 摘 要Android是一款针对移动设备的操作系统和软件平台,随着智能手机的兴起,渐渐成为占有市场比重最大的移动平台操作系统。Android采用Linux内核,由Goodle和开放手机联盟于2007年11月5日发布,可以使用Java语言开发和管理代码。目前,Android系统的软件越来越多,从聊天、教育、影视、购物、生活
4、、新闻、办公软件到各种单机、网络游戏等软件,而上位机软件大多为 PC端软件,由于PC 携带不方便,不利于随时随地的对数据进行处理和分析,而Android软件恰好可以解决PC端存在的问题,让使用更加方便、快捷。本文是针对硬件磁力仪做的Android手机端上位机软件,安装在具有安卓系统的手机或平板上,安卓版本为4.0.3以上。硬件磁力仪是对指定区域进行磁场测量,并将测试的数据上传到上位机,Android端软件对接收到的磁场信息进行处理并实时以波形的形式进行显示,方便对测量地区磁场值变化进行观测以及对各种磁场信息进行统计与分析。本文的主要研究内容包括:Android软件开发平台搭建,软件需求分析,软
5、件界面设计,Java类设计,软件各个模块测试、调试与结果分析。关键词:Android,Java,磁力仪 ABSTRACTAndroid is an operating system and software platform for the mobile device. Android gradually become the largest mobile platform operating system in the possession of the market share with the rise of the smart mobile phone. Android uses th
6、e Linux kernel. Android released by the Google and the open mobile phone consortium in November 5, 2007, and use Java language to develop and manage code. At present, the Android system has more and more software, that is from chat、education、film、shopping、life、news、office software to a variety of Si
7、nge-Player Gamesinge-player games、network games and so on. The software of upper computer is mostly software of PC. PC is inconvenient to carry and cant anytime to analysis and use the data. But the Android software can solve problems of PC. The Android software become more convenient and fast. 本文是针
8、对硬件磁力仪做的Android手机端上位机软件,安装在安卓系统的手机或平板上,安卓版本为4.0.3以上。硬件磁力仪是对指定区域进行磁场测量,并将测试的数据上传到上位机,Android端软件对接收到的磁场信息进行处理并实时以波形的形式进行显示,方便对测量地区磁场值变化进行观测以及对各种磁场信息进行统计与分析。This thesis makes a client software that can install on Android mobile phone or tablet. The version of Android is more than 4.0.3. A client hardwa
9、re measures magnetic field, and transfers data to the upper computer. Android client software receives the information of magnetic field and displays the information with waveform. Android client software is convenient to measure the area of magnetic field, and can statistic or analysis the informat
10、ion of magnetic field. 本文的主要研究内容包括:Android软件开发平台搭建,软件需求分析,软件界面设计,Java类设计,软件各个模块的测试、调试和结果分析。The main research of this thesis include: Android Software platform, software requirements, interface of software, Java class, testing, debugging and results of the software.KEY WORDS : android,java,client目 录第
11、一章绪论11.1 本文的研究背景和意义11.2 研究现状21.3 本文所做的工作21.4 本文的组织结构2第二章 相关技术介绍42.1 Android平台42.1.1 安卓平台特性42.1.2 安卓平台架构42.1.3 安卓Android市场52.1.4 安卓应用程序模块62.1.5 安卓平台优点72.2Android软件开发语言72.2.1 Java语言72.2.2 语言特性72.3 Android开发环境82.4 Android Socket 通信原理介绍92.4.1 Socket 定义与分类92.4.2 Socket 的基本通信模型102.4.3 Socket 基本实现原理和方式102.
12、5 Java多线程112.5.1 多线程的定义112.5.2 Java 多线程的实现122.5.3 线程的四种状态122.3.4 线程的优先级、同步及阻塞122.6 小结13第三章 需求分析153.1 功能分析153.1.1 传输数据功能分析153.1.2 数据处理功能分析153.1.3 存储数据功能分析153.1.4 波形绘制功能分析163.1.5 历史数据删除功能分析173.2 非功能需求分析173.3 小结17第四章 详细设计和实现184.1 Android开发平台的搭建184.1.1 JDK的安装184.1.2 SDK的安装194.1.3 Eclipse下载与安装204.1.4 ADT
13、插件安装及配置214.2 系统研究思路234.2.1 整机系统234.2.2 软件流程图244.3 软件界面图254.3.1 软件界面设计254.3.2 软件按钮事件界面设计274.3.3 软件运行消息提示设计284.4 软件采用类284.5 系统实现的软硬件平台344.6 小结34第五章 系统测试355.1测试目标355.2测试方案355.3测试环境355.4 测试内容355.4.1 功能测试355.4.2 恢复测试365.4.3 可用性测试365.4.4 环境兼容性测试365.5 测试结果375.6 小结38第六章 结论与展望396.1总结396.2展望39参考文献40致 谢41毕业设计小
14、结42第一章 绪论1.1 本文的研究背景和意义随着科学技术的不断进步,尤其是嵌入式硬件技术的飞速发展,促使电子产品给人们带来了很多便利,这些便利已遍布在人们生活中的方方面面,尤其是智能手机的飞速发展更是让人类的生活有了前所未有的巨大变化,智能手机以其高科技含量和越来越低的价位逐渐成为了当代青年的必不可少的科技产品。智能手机不仅为人们提供了大量的娱乐工具,而且在工作和学习中也伴演着重要的角色, 人们的生活中已经无法缺少智能手机的使用。Google 在 2013 年 7 月发布了关于智能手机使用情况的调查报告,报告中表明,智能手机在中国的普及率得正在迅速迅提升,从 2012 年的 47%上升到现在
15、的 76.7%,几乎一半的中国居民已经使用智能手机。智能手机在存储能力、用户交互能力和CPU 处理能力等功能上正在不断的提高,手机CPU已经从开始的单核发展为如今的八核,位数从32位到如今的64位,存储空间也从有开始的512M发展为128G,运行内存从开始的256M发展到如今的4G。智能手机越来越强大的硬件配置,为手机的强大的使用功能打下了坚定的基础。现今,主流智能手机操作系统现分为三大类,分别是 Android 操作系统、IOS 操作系统和Windows Phone 操作系统,这三种主流操作系统中只有 Android 是为开源的操作系统,2013 年年初 IDC(国际数据中心)公布了智能手机
16、销量的统计数据,该数据显示 2012 年第四季度,Android 智能手机的销售量为 1.598亿台,市场占有率为 70.1%,排名第一,比去年同比增幅 88%,并保持良好的上涨态势。到2014年第三季度Android以83.6%的市场占有率稳居移动操作系统市场之首,出货量为2.68亿,去年同期为2.06亿,市场份额由81.4%上升至83.6%。Android 操作系统的开源发布使 Android手机得到了空前迅速的发展,其广泛的应用性和高度的开放性使Android软件越来越多,2014年谷歌Play Store的应用数量便达到了143万。这些应用不仅在界面色彩搭配上给人一种耳目一新的感觉,而
17、且因为这些应用促使手机的功能越来越强大。 Android 手机的大范围普及普及必定会促使人们进一步考虑到如何利用 Android 手机的便携性实现在PC机上的娱乐和工作。将PC软件或游戏制作成Android 应用具有广阔的的前景。因此,研究 Android 手机软件,开发 Android 手机软件,将安卓手机作为上位机来代替之前的PC机,将会给带来较大的实用价值,进一步给人们的工作和生活带来便利。1.2 研究现状纵观 Android 智能手机的发展历程,令人叹为观止的Android应用软件层出不穷,目前Android手机应用软件中比较成熟的软件,相对集中于游戏、影音娱乐、移动办公、图书阅读、摄
18、影摄像、手机管理、新闻、智能家居等方面。 手机应用软件大体上分为两类,即单机应用软件和交互应用软件,单机应用软件是指仅需要手机终端的支持就可使用的应用软件,如单机游戏、办公软件、摄影摄像、手机管理等。交互应用软件是指需要手机终端和其它终端或服务端共同支持的应用软件,如,地图应用软件、聊天工具、影视应用软件、网络游戏等,一般需要网络和相关服务器支持。智能家居,Google 在 2011 年 5 月就提出过 androidHome 这个全新的概念,这个概念中将安卓手机作为控制中心,PC 做为网关接收中心,安卓手机在任何时间、地点的发出的控制命令经互联网传输到 PC 后,由 PC 处理这些控制命令来
19、控制家电。除此之外,安卓手机可以代替传统PC作为上位机,与特定硬件进行信息传输。 1.3 本文所做的工作本文首先分析了智能手机的发展现状,并选择了普及率最高和开源的 Android 智能手机为开发平台,研究了其系统构架和 Socket 通信,结合磁力仪Windows平台上位机软件,设计制作了Android端上位机应用软件,便于随时随地的使用分析数据,最后本文对此类应用软件的发展进行了展望。,本论文的主要工作如下:(1)(1)了解 Android 应用开发平台,并搭建 Android 应用开发平台。(2)(2)了解,掌握 Android 应用开发语言,即Java语言。(3)(3)编写磁力仪安卓手
20、机端应用软件。(4)(4)对应用软件进行测试,调试。1.4 本文的组织结构本文一共由六章组成,各章的结构安排如下: 第一章:绪论。,包括本文的研究背景,研究现状,工作内容和文章结构。第二章:相关技术介绍。,包括 Android 平台介绍,安卓开发语言介绍,网络通信协议介绍。第三章:需求分析。,包括功能分析和非功能分析。第四章:详细设计和实现。,包括 Android 平台搭建,软件流程介绍,软件界面介绍和相关类介绍。第五章:软件测试。,包括测试方法、,测试内容和测试结果。第六章:结论与展望。第二章 相关技术介绍2.1 Android平台Android 是专门为移动设备开发的平台,其中包括操作系统
21、、中间件和核心应用等。Android 最早是由Andy Rubin 创办,于 2005 年被 Google 收购。2007年11月5日,Google 正式发布 Android 平台1。2.1.1 安卓平台特性 Android 平台具有以下特性:允许重用和替换组件的应用程序框架;专门为移动设备优化的 Dalvik 虚拟机;基于开源引擎 WebKit 的内置浏览器;自定义的 2D 图形库提供了最佳的图形效果,此外还支持基于 OpenGL ES 1.0 规范的 3D 效果(需要硬件支持);支持数据结构化存储的 SQLite;支持常见的音频、视频和图片格式(例如 MPEG4、H.264、MP3、AAC
22、、AMR、JPG、PNG、GIF);SM 电话(需要硬件支持);蓝牙、EDGE、3G 和 WiFi(需要硬件支持);摄像头、GPS、指南针和加速计(需要硬件支持);包括设备模拟器、调试工具、优化工具和 Eclipse 开发插件等丰富的开发环境。2.1.2 安卓平台架构Android 平台主要包括 Applications、Application Framework、Libraries、Android Runtime 和 Linux Kernel 几部分,如图 2-1 所示。 Applications(应用程序) Android 提供了一组应用程序,包括 Email 客户端,SMS 程序,日历,
23、地图,浏览器,通讯录等。这部分程序均使用 Java 语言编写。 Application Framework(应用程序框架)无论是 Android 提供的应用程序还是开发人员自己编写的应用程序,都需要使用 Application Framework。通过使用 Application Framework,不仅可以大幅度简化代码的编写,而且可以提高程序的复用性。 Libraries(库) Android 提供了一组 C/C+ 库,它们为平台的不同组件所使用。开发人员通过 Application Framework 来使用这些库所提供的不同功能。图2-1 Android 平台架构 Android Ru
24、ntime(Android运行时) Android 运行时包括核心库和 Dalvik 虚拟机两部分。核心库中提供了 Java 语言核心库中包含的大部分功能,虚拟机负责运行程序。Dalvik 虚拟机专门针对移动设备进行编写,不仅效率更高,而且占有更少的内存。 Linux Kernel(Linux内核)Android 平台使用 Linux2.6 版内核提供的核心系统服务,包括安全性、内存管理、进程管理等。2.1.3 安卓 Android市场 安卓是 Google 公司开发的基于 Linux 内核的开源操作系统,它包含了移动设备工作所需的总和:包括操作系统、用户界面和应用软件。目前仅仅使用 Linu
25、x 操作系统的智能手机非常少见,但是基于 Linux 的 Android 操作系统正飞速的抢占市场份额。在移动产业飞速发展的今天,市场对智能手机的需求越来越大,如在现今大学校园中几乎人手一部智能手机,同时智能手机几乎每年换一部。随着移动互联网的用户规模的快速增长,安卓智能手机也在快速的发展中,其价格不断的创造历史新低,促使人人都能拥有一部智能手机。目前,智能手机已经成为人们休闲娱乐、生活办公、获取知识的一个重要移动终端设备,促使整个社会的智能手机产业链不断的完善,智能手机的功能在不断的强大,智能手机用户也在不断的增加。安卓系统飞速的发展归结于其强大的使用功能和源代码的开放,这表明只要有一定专业
26、基础的人都可以在网上下载自己需要的安卓源代码并按自己的设计进行一定的修改,生成自己的应用。这一特点可以促使大量的个人、团队结合自己的开发能力和创意来修改制定自己独特的操作系统,做出富有人性化、创意化与个性化的安卓设备。如中国小米公司基于 Android 操作系统制作的 MIUI 系统已经超过1亿的使用量。从美国来看,2010 年 8 月3 日早间公布了安卓手机在美国市场销售量首次超过苹果 iPhone,并且在美国智能手机销售市场中占27%的份额。对于其他国家,安卓智能手机主宰了欧洲主要市场的销售额,销售份额超过60%的国家包括::英国、西班牙、法国、意大利等国家。而对于中国市场,安卓手机已经占
27、据上风,在现今的中国智能手机市场中,国内众多品牌占据了巨大的市场销售比例如:小米、魅族、华为、中兴、酷派、联想等,同时国内品牌手机正在不断的超越国外著名企业的销售额。2.1.4 安卓应用程序模块Android 应用软件由 Activity、Intent、Content Provider、Service 这4大模块构造而成1。本系统主要用的模块为 Activity。其中Activity是最基本的模块,一般称为“活动”,在应用软件中,一个Activity通常就是一个单独的显示界面。换句话所,Activity代表一个用户所能看到的屏幕显示内容,主要用于处理应用软件的整体性工作,所有应用软件的 Act
28、ivity 都继承于 android.app.Activity 类,该类是 Android 提供的基层类,其它 Activity 继承该父类后,通过父类的方法来实现各种各样的功能。在 Android 中,Activity 拥有 Running、Paused、Stoped 和 Killed 四种基本状态。Runing 为启动个新Activity,启动后显示在屏幕最前端,处于栈的最顶端,此时它处于可见并可人机交互操作的激活状态。Paused 为 Activity被另一个透明 Dialog 样式的 Activity 覆盖时的状态。此时它依旧与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但
29、却失去了焦点,不能进行人机交互操作。Stoped 为 Activity 被新的 Activity 覆盖并失去焦点,此时旧的Activity 不可见,新的 Activity 可见,并可操作。Killed Activity 被系统杀死并回收或者处于未启动状态。当一个 Activity 实例被创建、销毁或启动另一个Activity 时,Activity 在这四种状态之间进行相互转换,这种转换的发生依赖于用户对软件的操作。2.1.5 安卓平台优点安卓平台拥有以下四种主要优点:(1)(1)开放性。安卓平台基于 BSD 协议,并鼓励开发人员共享自己的开发源码,同时也可以对自己的源码进行加密,这大大促进了安
30、卓平台在现今市场中的发展。(2)(2)非垄断性。其他操作系统,如:微软公司的 Windows Phone 和苹果公司的IOS,都是垄断性的。而安卓平台是非垄断性的,开发者可以制定自己的操作系统、制定自己的云计算和制定自己的应用商店。(3)(3)硬件跨平台。由于安卓平台的开放性和强大的兼容性,同一款应用软件可以是在不同厂商,不同型号的安卓手机或平板上正常运行。(4)(4)并行运行模式。安卓操作系统支持多任务操作,如:在打开音乐软件进行听歌时,可以打开办公软件,同时进行办公。2.2 Android软件开发语言Android 软件开发有多种语言,Java 语言是编写 Android 软件最常用的编程
31、语言,本软件便是使用 Java 语言开发的。Java 语言是于 1995 年由 Sun 公司推出的一种极富创造力的面向对象的程序设计语言,它是由有 Java 之父之称的 Sun 研究院院士詹姆斯戈士林博士亲手设计完成的,并完成了 Java 技术的原始编译器和虚拟机2。Java 语言由美国Sun Microsystems 的 Tames Goslin 等人发明的一种面向对象程序设计语言,支持封装性、多态性和继承性。2.2.1 Java语言Java 语言的出现是源于对独立平台语言的需求,这种语言要求所编写的程序不会因为芯片的变化而发生程序无法运行或出现运行错误。目前 Java 语言的优势越来越明显
32、,并且已经成为网络时代一门非常重要的编程语言,同时也是目前十分流行的高级程序设计语言,仅次于C语言,特别适合于网络应用程序的开发。2007 年 11 月 5 日,已经成长为互联网领域内巨人的 Google 发布了一款 Android 手机操作系统平台。Android 采用 JDK (Java开发工具包) 的替代品,同时采用 Dalivk 虚拟机来替代 JVM 虚拟机(Java虚拟机),由此可以得出 Java 语言是 Android 编程的核心,在 Android 应用中的流程处理、算法、网络等都是由 Java 语言编写的。2.2.2 语言特性Java 语言具有以下特性:简洁性:Java 语言是
33、从 C+ 延生而来,其语言风格与 C+ 相似但是比 C+ 使用简单,Java 语言删掉了 C+ 中一些不是绝对必要的事物,比如头文件、结构、指针、联合、隐式的类型转换和操作符重载等。安全性:Java 语言中,一切对内存的访问都是通过对象实例来实现的,是为了防止用户在网络系统或分布系统的环境下使用木马等不安全手段访问对象的私有项目或文件。并且 Java 语言不支持 C 语言的内存单元指针,在 C 语言中是通过符号指针来引用内存单元指针,通过符号指针来引用内存,符号指计在 Java 运行系统运行时被解释为实际内存地址,同时 Java 语言提供了专门的内存管理机制来管理内存地址。同时,Java 语言
34、在码的传输中使用了公开密钥加密机制来保证数据安全,并且在运行环境中提供了四级安全保障机制(字节码校验器、运行时内存布局、类装载器、文件访问限制)。动态性:Java 语言的类是通过动态装载入运行过程中所需要的类,这种方法可以解决 C+ 在增加子类而没有编译时所出现的程序崩溃现象。同时 Java 语言的滞后联编机制可以重复利用面向对象编程风格的优点,实现了即插即用的功能。可移植性:使用 Java 语言编写的程序可以不经过任何修改就可以在不同的硬件和软件平台上运行,因此 Java 编译器所生成的可执行代码是基于 Java 虚拟机实现的。高性能性:由于 Java 编译生成的字节码和机器码非常相近,因此
35、 Java 语言的执行效率非常接近于 C 和 C+ 的执行效率。多线程性:多线程指利用系统的空闲来执行一些常规过程,Java 语言提供多线性语言支持,可以提高程序执行效率。就像安排不同人分别完成项目的不同任务,使项目的完成速度提高了很多倍,相当于提高了执行效率。分布性: Java 语言是一种适用于网络通信的编程语言。Java 语言提供的类库中支持 TCP/IP 通信协议,可以通过 URL 地址访问网络上资源。解释性: Java 语言是通过解释来执行的,使用 Java 语言时,首先使用编译器将代码编译为字节码,然后通过 Java 解释器进行解释执行,相比于 C+ 语言被编译为本地指令后执行有非常
36、独特的区别。2.3 Android开发环境本软件开发采用自由集成开发环境 Eclipse,Eclipse 最早是由 IBM 公司研发的,其前身为 ffiM 的 Visual Age,后来 IBM 将 Eclipse 作为开放源代码的项目发布。Eclipse 是著名的跨平台开源集成开发环境,主要用于Java语言开发,是世界上最大的开源组织的产品,Eclipse 本身只是一个框架和一组服务,但是可以支持很多插件,也可以认为 Eclipse 中除了内核,其它所有的东西都是插件。在实际使用时,不仅可以使用原有的经典插件,也可以使用自己开发的特色插件,因此 Eclips 获得了许多软件开发商的钟爱。Ec
37、lipse的基础是客户机平台(即RCP)。RCP 主要包括以下组件:用于启动 Eclipse 以及运行插件的核心平台、标准集束框架(OSGi)、可移植构件工具包(SWT)、用于文件缓冲,文本处理的文本编辑器(JFace)、Eclipse 工作台(包括Workbench),,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards)。Eclipse 的开 发环境组件包括::工作区(Workspace)、工作台(Wordbench)、透视图(Perspective)三个部分组成。工作区主要负责管理使用资源、统计便通知插件资源变化信息。工作台主要负责
38、管理项目和资源,它还可以根据文档的类型选择合适的文档编辑器。透视图包括视图和编辑器,用户可以在多个透视图中进行切换编辑,其中常见的有 JavaAVA 透视图(Java Perspective)、资源透视图(Resouece Perspective)、调试透视图(Debug Perspective)、小组同步透视图(TeamSynchronizing Perspective)。Eclipse 还包含许多视图,通过它们可以从各个实业看整个项目,使得工程建立的更完美。Eclipse 具有三大优点:(1) (1)Eclipse 是一个开放源代码的平台,任何个人或组织可以免费使用和获得该软件的特权。(2
39、) (2)Eclipse 具有可扩展性和可配置性,使用各种插件来构建开发环境,即是一个框架和一组服务。(3) (3)Eclipse 可以实现对多重平台特性的支持。因此开发者可以使用自己擅长的平台,例如 Windows、MacOS、Linux 等。2.4 Android Socket 通信原理介绍Android 操作系统具有 HTTP 通信和 Socket 通信两种常用的通信方式。其中 HTTP 连接只有用户请求时才会建立连接通道,即使用“请求响应”的方式,客户端向服务器发送请求后,服务器端才向客户端返回数据。使用 Socket 通信时,首先双方之间建立的连接,即客户端连接服务端,连接成功后,可
40、直接进行数据的传输,建立连接后便没有服务端和客户端的区别,即双方都可以主动发送信息,本论文中的所有通信都采用 Socket 实现。2.4.1 Socket 定义与分类 Socket 为接收和发送应用软件之间的数据的抽象层,应用软件可以通过 Socket 将软件添加到网络中,并且可与同一局域网中的其他应用软件实现网络通信。Socket 为通信的应用软件提供了数据传输通道,并且提供了软件内部与外界通信的端口。Socket 通信的实现根据不同的的底层协议可分为多种方式。本论文中仅用到了 TCP/IP 协议中的 Socket 内容。其中流套接字(streamsocket)和数据报套接字(datagra
41、msocket) 是该协议中最为重要的 Socket 类型。在流套接字中采用 TCP 作为点对点通信协议,保证了字节流的可靠性。数据报套接字的数据打包发送服务采用 UDP 通信协议完成。其中,TCP 协议是一种固定连线为基础的协议,TCP 可以保证从一端数据送至另一端时,数据能够确实送达,而且抵达的数据的排列顺序和送达的顺序相同,因此,TCP 协议适合可靠性要求比较高的场合。UDP 协议是无连接通信协议,不保证可靠数据的传输,但能够向若干目标发送数据,接受发自若干源的数据。 UDP 是以独立发送数据包的方式进行。UDP 协议适合于对数据准确性要求不高的场合。本文中的上位机应用软件均采用流套接字
42、,即将 TCP 作为端对端协议的方式。2.4.2 Socket 的基本通信模型图 2-2 为 Socket 通信的基本模型。 左右两边的应用软件分别为装在服务端和客户端的平台上,应用之间通过底层的 Socket 套接字通信。而本论文中的服务端为上位机应用软件,即本论文需要做的 Android 软件,而客户端为硬件磁力仪,使用嵌入式编程编写的客户端,也是通过底层的 Socket 套接字通信。图2-2 Socket 通信基本模型。2.4.3 Socket 基本实现原理和方式 基于 TCP 协议的 Socket 通信的基本原理和方式:服务器端首先生成一个 ServerSocket 对象,其参数为一个
43、整型数,它表示一个未被占用的端口号,然后调用 Serversocket 的 accept() 方法来接收客户端发送的数据。当没有数据发送时,accept() 方法处于堵塞状态,只有接收到数据后,可通过 inputstream 流(数据输入流)读取到所接收的数据。 在客户端创建一个 Socket 对象,有两个参数,分别代表服务器端的 IP 地址和服务端设置的端口号,,Socket 对象通过 inputstream 流来读取数据,获取服务器发送的数据,然后把需要发送到服务端的数据写入到 outputstream 流(数据输出流)中实现 socket 数据传输。图2-3为基于 TCP 协议的 Soc
44、ket 通信流程图。图2-33 基于 TCP 协议的 Socket 通信流程图2.5 Java多线程 世间万物都可以同时完成很所工作,例如,人体可以同时进行呼吸、血液循环、思考问题等活动。这种思想在 Java 中成为并发,而将并发完成的每一件事情称为线程2。本节是对 Java 线程的详细介绍。2.5.1 多线程的定义 多线程是一种允许在程序中同时执行多个指令流的机制,各线程之间是互相独立的,它与进程相同,各自拥有各自独立的执行空间,由操作系统进行分配,线程没有独立的存储空间,进程与线程共同分享一个存储空间。多线程的执行是并发的,并发是指在逻辑上可认为是同时发生的,但是在物理上并不是同时发生。由
45、于 CPU 的运行速度非常快,用户根本无法察觉到线程在物理上的非并发效果,因此,在一般情况下可以认为各个线程是同时执行的。在一般情况下多线程之间的执行顺序是随机的,对于该次执行哪条线程从而带来的线程调度与同步等问题,将会交给专门的关键字机制来处理。2.5.2 Java 多线程的实现 Java 多线程的实现方式有以下两种: 扩展 java.lang.Thread 类。继承于 Thread 类,使用时必需覆盖 run() 方法,即把将要执行的代码添加到 run() 方法中。这种方法有一个缺点,当该类已经继承另一个类后不能再继承该类。 实现 java.lang.Runnable 接口。Runnabl
46、e 接口只有一个 run() 方法,当某个类实现 Runnable 接口时需要重写该方法,即把线程要执行的代码写入该方法中。 通过调用线程 Thread 对象的 start() 方法可以开启线程。对于 Java 来说,run() 方法表示新线程所要调用的方法名称。因此,在 Runnable 上或 Thread 上调用 run() 方法仅仅是和普通代码一样执行,并不能启动新的线程。2.5.3 线程的四种状态 线程具有生命周期,其中最主要的有四种状态,分别为创建状态、可执行状态、死亡状态与阻塞状态。 创建状态:线程已经创建完毕,但 start() 方法未被调用,此时线程未启动。 可执行状态:线程可以执行,但不一定处于运行状态。CPU 的占用时间随时可以分配给该线程。 死亡状态:正常情况下 run() 方法执行完毕后就表示该线程的死亡。除此之外也可以调用 stop() 或 destroy() 方法使正在运行的线程结束。但不建议使用这两种方法,因为 stop() 方法可能会产生异常,而 destroy() 方法是强制终止,它不会释放锁,会导致其它线程也无法得到执行时间。 阻塞状态:此时线程无法执行,因为 CPU 不会为其分配执行时间。2.3.4 线程的优先级、同步和阻塞 (1)(1)线程优先级。线程的优先级用来指定该线程的优先执行顺序,即当多个线程同时进入可执行状态时