style: fix using autocorrect

This commit is contained in:
Eli Yip 2025-05-27 09:27:08 +08:00
parent 53988079da
commit 68a72ae10d
No known key found for this signature in database
GPG Key ID: C98B69D4CF7D7EC5
4 changed files with 66 additions and 66 deletions

View File

@ -8,7 +8,7 @@
* **动态手型配置**:支持左手和右手手型的动态切换。 * **动态手型配置**:支持左手和右手手型的动态切换。
* **灵活接口配置**:支持多种 CAN 接口(如 `can0`, `can1`),可通过命令行参数或环境变量动态设置。 * **灵活接口配置**:支持多种 CAN 接口(如 `can0`, `can1`),可通过命令行参数或环境变量动态设置。
* **手指与掌部姿态控制**提供手指6字节和掌部4字节姿态数据发送功能。 * **手指与掌部姿态控制**提供手指6 字节和掌部4 字节)姿态数据发送功能。
* **预设动作执行**:内置丰富的手势动作,如握拳、张开、捏取、点赞、数字手势等。 * **预设动作执行**:内置丰富的手势动作,如握拳、张开、捏取、点赞、数字手势等。
* **实时动画控制**:支持波浪、横向摆动等动画效果,用户可动态启动和停止。 * **实时动画控制**:支持波浪、横向摆动等动画效果,用户可动态启动和停止。
* **传感器数据实时监控**:提供接口压力数据的实时模拟和更新。 * **传感器数据实时监控**:提供接口压力数据的实时模拟和更新。

View File

