蓝牙BLE函数
说明
- 该功能是使用蓝牙的方式模拟滑动、输入等功能,目前支持ESP32C3的开发板
- 如何刷入固件,以及链接等,请进入该文档查看iOS USB蓝牙教程
bleEvent.openSerial 打开串口通信
- 打开串口通信
- 适配EC iOS USB版本9.20.0+
- @param timeout 串口通信超时时间 单位是毫秒 默认是15秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
if (!isDeviceAuthOk(1))
{
logw("设备授权已经过期")
return;
}
initMouse();
if (!openConnect(1, 15000)) {
logw("开启通信失败,无法进行下一步,请检查蓝牙设备是否正常")
return
}
logd("通信正常,开始执行中")
// 将鼠标移动到0,0
let r = bleEvent.resetZero()
if (_bleResultOk(r)) {
logd("恢复鼠标原始坐标成功")
} else {
logd("恢复鼠标原始坐标失败 {}", r)
return
}
// test_mouse_action();
// test_multiTouch();
test_input();
// test_wifi_and_reset();
}
function test_mouse_action() {
logd("测试鼠标移动功能")
let mv = bleEvent.mouseMove(300, 588)
if (_bleResultOk(mv)) {
logd("移动鼠标成功")
sleep(3000)
} else {
logw("移动鼠标失败 {}", mv)
}
bleEvent.resetZero()
logd("测试点击 功能 ")
let cr = bleEvent.clickPoint(300, 400)
if (_bleResultOk(cr)) {
logd("点击坐标 成功")
} else {
logw("点击坐标失败 {}", cr)
}
sleep(2000)
logd("测试 长按 功能 ")
cr = bleEvent.press(400, 500, 5000)
if (_bleResultOk(cr)) {
logd("长按 坐标 成功")
} else {
logw("长按 坐标 失败 {}", cr)
}
sleep(2000)
logd("测试 双击 功能 ")
cr = bleEvent.doubleClickPoint(212, 300)
if (_bleResultOk(cr)) {
logd("双击 坐标 成功")
} else {
logw("双击 坐标 失败 {}", cr)
}
sleep(2000)
logd("测试 滑动 功能 ")
cr = bleEvent.swipeToPoint(200, 300, 500, 600, 2000)
if (_bleResultOk(cr)) {
logd("双击 滑动 成功")
} else {
logw("双击 滑动 失败 {}", cr)
}
sleep(2000)
let tdx = 200;
let tdy = 300;
logd("测试 按下 功能 x={} y={}", tdx, tdy)
cr = bleEvent.touchDown(tdx, tdy)
if (_bleResultOk(cr)) {
logd("按下 成功")
} else {
logw("按下 失败 {}", cr)
}
let endMoveX = tdx;
let endMoveY = tdy;
for (let i = 0; i < 10; i++) {
sleep(20)
let movex = tdx + (i * 10);
let movey = tdy + (i * 10);
endMoveX = movex;
endMoveY = movey;
cr = bleEvent.touchMove(movex, movey)
if (_bleResultOk(cr)) {
logd("移动成功 x={} y = {}", movex, movey)
} else {
logw("移动失败 x={} y= {}", movex, movey)
}
}
logd("测试 抬起 功能 x={} y={}", endMoveX, endMoveY)
cr = bleEvent.touchUp(endMoveX, endMoveY)
if (_bleResultOk(cr)) {
logd("抬起 成功")
} else {
logw("抬起 失败 {}", cr)
}
}
function test_multiTouch() {
sleep(1000)
logd("开始测试多点触摸函数")
// 最后一个抬起 最好与 最后一个移动保持一致 防止有错误的偏移
let touch1 = [
{"action": 0, "x": 500, "y": 1200, "delay": 10},
{"action": 2, "x": 450, "y": 1100, "delay": 200},
{"action": 2, "x": 400, "y": 1000, "delay": 100},
{"action": 2, "x": 350, "y": 900, "delay": 100},
{"action": 2, "x": 300, "y": 800, "delay": 100},
{"action": 1, "x": 300, "y": 800, "delay": 2}
]
let rr = bleEvent.multiTouch(touch1, 10000)
if (_bleResultOk(rr)) {
logd("执行多点触摸成功")
} else {
logd("执行多点触摸失败 {}", rr)
}
}
function test_input() {
logd("开始测试输入功能,请找一个输入,并且聚焦到输入框才能看到输入效果,或者使用备忘录app看效果")
sleep(1000)
logd("开始执行输入 a 字符")
let sar = bleEvent.keyPressChar("", "a")
if (_bleResultOk(sar)) {
logd("执行 输入a字符 成功")
} else {
logd("执行 输入a字符 失败 {}", sar)
}
sleep(1000)
logd("开始使用 ASCII码 输入 a 字符")
sar = bleEvent.keyPress("", 97)
if (_bleResultOk(sar)) {
logd("执行 输入 ASCII码 a字符 成功")
} else {
logd("执行 输入 ASCII码 a字符 失败 {}", sar)
}
sleep(1000)
let home = bleEvent.systemKey("home")
if (_bleResultOk(home)) {
logd("执行home成功")
} else {
logd("执行home失败 {}", home)
}
}
function test_wifi_and_reset() {
logd("这里是用来输入WiFi信息和重启的,一般WiFi设置好了不需要重复设置,这里是例子")
let ir = bleEvent.setWifiInfo("wdes", "11111111")
if (_bleResultOk(ir)) {
logd("设置WiFi信息成功")
} else {
logw("设置WiFi信息失败 {}", ir)
}
sleep(1000)
let rr = bleEvent.resetBle()
if (_bleResultOk(rr)) {
logd("重置开发板 成功")
} else {
logw("重置开发板 失败 {}", ir)
}
}
function initMouse() {
let msg = device.getDeviceMsg()
let productType = "";
let bleWifiIp = "";
if (!_bleResultOk(msg)) {
// 获取iPhone的类型,用来判断缩放标准
let bb = JSON.parse(msg);
productType = bb["productType"];
bleWifiIp = bb["bleWifiIp"];
}
let scale = bleEvent.getIPhoneScale();
logd("当前手机类型: {} , 缩放比例: {} 蓝牙开发板的IP: {}", productType, scale, bleWifiIp)
//设置缩放比例,防止鼠标移动距离和手机上的像素点对不上
bleEvent.setScale(scale, scale)
let img = image.captureFullScreenNoAuto();
if (img) {
let w = img.getWidth();
let h = img.getHeight();
if (w > 0 && h > 0) {
// 设置 屏幕的高度和宽度,防止鼠标漂移到屏幕外,如果不设置,就需要自己控制坐标不要漂移出去
logd("设置屏幕的高度和宽度")
bleEvent.setScreenSize(w, h)
}
}
}
/**
* 链接方式
* @param type 1=串口 2 = 网络
* @param timeout 超时时间
* @return {boolean} true = 成功 false = 失败
*/
function openConnect(type, timeout) {
if (type == 2) {
logd("设置为网络通信模式...")
bleEvent.setSendCmdType(2)
return true;
} else {
logd("准备打开串口通信...")
bleEvent.setSendCmdType(1)
// 连续开启三次 如果还不行 就是失败了
for (let i = 0; i < 3; i++) {
// 先关闭一次
// bleEvent.closeSerial();
sleep(1000 + (200 * 3))
let rr = bleEvent.openSerial(timeout)
if (_bleResultOk(rr)) {
return true;
}
}
}
return false;
}
function _bleResultOk(r) {
return r == null || r == "";
}
main();
bleEvent.setScale 设置鼠标补偿比率
- 设置鼠标补偿比率
- 如果没有你的机型,需你自己使用鼠标移动的方式尝试计算
- 鼠标移动1单位,像素移动多少单位,这样的比率,默认是2.0
- iPhone 6/7/8 375 x 667 设置为 2.0,标准 16:9,无安全区干扰。
- iPhone 11 / XR 414 x 896 设置为 1.96 屏幕变长,系统加速补偿 Y 轴。
- iPhone X/XS/11Pro 375 x 812 设置为 1.98 纵横比 19.5:9,存在微小加速。
- iPhone 12/13/14/15 390 x 844 设置为 1.97 逻辑点数与 11 不同,加速曲线略有变动。
- Plus / Max 系列 414 x 896 / 430 x 932 设置为1.94 ~ 1.95 屏幕最高,系统为了操作效率会大幅增加 Y 轴增益。
- 这个是没有算法的,都是实验推测出来的
- 适配EC iOS USB版本9.20.0+
- @param x_scale x坐标系浮点数
- @param y_scale x坐标系浮点数
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.getIPhoneScale 获取计算缩放值
- 根据 iPhone 硬件标识符的前缀(忽略逗号后数字)返回缩放值
- @returns
{number}浮点型 缩放比例
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.setScreenSize 设置屏幕尺寸
- 这个用来防止鼠标移动到屏幕外,导致鼠标偏移
- 如果不知道屏幕尺寸,就使用截图后的图片的宽度和高度
- 适配EC iOS USB版本9.20.0+
- @param w 屏幕的宽度
- @param h 屏幕的高度
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.setSendCmdType 设置通信方式
- 设置通信方式
- 用来设置是通过串口还是通过网络和开发板通信
- 默认是 串口
- 适配EC iOS USB版本9.20.0+
- @param tt 1 串口 2 网络
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.setWifiInfo 设置网络信息
- 设置网络信息
- 方便开发板联网
- 适配EC iOS USB版本9.20.0+
- @param name WiFi名称
- @param pwd WiFi 密码
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.resetBle 重启开发板
- 重启开发板
- 相当于按了开发板的RST键
- 适配EC iOS USB版本9.20.0+
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.closeSerial 关闭串口通信
- 关闭串口通信
- 适配EC iOS USB版本9.20.0+
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.mouseMove 移动鼠标
- 移动鼠标
- 只移动鼠标,没有按下动作
- 适配EC iOS USB版本9.20.0+
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.resetZero 鼠标归零
- 鼠标归零
- 鼠标移动到0,0的右上角坐标
- 适配EC iOS USB版本9.20.0+
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.touchDown 按下坐标点
- 按下坐标点
- 适配EC iOS USB版本9.20.0+
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.touchMove 移动坐标点
- 移动坐标点
- 适配EC iOS USB版本9.20.0+
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.touchUp 抬起坐标点
- 抬起坐标点
- 适配EC iOS USB版本9.20.0+
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.clickPoint 点击坐标点
- 点击坐标点
- 适配EC iOS USB版本9.20.0+
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.press 长按坐标
- 长按坐标
- 适配EC iOS USB版本9.20.0+
- @param x x坐标
- @param y y坐标
- @param delay 长按时间 毫秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();
bleEvent.doubleClickPoint 双击坐标
- 双击坐标
- 适配EC iOS USB版本9.20.0+
- @param x x坐标
- @param y y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 参考 bleEvent.openSerial 例子
}
main();