纯前端上位机界面 + esp32_server.py 静态服务/桌面窗口外壳, 不含固件、 不直接访问硬件; 业务 API 由 ESP32_COMM 固件 80 端口跨域提供。 - tabs.html 单窗口多标签外壳, iframe 承载各功能页 - index.html OTA 中继(ESP32 WiFi / GD32 relay / BLE), js/ota + js/ble - can.html / can_monitor.html CAN 通信与接收监控, js/can - motor.html 电机 CAN FD 控制台, js/motor - continuity_test.html LAN9252 通断测试, spi_test.html SPI 测速(临时, 自包含) - 三入口: esp32_app.vbs 桌面窗口 / esp32_web.vbs 浏览器 / serve.bat 控制台调试 - 补 README(页面与目录约定、?v= 缓存版本等改动须知)、.gitignore、 .gitattributes(* -text 保持 Windows 换行原样)
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
/**
|
||
* base-url.js - 设备 IP / 基础 URL 公共助手
|
||
*
|
||
* 各页面共用 localStorage key dcu_esp_ip(OTA / CAN / 电机页一致)。
|
||
* 本模块只提供纯 localStorage + 默认值的通用实现;页面特有的输入框回退
|
||
* (如 CAN 页 el.toolIp、OTA 页 #espIp)由各自入口在此基础上包装。
|
||
*/
|
||
export var LS_ESP_IP = 'dcu_esp_ip';
|
||
export var DEFAULT_ESP_IP = '192.168.31.127';
|
||
|
||
/** @description 读取 localStorage 中保存的设备 IP,无有效值返回空串。 */
|
||
export function getSavedDeviceIp() {
|
||
try {
|
||
var saved = localStorage.getItem(LS_ESP_IP);
|
||
if (saved && saved.trim()) return saved.trim();
|
||
} catch (_) {}
|
||
return '';
|
||
}
|
||
|
||
/** @description 保存设备 IP 到 localStorage(空值忽略)。 */
|
||
export function saveDeviceIp(ip) {
|
||
if (!ip || !String(ip).trim()) return;
|
||
try { localStorage.setItem(LS_ESP_IP, String(ip).trim()); } catch (_) {}
|
||
}
|
||
|
||
/** @description 设备 IP:localStorage 优先,否则默认值。 */
|
||
export function getDeviceIp() {
|
||
return getSavedDeviceIp() || DEFAULT_ESP_IP;
|
||
}
|
||
|
||
/** @description 拼接设备基础 URL(http://<ip>)。 */
|
||
export function getBaseUrl() {
|
||
return 'http://' + getDeviceIp();
|
||
}
|