例子:冰狐脚本调用UsbClient和USB HID硬件通信
function main() {
var b = usb.connect();
console.log('connect:', b);
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
// usbRecentApps()
// usbSwipe(400, 2000, 600, 1000, 1000)
// usbBack(usb)
usbHome()
// usbClick(800, 650)
}
console.log('end')
}
function usbInit(screenWidth, screenHeight) {
usb.send([0xe].concat(int2bytes(screenWidth, 2), int2bytes(screenHeight, 2)))
sleep(3000)
}
function usbClick(x, y, duration) {
if (null == duration) {
duration = 200
}
usbMouseMove(x, y);
sleep(duration);
usbMouseUp(x, y);
}
function usbMouseMove(x, y) {
usb.send([0x9].concat(int2bytes(x, 2), int2bytes(y, 2)))
}
function usbMouseUp(x, y) {
usb.send([0xa].concat(int2bytes(x, 2), int2bytes(y, 2)))
}
function usbSwipe(x1, y1, x2, y2, duration) {
if (null == duration) {
duration = 300
}
var moveCount = randInt(6, 20)
var dTime = parseInt(duration / moveCount);
var startX = 0, startY = 0, endX = 0, endY = 0, useCurve = false;
if (x1 != x2 && y1 != y2) {
if (x1 < x2 && y1 > y2) {
startX = x1;
startY = y1;
endX = x2;
endY = y2;
useCurve = true;
} else if (x1 > x2 && y1 < y2) {
startX = x2;
startY = y2;
endX = x1;
endY = y1;
useCurve = true;
}
}
if (useCurve) {
var x = endX - startX;
var y = startY - endY;
var a = (endX - startX) / ((endY - startY) * (endY - startY));
var yb = y1;
var ya = (y2 - yb) / (moveCount * moveCount);
for (var i = 1; i < moveCount; ++i) {
var fY = (ya * i * i + yb);
var y = parseInt(fY);
var x = parseInt(a * (y - startY) * (y - startY) + startX);
if (i > 1 && i < moveCount - 1) {
x += randInt(0, 5) - 2;
y += randInt(0, 5) - 2;
}
usbMouseMove(usb, x, y)
sleep(dTime);
}
} else {
usbMouseMove(usb, x1, y1)
var a = (x1 - x2) / (y1 - y2);
var b = x1 - a * y1;
var yb = y1;
var ya = (y2 - yb) / (moveCount * moveCount);
for (var i = 1; i < moveCount; ++i) {
var fY = (ya * i * i + yb);
var y = parseInt(fY);
var x = parseInt((a * y + b));
if (i > 1 && i < moveCount - 1) {
x += randInt(0, 5) - 2;
y += randInt(0, 5) - 2;
}
usbMouseMove(usb, x, y)
sleep(dTime);
}
}
usbMouseMove(usb, x2, y2)
sleep(10);
usbMouseUp(usb, x2, y2)
}
function usbHome() {
usb.send([0x20])
}
function usbBack() {
usb.send([0xd])
}
function usbRecentApps() {
usb.send([0x8, 0x4, 0x2b])
}
function usbCopy() {
usb.send([0x08, 0x01, 0x06])
}
function usbPaste() {
usb.send([0x08, 0x01, 0x19])
}
function usbCut() {
usb.send([0x08, 0x01, 0x1B])
}
function usbSelectAll() {
usb.send([0x08, 0x01, 0x04])
}
| 参数名 | 类型 | 必填 | 说明 |
|---|
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string/byte array | 必填 | 待发送的数据,支持字符串和整数,注意:如果为数组时必须是整数数组(每个整数实际为一个byte)。 |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| timeout | integer | 选填 | 超时时间,单位毫秒,默认值10000 |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| x | integer | 必填 | x坐标 |
| y | integer | 必填 | y坐标 |
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.click(100, 200);
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| startX | integer | 必填 | 开始x坐标 |
| startY | integer | 必填 | 开始y坐标 |
| endX | integer | 必填 | 结束x坐标 |
| endY | integer | 必填 | 结束y坐标 |
| duration | integer | 选填 | 滑动时间,单位毫秒,默认:800 |
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.swipe(100, 800, 200, 300);
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.home();
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.back();
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.recentApps();
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| x | integer | 必填 | x坐标 |
| y | integer | 必填 | y坐标 |
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.mouseMove(100, 200);
}
} | 参数名 | 类型 | 必填 | 说明 |
|---|
function main() {
var b = usb.connect();
if (b) {
usbInit(rsScreenWidth, rsScreenHeight)
usb.mouseUp();
}
}