package com.youdian.shixun02.Datamanipulation;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
public class ConnectTask extends AsyncTask<Void, Void, Void> {
private Context context;
private Data data;
private TextView wendu;
private TextView shidu;
private TextView yanwu;
private TextView guanzhao;
private Float smoke;
private Float dataTemp;
private Float guanzh;
private Socket mSocket;
private Socket wSocket;
private Socket gSocket;
private SocketAddress wSocketAddress;
private SocketAddress mSocketAddress;
private SocketAddress gSocketAddress;
private InputStream inputStream;
private InputStream inputStreamat;
private InputStream inputStreamgun;
private OutputStream outputStream;
private OutputStream outputStreamat;
private OutputStream outputStreamgun;
private byte[] read_buff;
private byte[] read_buffs;
private Boolean STATU = false;
private Boolean CIRCLE = false;
public ConnectTask(Context context, Data data, TextView wendu, TextView shidu, TextView yanwu,TextView guanzhao) {
this.context=context;
this.data=data;
this.wendu=wendu;
this.shidu=shidu;
this.yanwu=yanwu;
this.guanzhao=guanzhao;
}
/**
* 更新界面
*/
@Override
protected void onProgressUpdate(Void... values) {
if (STATU) {
Toast.makeText(this.context, "连接正常", Toast.LENGTH_SHORT)
.show();
Thread.interrupted();
} else {
Toast.makeText(this.context, "断开连接", Toast.LENGTH_SHORT)
.show();
}
yanwu.setText(String.valueOf(data.getYanwu()));
wendu.setText(String.valueOf(data.getWendu()));
shidu.setText(String.valueOf(data.getShidu()));
guanzhao.setText(String.valueOf(data.getGuanzhao()));
}
//开启子线程
@Override
protected Void doInBackground(Void... voids) {
mSocket = new Socket();
mSocketAddress = new InetSocketAddress(Constant.IP, Constant.port);
wSocket=new Socket();
wSocketAddress=new InetSocketAddress(Constant.IPs,Constant.portat);
gSocket=new Socket();
gSocketAddress=new InetSocketAddress(Constant.IPguan,Constant.portguan);
try {
// socket连接
mSocket.connect(mSocketAddress, 3000);// 设置连接超时时间为3秒
wSocket.connect(wSocketAddress,2000);
gSocket.connect(gSocketAddress,2500);
if (mSocket.isConnected()) {
setSTATU(true);
inputStream = mSocket.getInputStream();// 得到输入流
outputStream = mSocket.getOutputStream();// 得到输出流
} else {
setSTATU(false);
}
if (wSocket.isConnected()) {
setSTATU(true);
inputStreamat = wSocket.getInputStream();// 得到输入流
outputStreamat = wSocket.getOutputStream();// 得到输出流
} else {
setSTATU(false);
}
if (gSocket.isConnected()) {
setSTATU(true);
inputStreamgun = gSocket.getInputStream();// 得到输入流
outputStreamgun = gSocket.getOutputStream();// 得到输出流
} else {
setSTATU(false);
}
// 循环读取数据
while (CIRCLE) {
// 查询烟雾值
StreamUtil.writeCommand(outputStream, Constant.SMOKE_CHK);
Thread.sleep(200);
read_buff = StreamUtil.readData(inputStream);
smoke = FROSmoke.getData(Constant.SMOKE_LEN, Constant.SMOKE_NUM, read_buff);
if (smoke != null) {
data.setYanwu((int)(float)smoke);
}
//查询温度
StreamUtil.writeCommand(outputStreamat,Constant.TemHum);
Thread.sleep(200);
read_buff = StreamUtil.readData(inputStreamat);
dataTemp = FROTemHum.getTemData(Constant.TemHum_LEN, Constant.TemHum_NUM, read_buff);
if (dataTemp != null) {
data.setWendu((int)(float)dataTemp);
}
dataTemp = FROTemHum.getHumData(Constant.TemHum_LEN, Constant.TemHum_NUM, read_buff);
if (dataTemp != null) {
data.setShidu((int)(float)dataTemp);
}
//查询光照
StreamUtil.writeCommand(outputStreamgun, Constant.GunHum);
Thread.sleep(200);
read_buffs = StreamUtil.readData(inputStreamgun);
guanzh = FROGuan.getDatad(Constant.GunHum_LEN, Constant.GunHum_NUM, read_buffs);
if (guanzh != null) {
data.setGuanzhao((int)(float)guanzh);
}
// 更新界面
publishProgress();
Thread.sleep(200);
}
} catch (IOException e) {
setSTATU(false);
publishProgress();
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
/**
* 判断socket是否还在连接
*
* @return
*/
public Boolean isSuccess() {
return mSocket.isConnected();
}
/**
* 获取socket
*
* @return
*/
public Socket getmSocket() {
return mSocket;
}
/**
* 获取输入流
*
* @return
*/
public InputStream getInputStream() {
return inputStream;
}
/**
* 获取输出流
*
* @return
*/
public OutputStream getOutputStream() {
return outputStream;
}
public Boolean getSTATU() {
return STATU;
}
public void setSTATU(Boolean sTATU) {
STATU = sTATU;
}
public Boolean getCIRCLE() {
return CIRCLE;
}
public void setCIRCLE(Boolean cIRCLE) {
CIRCLE = cIRCLE;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于FRO单片机智能家居数据获取展示APP+全部资料+详细文档(高分项目).zip
共62个文件
xml:17个
png:17个
java:15个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 135 浏览量
2024-05-11
17:44:37
上传
评论
收藏 306KB ZIP 举报
温馨提示
【资源说明】 基于FRO单片机智能家居数据获取展示APP+全部资料+详细文档(高分项目).zip基于FRO单片机智能家居数据获取展示APP+全部资料+详细文档(高分项目).zip基于FRO单片机智能家居数据获取展示APP+全部资料+详细文档(高分项目).zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于FRO单片机智能家居数据获取展示APP+全部资料+详细文档(高分项目).zip (62个子文件)
详细文档.md 3KB
Smart-Home-master
gradle.properties 728B
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 233B
app
src
androidTest
java
com
youdian
shixun02
ExampleInstrumentedTest.java 724B
test
java
com
youdian
shixun02
ExampleUnitTest.java 381B
main
java
com
youdian
shixun02
AboutActivity.java 976B
Datamanipulation
CRCValidate.java 6KB
HexStrConvertUtil.java 2KB
StreamUtil.java 2KB
ByteToFloatUtil.java 1KB
FROGuan.java 1KB
ConnectTask.java 6KB
FROTemHum.java 3KB
FROSmoke.java 1KB
Constant.java 852B
Data.java 746B
StartPageActivity.java 862B
MainActivity.java 4KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
values
colors.xml 208B
strings.xml 75B
styles.xml 383B
layout
activity_main.xml 5KB
activity_about.xml 2KB
activity_start_page.xml 383B
drawable
ic_launcher_background.xml 5KB
checked1.png 7KB
cheakfa.png 7KB
checked2.png 7KB
zhineng_meitu.png 111KB
cheackt.png 9KB
toggle_btn.xml 262B
wenshi.png 7KB
back.png 4KB
AndroidManifest.xml 1KB
proguard-rules.pro 751B
build.gradle 931B
.gitignore 7B
gradlew.bat 2KB
build.gradle 558B
.idea
codeStyles
Project.xml 2KB
runConfigurations.xml 564B
vcs.xml 167B
misc.xml 357B
gradle.xml 626B
settings.gradle 15B
gradlew 5KB
.gitignore 203B
171265889347208773632.zip 416B
共 62 条
- 1
资源评论
不走小道
- 粉丝: 3209
- 资源: 5120
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功