@ -19,7 +19,7 @@ func ParseConfig() *define.Config {
flag.StringVar(&cfg.CanServiceURL, "can-url", "http://127.0.0.1:5260", "CAN 服务的 URL") flag.StringVar(&cfg.CanServiceURL, "can-url", "http://127.0.0.1:5260", "CAN 服务的 URL")
flag.StringVar(&cfg.WebPort, "port", "9099", "Web 服务的端口") flag.StringVar(&cfg.WebPort, "port", "9099", "Web 服务的端口")
flag.StringVar(&cfg.DefaultInterface, "interface", "", "默认 CAN 接口") flag.StringVar(&cfg.DefaultInterface, "interface", "", "默认 CAN 接口")
flag.StringVar(&canInterfacesFlag, "can-interfaces", "", "支持的 CAN 接口列表,用逗号分隔 (例如: can0,can1,vcan0)") flag.StringVar(&canInterfacesFlag, "can-interfaces", "", "支持的 CAN 接口列表,用逗号分隔 (例如can0,can1,vcan0)")
flag.Parse() flag.Parse()
// 环境变量覆盖命令行参数 // 环境变量覆盖命令行参数
@ -45,7 +45,7 @@ func ParseConfig() *define.Config {
} }
} }
// 如果没有指定可用接口,从CAN服务获取 // 如果没有指定可用接口,从 CAN 服务获取
if len(cfg.AvailableInterfaces) == 0 { if len(cfg.AvailableInterfaces) == 0 {
log.Println("🔍 未指定可用接口,将从 CAN 服务获取...") log.Println("🔍 未指定可用接口,将从 CAN 服务获取...")
cfg.AvailableInterfaces = getAvailableInterfacesFromCanService(cfg.CanServiceURL) cfg.AvailableInterfaces = getAvailableInterfacesFromCanService(cfg.CanServiceURL)
@ -59,7 +59,7 @@ func ParseConfig() *define.Config {
return cfg return cfg
} }
// 从CAN服务获取可用接口 // 从 CAN 服务获取可用接口
func getAvailableInterfacesFromCanService(canServiceURL string) []string { func getAvailableInterfacesFromCanService(canServiceURL string) []string {
resp, err := http.Get(canServiceURL + "/api/interfaces") resp, err := http.Get(canServiceURL + "/api/interfaces")
if err != nil { if err != nil {

View File

@ -39,7 +39,7 @@
<div class="container"> <div class="container">
<div class="control-panel"> <div class="control-panel">
<h2>手指控制 <span class="info-badge">指令0x01</span></h2> <h2>手指控制 <span class="info-badge">指令 0x01</span></h2>
<div class="slider-group"> <div class="slider-group">
<h3>手指关节控制</h3> <h3>手指关节控制</h3>
@ -94,7 +94,7 @@
</div> </div>
<div class="slider-group"> <div class="slider-group">
<h3>掌部控制 <span class="info-badge">指令0x04</span></h3> <h3>掌部控制 <span class="info-badge">指令 0x04</span></h3>
<div class="slider-container"> <div class="slider-container">
<div class="slider-label"> <div class="slider-label">
<span>关节 7</span> <span>关节 7</span>

View File

@ -53,7 +53,7 @@ const LinkerHandController = {
PALM_BIG_OPEN: [128, 128, 128, 128], // 大张开掌部 PALM_BIG_OPEN: [128, 128, 128, 128], // 大张开掌部
YEAH: [0, 103, 255, 255, 0, 0], // Yeah! YEAH: [0, 103, 255, 255, 0, 0], // Yeah!
PALM_YEAH: [255, 235, 128, 128], // Yeah!掌部 PALM_YEAH: [255, 235, 128, 128], // Yeah! 掌部
// 数字手势预设 // 数字手势预设
ONE: [0, 57, 255, 0, 0, 0], ONE: [0, 57, 255, 0, 0, 0],
@ -199,7 +199,7 @@ const LinkerHandController = {
return; return;
} }
logMessage('info', `发送掌部姿态到 ${enabledHands.length} 个启用的手部: [${pose.join(', ')}]`); logMessage('info', `发送掌部姿态到 ${enabledHands.length} 个启用的手部[${pose.join(', ')}]`);
enabledHands.forEach(async (config) => { enabledHands.forEach(async (config) => {
await sendPalmPoseToHand(config, pose); await sendPalmPoseToHand(config, pose);
@ -214,7 +214,7 @@ const LinkerHandController = {
// 设置定时获取 // 设置定时获取
setInterval(() => { setInterval(() => {
this.fetchSensorData(); this.fetchSensorData();
}, 2000); // 每2秒更新一次 }, 2000); // 每 2 秒更新一次
}, },
// 获取传感器数据 // 获取传感器数据
@ -227,7 +227,7 @@ const LinkerHandController = {
} }
}) })
.catch(error => { .catch(error => {
console.error('获取传感器数据失败:', error); console.error('获取传感器数据失败', error);
}); });
}, },
@ -250,7 +250,7 @@ const LinkerHandController = {
// 更新最后更新时间 // 更新最后更新时间
const lastUpdate = new Date(data.lastUpdate).toLocaleTimeString(); const lastUpdate = new Date(data.lastUpdate).toLocaleTimeString();
html += `<div style="text-align:right;font-size:0.8em;margin-top:5px;">最后更新: ${lastUpdate}</div>`; html += `<div style="text-align:right;font-size:0.8em;margin-top:5px;">最后更新${lastUpdate}</div>`;
sensorDisplay.innerHTML = html; sensorDisplay.innerHTML = html;
}, },
@ -281,7 +281,7 @@ async function initializeSystem() {
try { try {
logMessage('info', '开始初始化系统...'); logMessage('info', '开始初始化系统...');
// 步骤1: 加载可用接口 // 步骤 1: 加载可用接口
logMessage('info', '步骤 1/3: 加载可用接口'); logMessage('info', '步骤 1/3: 加载可用接口');
await loadAvailableInterfaces(); await loadAvailableInterfaces();
@ -290,7 +290,7 @@ async function initializeSystem() {
throw new Error('未能获取到任何可用接口'); throw new Error('未能获取到任何可用接口');
} }
// 步骤2: 生成手部配置 // 步骤 2: 生成手部配置
logMessage('info', '步骤 2/3: 生成手部配置'); logMessage('info', '步骤 2/3: 生成手部配置');
generateHandConfigs(); generateHandConfigs();
@ -299,14 +299,14 @@ async function initializeSystem() {
throw new Error('未能生成手部配置'); throw new Error('未能生成手部配置');
} }
// 步骤3: 检查接口状态 // 步骤 3: 检查接口状态
logMessage('info', '步骤 3/3: 检查接口状态'); logMessage('info', '步骤 3/3: 检查接口状态');
await checkAllInterfaceStatus(); await checkAllInterfaceStatus();
logMessage('success', '系统初始化完成'); logMessage('success', '系统初始化完成');
} catch (error) { } catch (error) {
logMessage('error', `系统初始化失败: ${error.message}`); logMessage('error', `系统初始化失败${error.message}`);
console.error('InitializeSystem Error:', error); console.error('InitializeSystem Error:', error);
// 尝试使用默认配置恢复 // 尝试使用默认配置恢复
@ -332,13 +332,13 @@ async function loadAvailableInterfaces() {
if (data.status === 'success') { if (data.status === 'success') {
availableInterfaces = data.data.availableInterfaces || []; availableInterfaces = data.data.availableInterfaces || [];
logMessage('success', `获取到 ${availableInterfaces.length} 个可用接口: ${availableInterfaces.join(', ')}`); logMessage('success', `获取到 ${availableInterfaces.length} 个可用接口${availableInterfaces.join(', ')}`);
hideConnectionWarning(); hideConnectionWarning();
} else { } else {
throw new Error(data.error || '获取接口失败'); throw new Error(data.error || '获取接口失败');
} }
} catch (error) { } catch (error) {
logMessage('error', `获取接口失败: ${error.message}`); logMessage('error', `获取接口失败${error.message}`);
showConnectionWarning(); showConnectionWarning();
// 设置默认值 // 设置默认值
availableInterfaces = ['can0', 'can1', 'vcan0', 'vcan1']; availableInterfaces = ['can0', 'can1', 'vcan0', 'vcan1'];
@ -358,7 +358,7 @@ function generateHandConfigs() {
handsGrid.innerHTML = ''; handsGrid.innerHTML = '';
if (!availableInterfaces || availableInterfaces.length === 0) { if (!availableInterfaces || availableInterfaces.length === 0) {
handsGrid.innerHTML = '<div style="text-align: center; color: #666; padding: 20px;">没有可用的CAN接口</div>'; handsGrid.innerHTML = '<div style="text-align: center; color: #666; padding: 20px;">没有可用的 CAN 接口</div>';
logMessage('warning', '没有可用接口,无法生成手部配置'); logMessage('warning', '没有可用接口,无法生成手部配置');
return; return;
} }
@ -402,7 +402,7 @@ function generateHandConfigs() {
}, 100); }, 100);
} }
// 添加一个安全的DOM检查函数 // 添加一个安全的 DOM 检查函数
function validateHandElement(handId) { function validateHandElement(handId) {
const element = document.getElementById(handId); const element = document.getElementById(handId);
if (!element) { if (!element) {
@ -444,7 +444,7 @@ function safeUpdateHandElement(handId) {
} }
} catch (error) { } catch (error) {
console.error(`Error updating hand element ${handId}:`, error); console.error(`Error updating hand element ${handId}:`, error);
logMessage('error', `更新手部元素 ${handId} 时出错: ${error.message}`); logMessage('error', `更新手部元素 ${handId} 时出错${error.message}`);
} }
} }
@ -458,7 +458,7 @@ function createHandElement(config) {
const handLabel = config.handType === 'left' ? '左手' : '右手'; const handLabel = config.handType === 'left' ? '左手' : '右手';
const handId = handTypeIds[config.handType]; const handId = handTypeIds[config.handType];
// 确保HTML结构完整且正确 // 确保 HTML 结构完整且正确
div.innerHTML = ` div.innerHTML = `
<div class="hand-header"> <div class="hand-header">
<input type="checkbox" class="hand-checkbox" id="${config.id}_checkbox" ${config.enabled ? 'checked' : ''}> <input type="checkbox" class="hand-checkbox" id="${config.id}_checkbox" ${config.enabled ? 'checked' : ''}>
@ -487,7 +487,7 @@ function createHandElement(config) {
</div> </div>
`; `;
// 使用 requestAnimationFrame 确保DOM完全渲染后再设置事件监听器 // 使用 requestAnimationFrame 确保 DOM 完全渲染后再设置事件监听器
requestAnimationFrame(() => { requestAnimationFrame(() => {
setTimeout(() => { setTimeout(() => {
setupHandEventListeners(config.id); setupHandEventListeners(config.id);
@ -506,17 +506,17 @@ function setupHandEventListeners(handId) {
// 检查所有必需的元素是否存在 // 检查所有必需的元素是否存在
if (!checkbox) { if (!checkbox) {
console.error(`setupHandEventListeners: 找不到checkbox - ${handId}_checkbox`); console.error(`setupHandEventListeners: 找不到 checkbox - ${handId}_checkbox`);
return; return;
} }
if (!interfaceSelect) { if (!interfaceSelect) {
console.error(`setupHandEventListeners: 找不到interfaceSelect - ${handId}_interface`); console.error(`setupHandEventListeners: 找不到 interfaceSelect - ${handId}_interface`);
return; return;
} }
if (!handTypeSelect) { if (!handTypeSelect) {
console.error(`setupHandEventListeners: 找不到handTypeSelect - ${handId}_handtype`); console.error(`setupHandEventListeners: 找不到 handTypeSelect - ${handId}_handtype`);
return; return;
} }
@ -588,7 +588,7 @@ function updateHandElement(handId) {
// 安全地更新手型标签 // 安全地更新手型标签
const handTypeLabels = element.querySelectorAll('.control-label'); const handTypeLabels = element.querySelectorAll('.control-label');
if (handTypeLabels.length >= 2) { if (handTypeLabels.length >= 2) {
const handTypeLabel = handTypeLabels[1]; // 第二个label是手型的 const handTypeLabel = handTypeLabels[1]; // 第二个 label 是手型的
if (handTypeLabel) { if (handTypeLabel) {
handTypeLabel.textContent = `手型 (CAN ID: 0x${handIdHex.toString(16).toUpperCase()})`; handTypeLabel.textContent = `手型 (CAN ID: 0x${handIdHex.toString(16).toUpperCase()})`;
} }
@ -654,7 +654,7 @@ async function checkAllInterfaceStatus() {
hideConnectionWarning(); hideConnectionWarning();
} catch (error) { } catch (error) {
logMessage('error', `状态检查失败: ${error.message}`); logMessage('error', `状态检查失败${error.message}`);
console.error('CheckAllInterfaceStatus Error:', error); console.error('CheckAllInterfaceStatus Error:', error);
showConnectionWarning(); showConnectionWarning();
setAllHandStatusOffline(); setAllHandStatusOffline();
@ -739,7 +739,7 @@ function setupEventListeners() {
document.getElementById('start-sway').addEventListener('click', () => startAnimationForAll('sway')); document.getElementById('start-sway').addEventListener('click', () => startAnimationForAll('sway'));
document.getElementById('stop-animation').addEventListener('click', stopAllAnimations); document.getElementById('stop-animation').addEventListener('click', stopAllAnimations);
// 预设姿势按钮 - 使用LinkerHandController的预设 // 预设姿势按钮 - 使用 LinkerHandController 的预设
setupPresetButtons(); setupPresetButtons();
// 数字手势按钮事件 // 数字手势按钮事件
@ -797,7 +797,7 @@ function setupPresetButtons() {
function setupNumericPresets() { function setupNumericPresets() {
const delayDefault = 30; const delayDefault = 30;
// 数字1-9的预设 // 数字 1-9 的预设
for (let i = 1; i <= 9; i++) { for (let i = 1; i <= 9; i++) {
const button = document.getElementById(`pose-${i}`); const button = document.getElementById(`pose-${i}`);
if (button) { if (button) {
@ -829,7 +829,7 @@ function getNumberName(num) {
return names[num] || ''; return names[num] || '';
} }
// 设置Refill Core功能 // 设置 Refill Core 功能
function setupRefillCore() { function setupRefillCore() {
document.getElementById("refill-core").addEventListener("click", () => { document.getElementById("refill-core").addEventListener("click", () => {
event.preventDefault(); event.preventDefault();
@ -844,32 +844,32 @@ function setupRefillCore() {
[[246, 155, 154, 25], [140, 62, 0, 15, 29, 143]], // 小指 [[246, 155, 154, 25], [140, 62, 0, 15, 29, 143]], // 小指
]; ];
const delayTime = 350; // 设定延迟时间为350ms const delayTime = 350; // 设定延迟时间为 350ms
// 创建完整的序列:从第一个到最后一个,再从最后一个回到第二个 // 创建完整的序列:从第一个到最后一个,再从最后一个回到第二个
const forwardIndices = [...Array(rukaPoseList.length).keys()]; // [0,1,2,3] const forwardIndices = [...Array(rukaPoseList.length).keys()]; // [0,1,2,3]
const backwardIndices = [...forwardIndices].reverse().slice(1); // [3,2,1] const backwardIndices = [...forwardIndices].reverse().slice(1); // [3,2,1]
const sequenceIndices = [...forwardIndices, ...backwardIndices]; const sequenceIndices = [...forwardIndices, ...backwardIndices];
// 遍历序列索引为每个索引创建两个操作palm和finger // 遍历序列索引为每个索引创建两个操作palm finger
sequenceIndices.forEach((index, step) => { sequenceIndices.forEach((index, step) => {
const targetPose = rukaPoseList[index]; const targetPose = rukaPoseList[index];
// 应用palm预设 // 应用 palm 预设
setTimeout(() => { setTimeout(() => {
console.log(`Step ${step+1}a: Applying palm preset for pose ${index+1}`); console.log(`Step ${step+1}a: Applying palm preset for pose ${index+1}`);
LinkerHandController.applyPalmPreset(targetPose[0]); LinkerHandController.applyPalmPreset(targetPose[0]);
const palmPose = LinkerHandController.getPalmPoseValues(); const palmPose = LinkerHandController.getPalmPoseValues();
LinkerHandController.sendPalmPoseToAll(palmPose); LinkerHandController.sendPalmPoseToAll(palmPose);
}, delayTime * (step * 2)); // 每个完整步骤有两个操作,所以是step*2 }, delayTime * (step * 2)); // 每个完整步骤有两个操作,所以是 step*2
// 应用finger预设 // 应用 finger 预设
setTimeout(() => { setTimeout(() => {
console.log(`Step ${step+1}b: Applying finger preset for pose ${index+1}`); console.log(`Step ${step+1}b: Applying finger preset for pose ${index+1}`);
LinkerHandController.applyFingerPreset(targetPose[1]); LinkerHandController.applyFingerPreset(targetPose[1]);
const fingerPose = LinkerHandController.getFingerPoseValues(); const fingerPose = LinkerHandController.getFingerPoseValues();
LinkerHandController.sendFingerPoseToAll(fingerPose); LinkerHandController.sendFingerPoseToAll(fingerPose);
}, delayTime * (step * 2 + 1)); // 偏移一个delayTime }, delayTime * (step * 2 + 1)); // 偏移一个 delayTime
}); });
}); });
} }
@ -1196,7 +1196,7 @@ function logMessage(type, message) {
statusLog.appendChild(logEntry); statusLog.appendChild(logEntry);
statusLog.scrollTop = statusLog.scrollHeight; statusLog.scrollTop = statusLog.scrollHeight;
// 保持最多50条日志 // 保持最多 50 条日志
const entries = statusLog.querySelectorAll('.log-entry'); const entries = statusLog.querySelectorAll('.log-entry');
if (entries.length > 50) { if (entries.length > 50) {
statusLog.removeChild(entries[0]); statusLog.removeChild(entries[0]);
@ -1205,12 +1205,12 @@ function logMessage(type, message) {
// 启动状态更新器 // 启动状态更新器
function startStatusUpdater() { function startStatusUpdater() {
// 每5秒检查一次接口状态 // 每 5 秒检查一次接口状态
setInterval(async () => { setInterval(async () => {
await checkAllInterfaceStatus(); await checkAllInterfaceStatus();
}, 5000); }, 5000);
// 每30秒刷新一次接口列表 // 每 30 秒刷新一次接口列表
setInterval(async () => { setInterval(async () => {
const oldInterfaces = [...availableInterfaces]; const oldInterfaces = [...availableInterfaces];
await loadAvailableInterfaces(); await loadAvailableInterfaces();
@ -1226,7 +1226,7 @@ function startStatusUpdater() {
async function debugSystemStatus() { async function debugSystemStatus() {
logMessage('info', '🔍 开始系统调试...'); logMessage('info', '🔍 开始系统调试...');
// 检查HTML元素 // 检查 HTML 元素
const elements = { const elements = {
'hands-grid': document.getElementById('hands-grid'), 'hands-grid': document.getElementById('hands-grid'),
'status-log': document.getElementById('status-log'), 'status-log': document.getElementById('status-log'),
@ -1243,11 +1243,11 @@ async function debugSystemStatus() {
}); });
// 检查全局变量 // 检查全局变量
logMessage('info', `可用接口: [${availableInterfaces.join(', ')}]`); logMessage('info', `可用接口[${availableInterfaces.join(', ')}]`);
logMessage('info', `手部配置数量: ${Object.keys(handConfigs).length}`); logMessage('info', `手部配置数量${Object.keys(handConfigs).length}`);
logMessage('info', `启用手部数量: ${getEnabledHands().length}`); logMessage('info', `启用手部数量${getEnabledHands().length}`);
// 测试API连通性 // 测试 API 连通性
try { try {
logMessage('info', '测试 /api/health 连接...'); logMessage('info', '测试 /api/health 连接...');
const response = await fetch('/api/health'); const response = await fetch('/api/health');
@ -1256,40 +1256,40 @@ async function debugSystemStatus() {
logMessage('success', '✅ 健康检查通过'); logMessage('success', '✅ 健康检查通过');
console.log('Health Check Data:', data); console.log('Health Check Data:', data);
} else { } else {
logMessage('error', `❌ 健康检查失败: HTTP ${response.status}`); logMessage('error', `❌ 健康检查失败HTTP ${response.status}`);
} }
} catch (error) { } catch (error) {
logMessage('error', `❌ 健康检查异常: ${error.message}`); logMessage('error', `❌ 健康检查异常${error.message}`);
} }
// 测试接口API // 测试接口 API
try { try {
logMessage('info', '测试 /api/interfaces 连接...'); logMessage('info', '测试 /api/interfaces 连接...');
const response = await fetch('/api/interfaces'); const response = await fetch('/api/interfaces');
if (response.ok) { if (response.ok) {
const data = await response.json(); const data = await response.json();
logMessage('success', '✅ 接口API通过'); logMessage('success', '✅ 接口 API 通过');
console.log('Interfaces API Data:', data); console.log('Interfaces API Data:', data);
} else { } else {
logMessage('error', `❌ 接口API失败: HTTP ${response.status}`); logMessage('error', `❌ 接口 API 失败:HTTP ${response.status}`);
} }
} catch (error) { } catch (error) {
logMessage('error', `❌ 接口API异常: ${error.message}`); logMessage('error', `❌ 接口 API 异常:${error.message}`);
} }
} }
// 导出全局函数供HTML按钮使用 // 导出全局函数供 HTML 按钮使用
window.triggerButtonsSequentially = triggerButtonsSequentially; window.triggerButtonsSequentially = triggerButtonsSequentially;
window.debugSystemStatus = debugSystemStatus; window.debugSystemStatus = debugSystemStatus;
// 添加全局错误处理 // 添加全局错误处理
window.addEventListener('error', function(event) { window.addEventListener('error', function(event) {
logMessage('error', `全局错误: ${event.error?.message || event.message}`); logMessage('error', `全局错误${event.error?.message || event.message}`);
console.error('Global Error:', event.error); console.error('Global Error:', event.error);
}); });
window.addEventListener('unhandledrejection', function(event) { window.addEventListener('unhandledrejection', function(event) {
logMessage('error', `未处理的Promise拒绝: ${event.reason?.message || event.reason}`); logMessage('error', `未处理的 Promise 拒绝:${event.reason?.message || event.reason}`);
console.error('Unhandled Promise Rejection:', event.reason); console.error('Unhandled Promise Rejection:', event.reason);
}); });
@ -1333,7 +1333,7 @@ document.addEventListener('keydown', function(e) {
toggleAllHands(); toggleAllHands();
} }
// 数字键1-9快速设置预设姿势 // 数字键 1-9 快速设置预设姿势
if (e.key >= '1' && e.key <= '9' && !e.ctrlKey && !e.altKey) { if (e.key >= '1' && e.key <= '9' && !e.ctrlKey && !e.altKey) {
const activeElement = document.activeElement; const activeElement = document.activeElement;
// 确保不在输入框中 // 确保不在输入框中
@ -1373,7 +1373,7 @@ function addTooltips() {
'start-wave': '启动所有启用手部的手指波浪动画', 'start-wave': '启动所有启用手部的手指波浪动画',
'start-sway': '启动所有启用手部的掌部摆动动画', 'start-sway': '启动所有启用手部的掌部摆动动画',
'stop-animation': '停止所有启用手部的动画', 'stop-animation': '停止所有启用手部的动画',
'refill-core': '执行Refill Core动作序列' 'refill-core': '执行 Refill Core 动作序列'
}; };
Object.entries(tooltips).forEach(([id, text]) => { Object.entries(tooltips).forEach(([id, text]) => {
@ -1411,8 +1411,8 @@ async function startSequentialHandAnimation(animationType = 'wave', interval = 5
return getInterfaceNumber(a.interface) - getInterfaceNumber(b.interface); return getInterfaceNumber(a.interface) - getInterfaceNumber(b.interface);
}); });
logMessage('info', `开始六手依次动画 - 类型: ${animationType}, 间隔: ${interval}ms, 循环: ${cycles}`); logMessage('info', `开始六手依次动画 - 类型${animationType}, 间隔:${interval}ms, 循环:${cycles}`);
logMessage('info', `动画顺序: ${sortedHands.map(h => h.interface).join(' → ')}`); logMessage('info', `动画顺序${sortedHands.map(h => h.interface).join(' → ')}`);
// 定义动画预设 // 定义动画预设
const animationPresets = { const animationPresets = {
@ -1466,12 +1466,12 @@ async function startSequentialHandAnimation(animationType = 'wave', interval = 5
[64, 64, 64, 64, 64, 64], // 握拳 (0) [64, 64, 64, 64, 64, 64], // 握拳 (0)
], ],
palmPoses: [ palmPoses: [
[255, 109, 255, 118], // 5对应的掌部 [255, 109, 255, 118], // 5 对应的掌部
[255, 109, 255, 118], // 4对应的掌部 [255, 109, 255, 118], // 4 对应的掌部
[255, 109, 255, 118], // 3对应的掌部 [255, 109, 255, 118], // 3 对应的掌部
[255, 109, 255, 118], // 2对应的掌部 [255, 109, 255, 118], // 2 对应的掌部
[255, 109, 255, 118], // 1对应的掌部 [255, 109, 255, 118], // 1 对应的掌部
[128, 128, 128, 128], // 0对应的掌部 [128, 128, 128, 128], // 0 对应的掌部
] ]
}, },
@ -1480,7 +1480,7 @@ async function startSequentialHandAnimation(animationType = 'wave', interval = 5
fingerPoses: [ fingerPoses: [
[64, 64, 64, 64, 64, 64], // 起始握拳 [64, 64, 64, 64, 64, 64], // 起始握拳
[128, 64, 64, 64, 64, 64], // 拇指起 [128, 64, 64, 64, 64, 64], // 拇指起
[255, 128, 64, 64, 64, 64], // 拇指+食指起 [255, 128, 64, 64, 64, 64], // 拇指 + 食指起
[255, 255, 128, 64, 64, 64], // 前三指起 [255, 255, 128, 64, 64, 64], // 前三指起
[255, 255, 255, 128, 64, 64], // 前四指起 [255, 255, 255, 128, 64, 64], // 前四指起
[255, 255, 255, 255, 128, 64], // 前五指起 [255, 255, 255, 255, 128, 64], // 前五指起
@ -1582,10 +1582,10 @@ async function startCustomSequentialAnimation(config) {
sortedHands = sortedHands.reverse(); sortedHands = sortedHands.reverse();
} }
logMessage('info', `开始自定义六手动画 - 方向: ${direction}, 同时手数: ${simultaneousHands}`); logMessage('info', `开始自定义六手动画 - 方向${direction}, 同时手数:${simultaneousHands}`);
// 执行动画逻辑... // 执行动画逻辑...
// 这里可以根据simultaneousHands参数同时控制多只手 // 这里可以根据 simultaneousHands 参数同时控制多只手
// 实现类似的动画逻辑,但支持更多自定义选项 // 实现类似的动画逻辑,但支持更多自定义选项
} }