Zegbee 温度,气体,,,采集

来源:互联网 发布:access下sql语句 编辑:程序博客网 时间:2024/04/28 05:37
package com.socket;


import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentProviderOperation.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.RadioButton;
import android.widget.ImageView;
import android.widget.ToggleButton;


public class ActivityClient extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
private final int TIMER_INVALIDATE = 1001;
private String SOCKET_IP = "192.168.1.117";
//private String SOCKET_IP = "192.168.50.247";
private int SOCKET_PORT = 51706;
private int dlgIndex = 0;
private int cnt = 0;
private Double testValue = new Double(75.123);

private Timer timer;
private TimerTask task;

private ImageView mTmpImage;

private Button mBtnConnet;
private Button mBtnClose;
private Button mBtnGas;
private Button mBtnTemp;
private Button mBtnLightLevel;
private ToggleButton mTbtnLed1;
private ToggleButton mTbtnLed2;
private ToggleButton mTbtnLed3;
private ToggleButton mTbtnLed4;

//连接对话框
private AlertDialog.Builder dialogConnect;
private EditText et;

//温度监控对话框
private AlertDialog.Builder dialogTemp;
private EditText mTemp1;
private EditText mTemp2;
private EditText mTemp3;
private EditText mTemp4;

//光强监控对话框
private AlertDialog.Builder dialogLightLevel;
private EditText mLightLevel1;
private EditText mLightLevel2;
private EditText mLightLevel3;
private EditText mLightLevel4;

//气体监控对话框
private AlertDialog.Builder dialogGas;
private EditText mGas1;
private EditText mGas2;
private EditText mGas3;
private EditText mGas4;
private RadioButton mAlarm1;
private RadioButton mAlarm2;
private RadioButton mAlarm3;
private RadioButton mAlarm4;


