本页介绍了本页介绍了 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里指定路径即可。
...
- 打开GetPowerStatus工程,检查libs路径下是否有 slamware_sdk_android.jar 文件,以及jinLibs路径下是否有 librpsdk.so 文件,若想尝试其他版本的SDK,请直接将这两个文件替换。
到 Project Structure --> app --> Dependencies 检查Slamware SDK是否添加到工程中。
将以下代码段的"10.0.130.71"修改为底盘的IP地址,默认情况下为192.168.11.1,当WIFI处于Station模式下请将PC与底盘使用Ethenet连接后查看。方法说明:AbstractSlamwarePlatform connect(String host, int port),其中host为底盘IP,port为网络端口号,返回值为底盘的实例对象。
Code Block language java theme Midnight /* 与底盘连接 */ AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);
Android设备连接底盘发射出的WIFI或连入底盘的同一网络,按下shift + F10 运行,Android手机端的显示界面如下
Info 本例程仅仅用作最简单SDK类的演示,故没有写定时刷新的逻辑,该界面仅在打开时刷新一次数据
- Android Studio 的 Logcat输出为
...
代码描述
获取电量/充电状态
获取电量/充电状态Code Block language java theme DJango linenumbers true /* 与底盘连接 */ 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*/ ... }
...
代码描述
获取电量/充电状态
获取电量/充电状态12345678910111213141516SlamwareCorePlatform 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;