加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

关于云平台控制的实现

04/24 08:52
2978
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
  • 方案介绍
    • 平台选择
    • 接入云端数据:
    • 联系方式 微信号:13648103287
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

平台选择

Android实现平台:Android student 4.2.2

硬件选择:Keil (芯片为Stm32F103ZET6)

移动云(ONENET):有清晰的文档使用,结构简单,适合快速学习与集成自己项目


接入云端数据:

Android端实现:

步骤一:导入网络请求包

    /*okhttp 插件*/
    implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2'
    /*Retrofit库*/
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    /*Retrofit嵌套请求 rejava3*/
    implementation "io.reactivex.rxjava2:rxjava:2.1.0" // 必要rxjava2依赖
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.9.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' 
    // 必要依赖,和Rxjava结合必须用到,下面会提到
    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'

导入包说明

Okhttp3基本使用

Retrofit2 详解和使用

使用Retrofit+RxJava实现网络请求

步骤二:代码实现

运用 RXjava 实现网络请求

 /**
     * TODO RX思维
     *  获取设备状态
     */
    public void RxAsync(){

        //步骤4:创建Retrofit对象
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://api.heclouds.com/") // 设置 网络请求 Url
                .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        // 步骤5:创建 网络请求接口 的实例
        SB_HttpBinService request = retrofit.create(SB_HttpBinService.class);
        // 步骤6:采用Observable<...>形式 对 网络请求 进行封装
        Observable<Online_json> observable = request.getMessage(State.ApiKey,State.DeviceIDs);
        System.out.println(State.DeviceIDs);
        // 步骤7:发送网络请求
        observable.subscribeOn(Schedulers.io())               // 在IO线程进行网络请求
                .observeOn(AndroidSchedulers.mainThread())  // 回到主线程 处理请求结果
                .subscribe(new Observer<Online_json>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.d("TAG", "开始采用subscribe连接");
                    }

                    @Override
                    public void onNext(@NotNull Online_json online_json) {

                        List<Devices> devices = online_json.getData().getDevices();
                            String o;
                            if (SB_Parameter.AllSUM < online_json.getData().getTotal_count()){
                                int j;
                                j=online_json.getData().getTotal_count()-SB_Parameter.AllSUM ;

                                for (int i = 0; i < j; i++) {
                                    map = new HashMap<>();
                                    map.put("id", "请刷新");
                                    map.put("name","请刷新");
                                    map.put("online","请刷新");
                                    list.add(map);
                                }
                                SB_Parameter.AllSUM = online_json.getData().getTotal_count();
                            }

                            for (int i = 0 ;i<online_json.getData().getTotal_count();i++){
                                if (devices.get(i).getOnline()){

                                    o = "√";
                                }else {
                                    o = "×";
                                }
                                map = list.get(i);
                                map.put("id",  devices.get(i).getId());
                                map.put("name",  devices.get(i).getTitle());
                                map.put("online", o);
                            }

                        mRecyclerView.setAdapter(mRecyclerViewAdapter);
                        Delay.Delay_ms(500);
                        mRecyclerView.setAdapter(mRecyclerViewAdapter);

                    }


                    @Override
                    public void onError(Throwable e) {
                        Log.d("TAG," ,"请求失败");
                    }

                    @Override
                    public void onComplete() {
                        Log.d("TAG", "请求成功");
                    }
                });
    }

请求成功后的会返回服务器端返回的数据

{errno=0, data=Data{devices=[Devices{title='led1', online=false, id='735471469'}, Devices{title='DHT11', online=false, id='736585581'}], total_count=2}, error='succ'}

使用 bejson 网页进行Josn数据的解析,运用 网站的 JSON生成Java实体类 功能生成实体类

在这我把实体类贴出来

类 Data
/**
  * Copyright 2021 bejson.com 
  */
package com.example.yt_app.bean.Onenet_online;
import java.util.List;

/**
 * Auto-generated: 2021-07-19 15:40:24
 *
 * @author bejson.com (i@bejson.com)
 * @website http://www.bejson.com/java2pojo/
 */
public class Data {

    private List<Devices> devices;
    private int total_count;
    public void setDevices(List<Devices> devices) {
         this.devices = devices;
     }
     public List<Devices> getDevices() {
         return devices;
     }

    public void setTotal_count(int total_count) {
         this.total_count = total_count;
     }
     public int getTotal_count() {
         return total_count;
     }

    @Override
    public String toString() {
        return "Data{" +
                "devices=" + devices +
                ", total_count=" + total_count +
                '}';
    }
}
类 Devices
/**
  * Copyright 2021 bejson.com 
  */
package com.example.yt_app.bean.Onenet_online;

/**
 * Auto-generated: 2021-07-19 15:40:24
 *
 * @author bejson.com (i@bejson.com)
 * @website http://www.bejson.com/java2pojo/
 */
public class Devices {

    private String title;
    private boolean online;
    private String id;
    public void setTitle(String title) {
         this.title = title;
     }
     public String getTitle() {
         return title;
     }

    public void setOnline(boolean online) {
         this.online = online;
     }
     public boolean getOnline() {
         return online;
     }

    public void setId(String id) {
         this.id = id;
     }
     public String getId() {
         return id;
     }

    @Override
    public String toString() {
        return "Devices{" +
                "title='" + title + ''' +
                ", online=" + online +
                ", id='" + id + ''' +
                '}';
    }
}
类 Online_json
/**
  * Copyright 2021 bejson.com 
  */
package com.example.yt_app.bean.Onenet_online;

/**
 * Auto-generated: 2021-07-19 15:40:24
 *
 * @author bejson.com (i@bejson.com)
 * @website http://www.bejson.com/java2pojo/
 */
public class Online_json {

    private int errno;
    private Data data;
    private String error;
    public void setErrno(int errno) {
         this.errno = errno;
     }
     public int getErrno() {
         return errno;
     }

    public void setData(Data data) {
         this.data = data;
     }
     public Data getData() {
         return data;
     }

    public void setError(String error) {
         this.error = error;
     }
     public String getError() {
         return error;
     }

    @Override
    public String toString() {
        return "Online_json{" +
                "errno=" + errno +
                ", data=" + data +
                ", error='" + error + ''' +
                '}';
    }
}

三个实体类写完之后还有做一件事情

实现 Retrofit 的接口

接口名称

SB_HttpBinService
/**
 * Created by dell on 2021/7/16.
 */
public interface SB_HttpBinService {

//  此处回调返回的可为任意类型Call<T>,再也不用自己去解析json数据啦!!!
    Observable<Online_json> getMessage(@Header("api-key") String key, @Query("devIds") String ids );





}

步骤三 :进行网络请求获取数据

实现后效果图


总结

写的很少,需要学的东西很多,要多琢磨,努力,多学

同时也使用了讯飞语音平台,高德平台


联系方式 微信号:13648103287

  • 联系方式.docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ADM3053BRWZ 1 Analog Devices Inc Signal and Power Isolated CAN Transceiver with Integrated Isolated DC-to-DC Converter

ECAD模型

下载ECAD模型
$9.17 查看
KSZ8864CNXIA 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC64

ECAD模型

下载ECAD模型
$7.74 查看
KSZ9031MNXIA-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC64
$41.55 查看

相关推荐

电子产业图谱

方案定制,程序设计方案、单片机程序设计与讲解、APP定制开发。本公众号致力于向读者传递关于程序设计和开发的相关知识,并分享一些关于软件开发的最佳实践。如果您有什么问题或建议,请随时联系我们。我们将竭诚为您服务