05_锅炉压力案例_java实现
最开始是有机顶盒,后来电视里面都带着一个安卓的设备.现在空调、冰箱、洗衣机都跃跃欲试地想把这个东西加上.海尔出了一款智能冰箱,就是在冰箱门上嵌了一个12寸的屏幕。这个屏幕实际上就是一个安卓的平板似的。就可以在厨房或者是冰箱上看着菜谱了。实际上就是个噱头,离所谓的智能家具还有点远。
工业的场合里面也可以去用到相关的安卓的设备。可能是做一些硬件的,可能他们公司做了一些仪表。早先仪表上显示的都是用linux,然后用qt画这个界面写这个东西,相对来讲实现起来会比较麻烦。所以好多仪表公司这个界面就不用纯linux去做了,也用一个安卓的设备。相对来讲安卓的操作系统还有谷歌去维护,比这个linux要靠谱一些。所以好多仪器仪表上也会用到咱们的安卓设备。如果你到了一个硬件的公司,怎么去跟硬件的公司进行配合。
举这个例子:锅炉压力
锅炉会监控它的压力值。像化工的场合,比如去搞石油,去做石油相关加工的这些东西都会涉及到我要把锅炉里面温度给它提高,提高温度最终的目的就是我搞一个密闭的容器,然后呢让液体产生的这个蒸汽充满这一个容器,充满容器之后就可以去利用蒸汽压来提高液体的沸点,从而进一步提高它反应的温度。但是密闭的容器一定会有一个承受压力的上限,这个时候一定会有一个压力表来监测这个锅炉的压力。
早期的压力表就是一个模拟的设备,模拟的设备就是有一个指针,用指针来显示这个状态。
现在老式的模拟的压力表可能用的比较少了,咱们可以搞一个数字的。数字的压力表可以搞一个柱状图,通过它的高和低来展示这个压力值。上面还可以显示一个具体的压力的值。现在可以把这个东西嵌到锅炉上。比如这个东西是安卓的设备,用安卓的设备的好处是可以对它实现一个远程的监控。
锅炉都会有泄压阀,这个不管是机械的也好还是数字的也好,都会实现锅炉压力到一定的范围之内都会自己弹起来,然后自己放气。没问题之后这个泄气阀再落下去。一旦有问题了,泄气阀抬起来了压力依然还往上走,那这个时候咱们可以通过安卓的设备给看锅炉的或者值班人员发短信或者打一个电话或者报警,告诉他赶紧过来然后呢。
实现锅炉压力的显示。用ProgressBar来展示它。ProgressBar在安卓里面是一个横向的进度条或者说是一个转圈。最终用这个东西显示不太靠谱。首先用ProgressBar来把基本的需求实现,接下来用自定义控件实现一个竖状的进度条。


