MQTT项目完成总结笔记

完成项目期间遇到很多问题,特此作笔记:

1、安卓只能识别128以下得数,若128以上的数则需将其强转为Byte即(Byte)0xAA

2、解决485传输数据异常问题:因输入输出模式之间切换过快,导致数据传输异常

解决办法:添加delay函数

	private void delay(int ms) {
		try {
			Thread.currentThread();
			Thread.sleep(ms);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

3、解决在检验校验位时直接相加判断是否与最后一位相等,在安卓中不可用。因为16进制加起来超过了byte量程所以将其  &0xff  即可。

4、解决使用string.format( , )可实现动态数组 例:

String humi = String.format("温度:%d℃\n湿度:%d%%", temp_number, wet_number);

5、关于base64解码问题,当从服务器得到数据进行第一次Base64解码后 得到的Json数据中的payload依然是Base64编码的。所以需要对Json数据进行处理,并进行二次解码。

源码如下

com.alibaba.fastjson.JSONObject jobj=com.alibaba.fastjson.JSON.parseObject(getFromBASE64(popMsg.getMessageBodyAsRawString()));//解码源码
		    	String payload=jobj.get("payload").toString();//提取payload中的数据
		    	System.out.println("Message  "+getFromBASE64(payload));//打印并解码
6、关于MQTT线程问题。需要在Activity中的onDestory()中:
transporter.sampleClient.disconnect();
7、关于MQTT应用运行过程中,断开设备网络连接,程序停止工作。并报错channel is unrecoverably broken and will  be disposed!
则需将MQTT中的set.Qos(1)修改为set.Qos(0);


发布了2 篇原创文章 · 获赞 0 · 访问量 1577
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览