蓝牙BLE事件
说明
- 通过 PC ↔ ESP32 蓝牙 HID 板 ↔ 手机 注入触控与按键(手机作 HID Host)
- 脚本对象前缀是
bleEvent,例如bleEvent.clickPoint(100, 200) - 使用前请在中控右键 「蓝牙HID设置」 完成 UDID ↔ bleMac 绑定,手机已配对该板
- 适配版本:鸿蒙Next USB 中控 3.2.0+
- 配置与刷固件步骤见 蓝牙 BLE 教程
- 与 USB HID事件(
hidEvent)不同:USB HID 走数据线/AOA;本模块走蓝牙板
tip
- 触控为绝对像素坐标(与安卓 BleCommander 一致),需先
setScreenSize(宽, 高) - 通信方式:
setSendCmdType(1)串口(默认) /setSendCmdType(2)网络(板需已配网) - 返回值约定:
null或空字符串表示成功,其他字符串为错误信息 - 中文长文本请继续用代理输入(如
inputText),不要依赖 HID 键码
连接与配置
forceRefreshSerialPort 强制刷新串口与 MAC
- 强制刷新串口和 mac 的对应关系
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.forceRefreshSerialPort();
logd(r == null || r === "" ? "成功" : r);
}
main();
setScreenSize 设置屏幕尺寸
- 设置屏幕尺寸(触控坐标 w/h 上下文)
- 如果不知道屏幕尺寸,就使用截图后的图片的宽度和高度
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param w 屏幕的宽度
- @param h 屏幕的高度
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let img = image.captureFullScreen();
let w = img.getWidth();
let h = img.getHeight();
img.recycle();
let r = bleEvent.setScreenSize(w, h);
logd(r == null || r === "" ? "成功" : r);
}
main();
openSerial 打开串口通信
- 打开串口通信(PC↔板,bleConnectMode=1)
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param timeout 串口通信超时时间 单位是毫秒 默认是15秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
bleEvent.setSendCmdType(1);
let r = bleEvent.openSerial(15000);
logd(r == null || r === "" ? "成功" : r);
}
main();
closeSerial 关闭串口通信
- 关闭串口通信
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.closeSerial();
logd(r == null || r === "" ? "成功" : r);
}
main();
setSerialTimeout 设置串口超时
- 设置串口超时
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param out 串口通信超时时间 单位是毫秒 默认是15秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.setSerialTimeout(15000);
logd(r == null || r === "" ? "成功" : r);
}
main();
setSendCmdType 设置通信方式
- 用来设置是通过串口还是通过 网络和开发板通信,默认是串口
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param tt 1 串口 2 网络
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 1 串口 2 网络
let r = bleEvent.setSendCmdType(1);
logd(r == null || r === "" ? "成功" : r);
}
main();
setWifiInfo 设置开发板 WiFi
- 设置网络信息,方便开发板联网
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param name WiFi名称
- @param pwd WiFi 密码
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.setWifiInfo("your_ssid", "your_password");
logd(r == null || r === "" ? "成功" : r);
}
main();
resetBle 重启开发板
- 重启开发板(相当于按板子 RST)
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.resetBle();
logd(r == null || r === "" ? "成功" : r);
}
main();
light 点亮 LED
- 点亮开发板 LED
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param num 循环点亮次数
- @param lightToOff 从亮到灭过程的时间 单 位毫秒
- @param offToLight 从灭再到亮的过程时间 单位毫秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.light(3, 200, 100);
logd(r == null || r === "" ? "成功" : r);
}
main();
showBleName 显示蓝牙名称
- 显示蓝牙名称,便于搜索配对
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.showBleName();
logd(r == null || r === "" ? "成功" : r);
}
main();
hideBleName 隐藏蓝牙名称
- 隐藏蓝牙名称
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.hideBleName();
logd(r == null || r === "" ? "成功" : r);
}
main();
系统键与键盘
systemKey 系统按键
- 系统按键
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param key
home/recents(最近任务,鸿蒙为 Win+Tab)/back - @returns
{string}null或者空字符串,代表成 功,其他代表错误信息
function main() {
bleEvent.setSendCmdType(1);
bleEvent.openSerial(15000);
logd(bleEvent.systemKey("home"));
sleep(1000);
logd(bleEvent.systemKey("recents"));
sleep(1000);
logd(bleEvent.systemKey("back"));
}
main();
keyPress 按键(ASCII 码)
- 按键
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param prefix 组合键,可以为空:
alt/ctrl/gui/r_ctrl/r_shift/shift - @param code 整型 ASCII,例如 65 表示
A,97 表示a - @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 请先聚焦输入框
let r = bleEvent.keyPress("", 97);
logd(r == null || r === "" ? "成功" : r);
}
main();
keyPressChar 字符按键
- 字符按键
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param prefix 组合键,可以为空:
alt/ctrl/gui/r_ctrl/r_shift/shift - @param code 字符,例如
a - @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
// 请先聚焦输入框
let r = bleEvent.keyPressChar("", "a");
logd(r == null || r === "" ? "成功" : r);
}
main();
触控
clickPoint 点击坐标
- 点击坐标点(绝对像素)
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
bleEvent.setScreenSize(1080, 2400);
bleEvent.setSendCmdType(1);
bleEvent.openSerial(15000);
let r = bleEvent.clickPoint(540, 1200);
logd(r == null || r === "" ? "成功" : r);
}
main();
doubleClickPoint 双击坐标
- 双击坐标
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.doubleClickPoint(540, 1200);
logd(r == null || r === "" ? "成功" : r);
}
main();
press 长按坐标
- 长按坐标
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x x坐标
- @param y y坐标
- @param delay 长按时间 毫秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.press(540, 1200, 1500);
logd(r == null || r === "" ? "成功" : r);
}
main();
swipeToPoint 滑动
- 从一个坐标到另一个坐标的滑动
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param startX 起始坐标的X轴值
- @param startY 起始坐标的Y轴值
- @param endX 结束坐标的X轴值
- @param endY 结束坐标的Y轴值
- @param duration 持续时长 单位毫秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.swipeToPoint(200, 800, 200, 400, 800);
logd(r == null || r === "" ? "成功" : r);
}
main();
touchDown 按下
- 按下坐标点
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.touchDown(300, 900);
logd(r == null || r === "" ? "成功" : r);
}
main();
touchMove 移动
- 移动坐标点
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.touchMove(320, 920);
logd(r == null || r === "" ? "成功" : r);
}
main();
touchUp 抬起
- 抬起坐标点
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param x X坐标
- @param y Y坐标
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let r = bleEvent.touchUp(320, 920);
logd(r == null || r === "" ? "成功" : r);
}
main();
multiTouch 多点触摸
- 多点触摸
- 触摸参数: action :一般情况下 按下为0,弹起为1,移动为2
- x: X坐标 / y: Y坐标 / pointer :第几个手指 / delay: 延迟毫秒
- 适配鸿蒙Next USB 中控 3.2.0+版本
- @param touch1 触摸点数组
- @param timeout 多点触摸执行的超时时间,单位是毫秒
- @returns
{string}null或者空字符串,代表成功,其他代表错误信息
function main() {
let touch1 = [
{"action": 0, "x": 500, "y": 1200, "pointer": 1, "delay": 20},
{"action": 2, "x": 450, "y": 1100, "pointer": 1, "delay": 80},
{"action": 2, "x": 400, "y": 1000, "pointer": 1, "delay": 80},
{"action": 1, "x": 400, "y": 1000, "pointer": 1, "delay": 20}
];
let r = bleEvent.multiTouch(touch1, 10000);
logd(r == null || r === "" ? "成功" : r);
}
main();
快速连通示例
function main() {
let img = image.captureFullScreen();
let w = img.getWidth();
let h = img.getHeight();
img.recycle();
bleEvent.setScreenSize(w, h);
bleEvent.setSendCmdType(1); // 1串口 2网络
let r = bleEvent.openSerial(15000);
if (r != null && r !== "") {
logw("通信失败: " + r);
return;
}
bleEvent.systemKey("home");
sleep(800);
bleEvent.clickPoint(Math.floor(w / 2), Math.floor(h / 2));
}
main();