沿路径相对移动
使鼠标指针沿着指定的路径相对当前位置移动。
语法
cpp
class RX784::Device {
Status movePathRel(
int16_t x,
int16_t y,
uint32_t duration,
uint32_t pollingRate = 250,
bool isIgnoreErrors = false,
const Path& path,
std::function<void()> callback = []{}
);
};
class RX784::Device {
Status movePathRel(
int16_t x,
int16_t y,
uint32_t duration,
uint32_t pollingRate = 250,
bool isIgnoreErrors = false,
const Path& path,
std::function<void()> callback = []{}
);
};
e
类名 基类 公开 备注 RX784设备 ✔
方法名 返回值类型 公开 备注 沿路径相对移动 整数型 ✔ 参数名 类型 参考 可空 数组 备注 x 短整数型 y 短整数型 持续时间 整数型 路径 路径 轮询率 整数型 ✔ 是否忽略错误 逻辑型 ✔ 回调 子程序指针 ✔
.版本 2
.程序集 RX784设备, , 公开
.子程序 沿路径相对移动, 整数型, 公开
.参数 x, 短整数型
.参数 y, 短整数型
.参数 持续时间, 整数型
.参数 路径, 路径
.参数 轮询率, 整数型, 可空
.参数 是否忽略错误, 逻辑型, 可空
.参数 回调, 子程序指针, 可空
py
参数
名称 | 英文 | 说明 |
---|---|---|
x | x | 水平方向偏移值,左负右正。 |
y | y | 竖直方向偏移值,上负下正。 |
持续时间 | duration | 移动到指定坐标的持续时间,单位为毫秒(ms)。 |
轮询率 | polling rate | 每秒更新位置的次数,单位为赫兹(Hz)。 |
是否忽略错误 | is ignore errors | 忽略后如果某一步出错了,不会马上结束函数而是继续执行。 |
路径 | path | 目前支持 。 |
回调 | callback | 每移动一小步会调用一次回调。 |
返回值
名称 | 英文 | 说明 |
---|---|---|
状态码 | status | 成功返回 。 |
类型
线性路径
通过方程
cpp
namespace RX784 {
struct LinearPath {
double a1;
double b1;
double a2;
double b2;
double p1x;
double p1y;
double p2x;
double p2y;
};
}
namespace RX784 {
struct LinearPath {
double a1;
double b1;
double a2;
double b2;
double p1x;
double p1y;
double p2x;
double p2y;
};
}
e
方法名 返回值类型 公开 备注 线性路径 路径 ✔ 参数名 类型 参考 可空 数组 备注 a1 双精度小数型 b1 双精度小数型 a2 双精度小数型 b2 双精度小数型 p1x 双精度小数型 p1y 双精度小数型 p2x 双精度小数型 p2y 双精度小数型
.版本 2
.子程序 线性路径, 路径, 公开
.参数 a1, 双精度小数型
.参数 b1, 双精度小数型
.参数 a2, 双精度小数型
.参数 b2, 双精度小数型
.参数 p1x, 双精度小数型
.参数 p1y, 双精度小数型
.参数 p2x, 双精度小数型
.参数 p2y, 双精度小数型
py
备注
这个方法是通过多次使用相对移动实现的,若移动过程中碰到屏幕边界,或移动了实体鼠标,会导致偏离目标,如果需要移动到精确坐标,可以在移动后调用一次 绝对移动,或直接使用 沿路径绝对移动。
示例
cpp
#include "rx784.hpp"
#include "rx784ext.h"
int main() {
RX784::Device device;
device.open("COM1");
// x 轴偏移 500, y 轴偏移 100,耗时 1 秒
device.movePathRel(500, 100, 1000,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 轮询率设为 125Hz,即 1 秒移动 125 步
device.movePathRel(500, 100, 1000, 125u,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 忽略执行过程中的错误
device.movePathRel(500, 100, 1000, false,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 轮询率设为 125Hz,忽略错误
device.movePathRel(500, 100, 1000, 125, false,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 设置回调,每移动一小步打印一次 hello
// 回调可以用 lambda 表达式,也可以用函数指针
device.movePathRel(500, 100, 1000,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 },
[]{
std::cout << "hello" << std::endl;
});
device.close();
}
#include "rx784.hpp"
#include "rx784ext.h"
int main() {
RX784::Device device;
device.open("COM1");
// x 轴偏移 500, y 轴偏移 100,耗时 1 秒
device.movePathRel(500, 100, 1000,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 轮询率设为 125Hz,即 1 秒移动 125 步
device.movePathRel(500, 100, 1000, 125u,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 忽略执行过程中的错误
device.movePathRel(500, 100, 1000, false,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 轮询率设为 125Hz,忽略错误
device.movePathRel(500, 100, 1000, 125, false,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 });
// 设置回调,每移动一小步打印一次 hello
// 回调可以用 lambda 表达式,也可以用函数指针
device.movePathRel(500, 100, 1000,
RX784::LinearPath{ 0.5, 0.5, 0.9, 0.1,
0.5, 0.2, 0.8, 0.7 },
[]{
std::cout << "hello" << std::endl;
});
device.close();
}
e
方法名 返回值类型 公开 备注 _启动子程序 整数型
变量名 类型 静态 数组 备注 设备 RX784设备
设备.打开 (“COM1”)设备.沿路径相对移动 (100, 100, 1000, 线性路径 (0.5, 0.5, 0.9, 0.1, 0.5, 0.2, 0.8, 0.7))设备.关闭 ()返回 (0).版本 2
.子程序 _启动子程序, 整数型
.局部变量 设备, RX784设备
设备.打开 (“COM1”)
设备.沿路径相对移动 (100, 100, 1000, 线性路径 (0.5, 0.5, 0.9, 0.1, 0.5, 0.2, 0.8, 0.7))
设备.关闭 ()
返回 (0)
py
import rx784
import rx784