Socket socket = null;
private String TempStr[];//用于存放温度数值
private String LightLevelStr[];//用于存放光强数值
private String GasStr[];//用于存放瓦斯数值
private String AlarmFlag[];//用于报警标识
private String LedFlag[];//用于灯状态标识
private TextView mTextShow;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mTextShow = (TextView)findViewById(R.id.textshow);
        mBtnConnet = (Button)findViewById(R.id.btn_connect);
        mBtnClose = (Button)findViewById(R.id.btn_close);
        mBtnGas = (Button)findViewById(R.id.btn_gas);
        mBtnTemp = (Button)findViewById(R.id.btn_temp);
        mBtnLightLevel = (Button)findViewById(R.id.btn_lightlevel);
        mTbtnLed1 = (ToggleButton)findViewById(R.id.led1);
        mTbtnLed2 = (ToggleButton)findViewById(R.id.led2);
        mTbtnLed3 = (ToggleButton)findViewById(R.id.led3);
        mTbtnLed4 = (ToggleButton)findViewById(R.id.led4);
        
        mBtnConnet.setOnClickListener(this);
        mBtnClose.setOnClickListener(this);
        mBtnGas.setOnClickListener(this);
        mBtnTemp.setOnClickListener(this);
        mBtnLightLevel.setOnClickListener(this);
        mTbtnLed1.setOnClickListener(this);
        mTbtnLed2.setOnClickListener(this);
        mTbtnLed3.setOnClickListener(this);
        mTbtnLed4.setOnClickListener(this);
        
        //连接对话框
        dialogConnect = new AlertDialog.Builder(this);     
        
        //温度监控对话框
        dialogTemp = new AlertDialog.Builder(this); 
        
        //光强监控对话框
        dialogLightLevel = new AlertDialog.Builder(this); 
        
        //瓦斯监控对话框
        dialogGas = new AlertDialog.Builder(this); 
   
    }
    
    public static String bytes2HexString(byte[] b) 
    {
    String ret = "";
    for (int i = 0; i < b.length; i++) 
    {
    String hex = Integer.toHexString(b[i] & 0xFF);
    if (hex.length() == 1) 
    {
    hex = '0' + hex;
    }
    ret += hex.toUpperCase();
    }
    return ret;
    }


    
    public void connect(){
    try { 
    InetAddress serverAddr = InetAddress.getByName(SOCKET_IP);//TCPServer.SERVERIP 
        Log.d("TCP", "C: Connecting..."); 
        socket = new Socket(serverAddr, SOCKET_PORT);      
       
 //      PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); 
 //      out.println(message);
 //      out.flush();
       receive();
    } catch(Exception e) { 
       Log.e("TCP", "S: Error", e); 
    } finally { 
       
   
    }


    public void receive(){
    new Thread(){
public void run(){
try{
while(!socket.isClosed()){

InputStream is = socket.getInputStream(); 


byte data[] = new byte[512];
int n = is.read(data);
if(n > 0){
String val = new String(data);
//解析数据
switch(val.charAt(1))
{
case 'T':
TempStr = val.split(",");
break;
case 'L':
LightLevelStr = val.split(",");
break;
case 'G':
GasStr = val.split(",");
break;
case 'A'://报警
AlarmFlag = val.split(",");
break;
case 'D'://灯状态
LedFlag = val.split(",");
break;

}


//Log.d("TCP","receive mStrShow="+mStrShow);
//Log.d("TCP","receive mStrShow=");
Message message = new Message();// 生成消息,并赋予ID值
message.what = TIMER_INVALIDATE;
myHandler.sendMessage(message);// 投递消息
}

sleep(300);
}
}
catch(Exception e){


}
}
}.start();
    }
    private void close(){
    try {
    Log.d("TCP","socket close");
    if(socket != null)
    {
    socket.close();    
    }
    finish();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("TCP", "S: Error", e); 

    }
        
    private void MySend(String message){
    try{        
    PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); 
   out.println(message);
   out.flush();
   
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    
    
    Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TIMER_INVALIDATE://查询灯状态
if(dlgIndex == 0)
{
if(LedFlag[1].charAt(0) == 0x30)
{
mTbtnLed1.setChecked(false);
}
else if(LedFlag[1].charAt(0) == 0x31)
{
mTbtnLed1.setChecked(true);
}

if(LedFlag[2].charAt(0) == 0x30)
{
mTbtnLed2.setChecked(false);
}
else if(LedFlag[2].charAt(0) == 0x31)
{
mTbtnLed2.setChecked(true);
}

if(LedFlag[3].charAt(0) == 0x30)
{
mTbtnLed3.setChecked(false);
}
else if(LedFlag[3].charAt(0) == 0x31)
{
mTbtnLed3.setChecked(true);
}

if(LedFlag[4].charAt(0) == 0x30)
{
mTbtnLed4.setChecked(false);
}
else if(LedFlag[4].charAt(0) == 0x31)
{
mTbtnLed4.setChecked(true);
}
}
else if(dlgIndex == 1) //温度监控界面
{
mTemp1.setText(TempStr[1]);
mTemp2.setText(TempStr[2]);
mTemp3.setText(TempStr[3]);
mTemp4.setText(TempStr[4]);
}
else if(dlgIndex == 2) //光强监控界面
{
mLightLevel1.setText(LightLevelStr[1]);
mLightLevel2.setText(LightLevelStr[2]);
mLightLevel3.setText(LightLevelStr[3]);
mLightLevel4.setText(LightLevelStr[4]);
}
else if(dlgIndex == 3) //瓦斯监控界面
{
if(cnt == 1)
{
mGas1.setText(GasStr[1]);
mGas2.setText(GasStr[2]);
mGas3.setText(GasStr[3]);
mGas4.setText(GasStr[4]);
}
else if(cnt == 0)
{
if(AlarmFlag[1].charAt(0) == 0x30)
{
mAlarm1.setChecked(false);
}
else if(AlarmFlag[1].charAt(0) == 0x31)
{
mAlarm1.setChecked(true);
}

if(AlarmFlag[2].charAt(0) == 0x30)
{
mAlarm2.setChecked(false);
}
else if(AlarmFlag[2].charAt(0) == 0x31)
{
mAlarm2.setChecked(true);
}

if(AlarmFlag[3].charAt(0) == 0x30)
{
mAlarm3.setChecked(false);
}
else if(AlarmFlag[3].charAt(0) == 0x31)
{
mAlarm3.setChecked(true);
}

if(AlarmFlag[4].charAt(0) == 0x30)
{
mAlarm4.setChecked(false);
}
else if(AlarmFlag[4].charAt(0) == 0x31)
{
mAlarm4.setChecked(true);
}

}


}

break;
case 1://定时向server发送请求事件
if(dlgIndex == 0)
{
MySend("DDDDD");  //主界面
}
else if(dlgIndex == 1)//温度监控界面
{
MySend("TTTTT");
}
else if(dlgIndex == 2)//光强监控界面
{
MySend("LLLLL");
}
else if(dlgIndex == 3)//瓦斯监控界面
{
if(cnt == 0)
{
cnt = 1;
MySend("GGGGG");
}
else if(cnt == 1)
{
cnt = 0;
MySend("AAAAA");
}


}
break;
}
super.handleMessage(msg);
}
};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.btn_connect){
//connect();
LayoutInflater inflatert = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   AbsoluteLayout layout = (AbsoluteLayout)inflatert.inflate(R.layout.dlgconnect, null); 
   dialogConnect.setView(layout);
   
   et = (EditText)layout.findViewById(R.id.et_serverip); //连接dialog中ip地址输入框
       dialogConnect.setPositiveButton("连接",new DialogInterface.OnClickListener() {//设置确定的按键
           @Override
           public void onClick(DialogInterface dialog, int which) {
               //do something
          try { 
          String inputIpAddr=et.getText().toString();              
           
          InetAddress serverAddr = InetAddress.getByName(inputIpAddr);//TCPServer.SERVERIP 
               Log.d("TCP", "C: Connecting..."); 
               //socket = new Socket(serverAddr, SOCKET_PORT);  
               socket = new Socket(inputIpAddr, SOCKET_PORT);
           
               receive();
               
               //启动定时器执行一次查询灯状态操作
               task = new TimerTask() {
        @Override
        public void run() {
        // TODO Auto-generated method stub
        Message message = new Message();
        message.what = 1;
        myHandler.sendMessage(message);
        }
        };
        timer= new Timer();
        timer.schedule(task, 200);
        dlgIndex = 0;
               
            } catch(Exception e) { 
               Log.e("TCP", "S: Error", e); 
            } finally { 
               
           
           }
       });
   
dialogConnect.setNegativeButton("取消",new DialogInterface.OnClickListener() {//设置取消按键
           @Override
           public void onClick(DialogInterface dialog, int which) {
               //do something
           
           }
       });
dialogConnect.setCancelable(false);//设置按返回键是否响应返回,这是是不响应
   
   
dialogConnect.show();
}
else if(v.getId() == R.id.btn_temp){//温度监控对话框       
dlgIndex = 1;

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   AbsoluteLayout layout = (AbsoluteLayout)inflater.inflate(R.layout.temp, null); 
   dialogTemp.setView(layout);
   
   dialogTemp.setTitle("远程温度监测");
       Resources r = this.getResources();  
       Drawable d = r.getDrawable(R.drawable.tmp);  
       dialogTemp.setIcon(d);  
   
   mTemp1 = (EditText)layout.findViewById(R.id.tmp_et1); 
   mTemp2 = (EditText)layout.findViewById(R.id.tmp_et2); 
   mTemp3 = (EditText)layout.findViewById(R.id.tmp_et3); 
   mTemp4 = (EditText)layout.findViewById(R.id.tmp_et4); 
   
   //mTmpImage = (ImageView)layout.findViewById(R.id.tmp_image); 
   
   //mTmpImage.setImageResource(R.drawable.tmp);
   
   //dialogTemp.setPositiveButton("连接",null);   
dialogTemp.setNegativeButton("返回上级",new DialogInterface.OnClickListener() {//设置取消按键
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //do something
                dlgIndex = 0;
                timer.cancel();
                }
            });
   
dialogTemp.show();

task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
myHandler.sendMessage(message);
}
};
timer= new Timer();
timer.schedule(task, 200, 200);
}
else if(v.getId() == R.id.btn_lightlevel){
dlgIndex = 2;

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   AbsoluteLayout layout = (AbsoluteLayout)inflater.inflate(R.layout.lightlevel, null); 
   dialogLightLevel.setView(layout);
   dialogLightLevel.setTitle("远程光强监测");
   Resources r = this.getResources();  
       Drawable d = r.getDrawable(R.drawable.light);  
       dialogLightLevel.setIcon(d);


   mLightLevel1 = (EditText)layout.findViewById(R.id.lightlevel_et1); 
   mLightLevel2 = (EditText)layout.findViewById(R.id.lightlevel_et2); 
   mLightLevel3 = (EditText)layout.findViewById(R.id.lightlevel_et3); 
   mLightLevel4 = (EditText)layout.findViewById(R.id.lightlevel_et4); 
   
   //dialogTemp.setPositiveButton("连接",null);   
   dialogLightLevel.setNegativeButton("返回上级",new DialogInterface.OnClickListener() {//设置取消按键
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //do something
                dlgIndex = 0;
                timer.cancel();
                }
            });
   
   dialogLightLevel.show();

