Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

本页介绍了本页介绍了 GetPowerStatus的用法 的用法, 包含底盘当前的充电状态、电池电量、回坞状态等信息。

...

本页内容

...

...

Table of Contents


...

运行环境准备

  • 软件平台

    • Android Studio 3.1.3
    • Slamware Android SDK:Slamware Windows SDK slamware_sdk_android.2.6.0_rtm.20180820.tar.gz
    • RoboStudio(用于显示地图):Robostudio installer
    • Sample Code: 

      使用不同版本的Android Studio可能会带来编译异常。

      使用Visual Studio 2010(无SP1)可能会因为无法与.Net Framework兼容而报编译错误,此时增加SP1更新包即可解决问题

      Info

      使用不同版本的Android Studio可能会带来编译异常,请自行下载相关库和修改build.gradle配置文件,本例程基于Slamware Android SDK 2.6.0 进行开发,若想尝试更高的SDK版本,请直接替换工程中的 slamware_sdk_android.jar 和 librpsdk.so 文件。


  • 硬件平台

          (以下任选其一)

      • Slamware SDP mini 
      • Slamware SDP
      • Slamware 套装 (基于Slamware导航方案的用户机器人系统)
      • Zeus/Apollo等底盘系统

...

编译运行

...

右键get_power_status, 打开属性选项,将Slamware SDK 的include目录和lib目录添加到工程

Slamware SDK的include和lib目录无需复制到参考例程目录,只需在Visual Studio里指定路径即可。

...

  1. 打开GetPowerStatus工程,检查libs路径下是否有 slamware_sdk_android.jar 文件,以及jinLibs路径下是否有 librpsdk.so 文件,若想尝试其他版本的SDK,请直接将这两个文件替换。
    Image Added


  2. 到 Project Structure --> app --> Dependencies 检查Slamware SDK是否添加到工程中。

    Image Added


  3. 将以下代码段的"10.0.130.71"修改为底盘的IP地址,默认情况下为192.168.11.1,当WIFI处于Station模式下请将PC与底盘使用Ethenet连接后查看。方法说明:AbstractSlamwarePlatform connect(String host, int port),其中host为底盘IP,port为网络端口号,返回值为底盘的实例对象。

    Code Block
    languagejava
    themeMidnight
    /* 与底盘连接 */
    AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);


  4. Android设备连接底盘发射出的WIFI或连入底盘的同一网络,按下shift + F10 运行,Android手机端的显示界面如下
    Image Added

    Info

    本例程仅仅用作最简单SDK类的演示,故没有写定时刷新的逻辑,该界面仅在打开时刷新一次数据



  5. Android Studio 的 Logcat输出为
    Image Added

...


代码描述

  • 获取电量/充电状态

    获取电量/充电状态


    Code Block
    languagejava
    themeDJango
    linenumberstrue
        /* 与底盘连接 */
        AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);
    
        /* 获取版本信息 */
        sdkVersion.setText(robotPlatform.getSDKVersion());
    
        try {
            /* 获取Slamware ID */
            deviceID.setText(robotPlatform.getDeviceId());
    
            /* 获取电源状态相关信息 */
            PowerStatus powerStatus = robotPlatform.getPowerStatus();
    
            /* 是否正在充电 */
            if(powerStatus.isCharging() == true) {
                chargingStatus.setText("正在充电");
            } else {
                chargingStatus.setText("未在充电");
            }
    
            /* 是否DC connected */
            if(powerStatus.isDCConnected() == true) {
                dcConnected.setText("已连接");
            } else {
                dcConnected.setText("未连接");
            }
    
            /* 剩余电池电量 */
            batteryPercentage.setText(powerStatus.getBatteryPercentage() + "%");
    
            /* 是否回到充电桩 */
            if(powerStatus.getDockingStatus() == DockingStatus.OnDock) {
                dockStatus.setText("已回桩");
            } else if (powerStatus.getDockingStatus() == DockingStatus.NotOnDock) {
                dockStatus.setText("未回桩");
            } else {
                dockStatus.setText("未知状态");
            }
    
            /* 睡眠状态 */
            switch (powerStatus.getSleepMode()) {
                case Awake:
                    sleepMode.setText("Awake");
                    break;
                case WakingUp:
                    sleepMode.setText("WakingUp");
                    break;
                case Asleep:
                    sleepMode.setText("Asleep");
                    break;
                case Unknown:
                    sleepMode.setText("Unknown");
                    break;
                    default:
                        break;
            }
    
            /* print log info */
            ...
    
        } catch (ConnectionFailException e) {
            /* Exception Handle code*/
    		...
        }
    
    

...

代码描述

  • 获取电量/充电状态

    获取电量/充电状态
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SlamwareCorePlatform sdp = SlamwareCorePlatform::connect(argv[1], 1445);
    std::cout <<"SDK Version: " << sdp.getSDKVersion() << std::endl;
    std::cout <<"SDP Version: " << sdp.getSDPVersion() << std::endl;
     
    PowerStatus status = sdp.getPowerStatus();
    std::cout << "Battery Percentage: " << status.batteryPercentage << std::endl;
    std::cout << "is Charging: " << status.isCharging << std::endl;
    std::cout << "is DC connected: " << status.isDCConnected << std::endl;
     
    if(status.dockingStatus == DockingStatusNotOnDock)
        std::cout << "Docking status: Not on dock" << std::endl;
    else if(status.dockingStatus == DockingStatusOnDock)
        std::cout << "Docking status: On dock" << std::endl;
    else
        std::cout << "Docking status: Unknown" << std::endl;