压力值应该是有一个压力传感器,通过这个压力传感器把这个压力值给它读出来。怎么去跟压力传感器进行交互?肯定通过C的代码去驱动。驱动工程师会给你返回一个函数。你调这个函数就能拿到当前压力值的大小。由于要跟C进行交互,所以要用JNI.
首先调startMonitor获取到这个值之后,咱们就可以通过C的方法来回调这个setPressure(int pressure)把这个值pressure再给它设置进来.实际上你直接传也是可以的,比如说你startMonitor()可以给它返回一个int类型的值,然后我在java这边再去调setProgress(pressure)把这个参数给它设置进来,这样也没问题。现在咱们顺便把回调也复习一下,所以咱们现在通过回调的方式来做这个事。
java这边的代码就写完了
package com.itheima.pressurediagram; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar; public class MainActivity extends Activity { private ProgressBar pb_pressure; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb_pressure = (ProgressBar) findViewById(R.id.pb_pressure);
pb_pressure.setMax(100);
} public void start(View v){
startMonitor();
}
public void stop(View v){
stopMonitor();
}
public void setPressure(int pressure){//设置进度条的进度
pb_pressure.setProgress(pressure);
}
//开始检测压力的本地方法
public native void startMonitor();
//停止检测压力的本地方法
public native void stopMonitor();
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="start"
android:text="开始检测" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="stop"
android:text="结束检测" />
<ProgressBar
android:id="@+id/pb_pressure"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Horizontal"
/>
</LinearLayout>
回顾JNI开发的过程,把这些C这边的方法也给它写好。
05_锅炉压力案例_java实现的更多相关文章
- 06_锅炉压力案例_progressbar实现
相关的native方法可以用javah来生成一个头文件.拿着这个的MainActivity,用它来生成一个头文件. Signature是当前这个方法的方法签名.() V全空参数返回的是void. /* ...
- 【JNI】锅炉压力监测器
public class MainActivity extends Activity { private MyProgressBar pb; static{ System.loadLibrary(&q ...
- python-面向对象-05_面向对象封装案例 II
面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...
- android113 自定义进度条
MainActivity: package com.itheima.monitor; import android.os.Bundle; import android.app.Activity; im ...
- js地址下拉列表中全职工作
/******************************************************************* *输出全国各省辖市下拉列表项writeCitys() *输出企 ...
- python就业班-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...
- C# 历史曲线控件 基于时间的曲线控件 可交互的高级曲线控件 HslControls曲线控件使用教程
本篇博客主要对 HslControls 中的曲线控件做一个详细的教程说明,大家可以根据下面的教程开发出高质量的曲线控件 Prepare 先从nuget下载到组件,然后就可以使用组件里的各种组件信息了. ...
- easyui的增删改
陈旧的开发模式PM:“我要这个功能”后端:“这个先找前端做个模板”前端:“模板做完了”后端:“我来对接一下,这里样式不对”前端:“我改完了”后端:“功能交付”PM:“春节要加这个活动”后端:“这个先找 ...
- C#事件和委托(C#学习笔记03)
委托 1. C# 中的委托类似于 C 或 C++ 中指向函数的指针.委托表示引用某个方法的引用类型变量,运行时可以更改引用对象. 2. 特别地,委托可以用于处理事件或回调函数.并且,所有的委托类都是从 ...
随机推荐
- vue-router 根据路由动态添加目录 控制目录权限
<template> <el-row class="el-menu" > <el-menu router :default-active='$rout ...
- <input type="button" /> 和<input type="submit" /> 的区别
<input type="button" /> 这就是一个按钮.如果你不写javascript 的话,按下去什么也不会发生.<input type="s ...
- CPLD和FPGA中不同电压的JTAG电路设计注意事项
在初次的cpld电路设计的时候,遇到了这样的一个问题,整个系统是3.3V的系统,选用的cpld是XC9536-10VQ44C,芯片供电电压5V.他的io可以配置成3.3V和5V两种形式,因此,选用的时 ...
- 使用idea搭建ssh项目
参考: https://www.cnblogs.com/getchen/p/8036709.html 需要自己提前在数据库中建好表 然后连接数据库通过侧边栏的persistence来生成实体类和相应的 ...
- java发送短信验证码的功能实现
总结一下发送短信验证码的功能实现 (题外话:LZ是在腾讯云买的第三方(山东鼎信)短信服务平台的接口,1块钱20次的套餐来练手,哈哈,给他们打个广告,有需要的可以去购买哈,下面是购买链接短信服务平台购买 ...
- MyChrome制作Chrome浏览器便携版
Google Chrome官方离线下载地址: https://api.shuax.com/tools/getchrome MyChrome下载地址: http://code.taobao.org/p/ ...
- 搜索 比MySQL快10倍?这可能是目前AWS Aurora最详解读!
作者介绍 朱阅岸,中国人民大学博士,现供职于腾讯云数据库团队.研究方向主要为数据库系统理论与实现.新硬件平台下的数据库系统以及TP+AP型混合系统. 编者按 Aurora作为AWS云上的关系数据库 ...
- nyoj_308_Substring_201405091611
Substring 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 You are given a string input. You are to ...
- 洛谷——P2866 [USACO06NOV]糟糕的一天Bad Hair Day
https://www.luogu.org/problem/show?pid=2866 题目描述 Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are h ...
- php-fpm配置项
php版本:php-7.3 全局配置 ;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ; All relative ...