task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
myHandler.sendMessage(message);
}
};
timer= new Timer();
timer.schedule(task, 200, 200);


}
else if(v.getId() == R.id.btn_gas){
dlgIndex = 3;

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   AbsoluteLayout layout = (AbsoluteLayout)inflater.inflate(R.layout.gas, null); 
   dialogGas.setView(layout);
   dialogGas.setTitle("远程瓦斯监测");
   Resources r = this.getResources();  
       Drawable d = r.getDrawable(R.drawable.gas);  
       dialogGas.setIcon(d);


   mGas1 = (EditText)layout.findViewById(R.id.gas_et1); 
   mGas2 = (EditText)layout.findViewById(R.id.gas_et2); 
   mGas3 = (EditText)layout.findViewById(R.id.gas_et3); 
   mGas4 = (EditText)layout.findViewById(R.id.gas_et4); 
   
   mAlarm1 = (RadioButton)layout.findViewById(R.id.gas_rb1);
   mAlarm2 = (RadioButton)layout.findViewById(R.id.gas_rb2);
   mAlarm3 = (RadioButton)layout.findViewById(R.id.gas_rb3);
   mAlarm4 = (RadioButton)layout.findViewById(R.id.gas_rb4);
   
   mAlarm1.setChecked(false);
   mAlarm2.setChecked(false);
   mAlarm3.setChecked(false);
   mAlarm4.setChecked(false);
   
   //dialogTemp.setPositiveButton("连接",null);   
   dialogGas.setNegativeButton("返回上级",new DialogInterface.OnClickListener() {//设置取消按键
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //do something
                dlgIndex = 0;
                timer.cancel();
                }
            });
   
   dialogGas.show();

