团队博客--4

    基于Zigbee网络的获取数据需要建立传感器数据接收监听器的进程,时刻监听是否有新数据上传,核心代码如下:

//传感器数据接收监听器

String sdat = new String(dat); //要发送的数据

String s = "[" + MAC + "]<<" + sdat;//封装数据

mSensorData.onSensorData(MAC, sdat);//调用类的方法获取数据

if (mCurrentActivity != null) {

   //建立线程锁

synchronized (mCurrentActivity) {

      String[] sMAC = mCurrentActivity.getMACAddress();//获取MAC地址

      for (String x : sMAC) {//循环整个MAC地址

             if (x.equalsIgnoreCase(MAC)) {//判断MAC地址是否符合

                    String sdata = MAC + "=" + new String(sdat);//封装数据格式

                    String MACs = mUserConfig.getString(SmartHomeApplication.KEY_Monitor); //获取MAC地址

                    String mMACs[] = new String[] { "" };//定义MAC集合数组

                    if (MACs.length() > 0) {//解析信息

                           String[] b = MACs.split("=");//以=为分割标志,分割字符串

                           mMACs[0] = b[1];//第一个为MAC地址

                    }

                    if (MAC.equalsIgnoreCase(mMACs[0])) {//判断MAC的地址是否符合

                           mCurrentActivity.postSensorData(dat);//发送获取数据指令

                    } else {

                           mCurrentActivity.postSensorData(sdata).getBytes());//获取数据

                    }

             }

      }

}

}

 

基于Zigbee网络的发送数据时,该系统需要MqttMessage类中的方法,需要使用MQTT协议与Zigbee网络中的传感器进行通信。具体代码如下:

//Android程序通过wsn连接Zigbee网络

String topic = "/com/zonesion/wsn/control/" + mApplicationID + "/"+ addr;

//初始化MqttMessage

MqttMessage msg = new MqttMessage(dat);

//发送0指令

msg.setQos(0);

if (mLocal.isConnected()) {//判断本地是否是连接的

   //本地发布

      mLocal.publish(topic, msg);

} else if (mGlobal.isConnected()) {//判断全局是否是连接的

   //全局发布

      mGlobal.publish(topic, msg);

} else {

      Log.d(TAG, "No mqtt server connected!");//输出提示信息

}

posted @ 2016-09-04 08:09  421a  阅读(162)  评论(0编辑  收藏  举报