模拟冰箱系统,选用设备:电动推杆(模拟冰箱门),行程开关,照明灯(ADAM4150), 温度传感器 zigbee。
1)实时获取温度数据。
2) 界面上的长按开冰箱、长按关冰箱按钮能控制冰箱门的开关。
3) 通过行程开关来监控冰箱门拉开到一定距离以上时来打开冰箱内的照明灯,反之关闭。
4) 界面上要有灯开关动画效果。
package com.coolweather.monidianbingxiang;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import com.nle.mylibrary.forUse.mdbus4150.Modbus4150;
import com.nle.mylibrary.forUse.zigbee.ZigBee;
import com.nle.mylibrary.transfer.DataBusFactory;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
private ImageButton btnMore;
private ImageView ivFridge,ivLight;
private Button button1,button2;
private TextView tvTem;
private boolean isOpenFridge,isOpenLihgt,isCloseFridge;
private AnimationDrawable fridgeA;
private Modbus4150 modbus4150;
private ZigBee zigBee;
private String tem="";
private DecimalFormat df=new DecimalFormat("00.00");//小数处理
private Handler handler=new Handler()
{
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
tvTem.setText(tem);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
init();
startThread();
}
private void startThread(){
new Thread(new Runnable() {
@Override
public void run() {
while (true){
try {
double[] v = zigBee.getFourEnter();
if (v!=null){
tem = df.format(v[3]);
Message message = Message.obtain();
handler.sendMessage(message);
}
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
private void init() {
isOpenFridge=isOpenLihgt=false;
modbus4150 = new
Modbus4150(DataBusFactory.newSocketDataBus("172.18.1.16",2001),null);
zigBee = new ZigBee(DataBusFactory.newSocketDataBus("172.18.1.16",2002),null);
}
private void initView() {
btnMore=findViewById(R.id.btnMore);
tvTem=findViewById(R.id.tvTem);
ivFridge=findViewById(R.id.ivFridge);
ivLight=findViewById(R.id.ivLight);
button1=findViewById(R.id.button1);
button2=findViewById(R.id.button2);
btnMore.setonClickListener(new View.onClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
});
button1.setonClickListener(new View.onClickListener() {
@Override
public void onClick(View v) {
ctrlFright1(isOpenFridge);
}
});
button2.setonClickListener(new View.onClickListener() {
@Override
public void onClick(View v) {
ctrlFright2(isCloseFridge);
}
});
}
private void ctrlFright1(boolean isOpenFridge){
if(!isOpenFridge)
{
try {
modbus4150.ctrlRelay(3,false,null);
modbus4150.ctrlRelay(2,false,null);
modbus4150.ctrlRelay(1,true,null);
} catch (Exception e) {
e.printStackTrace();
}
ivLight.setImageResource(R.drawable.lamp_on);
ivFridge.setImageResource(R.drawable.open_fridge);
fridgeA = (AnimationDrawable)ivFridge .getDrawable();
fridgeA.start();
this.isOpenFridge = true;
}
}
private void ctrlFright2(boolean isCloseFridege){
if(!isCloseFridege){
try {
//modbus4150.ctrlRelay(2,false,null);
//modbus4150.ctrlRelay(3,true,null);
modbus4150.ctrlRelay(1,false,null);
} catch (Exception e) {
e.printStackTrace();
}
ivLight.setImageResource(R.drawable.lamp_off);
ivFridge.setImageResource(R.drawable.close_fridge);
fridgeA = (AnimationDrawable)ivFridge .getDrawable();
fridgeA.start();
this.isOpenFridge = false;
}
}
}