task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
myHandler.sendMessage(message);
}
};
timer= new Timer();
timer.schedule(task, 100, 100);
   


}
else if(v.getId() == R.id.btn_close){
close();
}
else if(v.getId() == R.id.led1){
// 当按钮第一次被点击时候响应的事件                        
if (mTbtnLed1.isChecked()) 
{                                  
MySend("11D11");
mTextShow.setText("您按下了1号开关,1号灯被点亮!");
}// 当按钮再次被点击时候响应的事件                  
else 
{
MySend("11D00");
mTextShow.setText("您按下了1号开关,1号灯被熄灭!");
}

}
else if(v.getId() == R.id.led2){
// 当按钮第一次被点击时候响应的事件                        
if (mTbtnLed2.isChecked()) 
{                                  
MySend("22D11");
mTextShow.setText("您按下了2号开关,2号灯被点亮!");
}// 当按钮再次被点击时候响应的事件                  
else 
{
MySend("22D00");
mTextShow.setText("您按下了2号开关,2号灯被熄灭!");
}

}
else if(v.getId() == R.id.led3){
// 当按钮第一次被点击时候响应的事件                        
if (mTbtnLed3.isChecked()) 
{                                  
MySend("33D11");
mTextShow.setText("您按下了3号开关,3号灯被点亮!");
}// 当按钮再次被点击时候响应的事件                  
else 
{
MySend("33D00");
mTextShow.setText("您按下了3号开关,3号灯被熄灭!");
}

}
else if(v.getId() == R.id.led4){
// 当按钮第一次被点击时候响应的事件                        
if (mTbtnLed4.isChecked()) 
{                                  
MySend("44D11");
mTextShow.setText("您按下了4号开关,4号灯被点亮!");
}// 当按钮再次被点击时候响应的事件                  
else 
{
MySend("44D00");
mTextShow.setText("您按下了4号开关,4号灯被熄灭!");
}

}


}
}
0 0