创建新仓库

This commit is contained in:
2025-07-03 17:39:09 +08:00
commit c781d38c0c
12944 changed files with 807291 additions and 0 deletions

View File

@ -0,0 +1,148 @@
const dgram = require("dgram");
import { getmainWindow } from "../../index";
let server;
let Store = require("electron-store");
let store = new Store();
import { logger } from "../log";
let sandTable_udp_server_port = "sandTable_udp_server_port";
function Init() {
if (server) {
server.close();
server = null;
}
let port = GetUdpServerPort().port; //获取本地存储的udp端口
server = dgram.createSocket("udp4");
server.on("listening", () => {
const address = server.address();
console.log(`server running ${address.address}:${address.port}`);
});
server.on("message", (msg, remoteInfo) => {
console.log(
`udp server got ${msg} from ${remoteInfo.address}:${remoteInfo.port}`
);
// logger.info(msg.toString())
// server.send('world', remoteInfo.port, remoteInfo.address)
try {
var s = JSON.parse(msg.toString());
let positions = [];
//角度
let angle = 45;
if (typeof s == "string") s = JSON.parse(s);
console.log(s);
// if(s.hasOwnProperty("Placemark")){
if (s.Placemark.hasOwnProperty("Point")) {
let arr = s.Placemark.Point.coordinates.split(",");
let position = {
lng: Number(arr[0]),
lat: Number(arr[1]),
alt: Number(arr[2]) || 0,
};
if (arr.length > 2) position.alt = arr[2];
if (arr.length > 3) angle = arr[3];
positions.push(position);
} else {
let coordinates =
s.Placemark.Polygon.outerBoundaryIs.LinearRing.coordinates;
const parseCoordinates = (coords) => {
return coords.split(" ").map((pair) => {
const [lng, lat] = pair.split(",").map(Number);
return { lng, lat };
});
};
positions = parseCoordinates(coordinates);
}
getmainWindow().webContents.send(
sandTable_udp_server_port,
positions,
angle
);
// }else{
// console.log("内容不正确");
// }
} catch (err) {
console.log(err);
}
});
server.on("error", (err) => {
console.log("server error", err);
});
server.bind(port);
}
function sendMsg(val) {
let msg;
let port = store.get("sandTable_udp_client_port");
let ip = store.get("sandTable_udp_client_host");
let num = val.toString().split("");
let swit = Number(num.pop());
if (swit == 1 || swit == 0) {
let cnt = num.join("");
if (cnt == "FF") {
const message = Buffer.from([0xff, Number(swit)]);
server.send(message, port, ip);
msg = "发送成功";
} else {
let exp = /^[+-]?\d*(\.\d*)?(e[+-]?\d+)?$/;
if (exp.test(cnt)) {
let cntHex = cnt.toString(16);
let switHex = swit.toString(16);
const message = Buffer.from([cntHex, switHex], "hex");
server.send(message, port, ip);
msg = "发送成功";
} else {
msg = "接受失败";
}
}
}
return msg;
}
/*更新udpserver端口*/
function UpdateUdpServerPort(port) {
store.set(sandTable_udp_server_port, port);
//写进本地缓存
//重新启动udpserver
Init();
}
/*获取本地主机端口*/
function GetUdpServerPort() {
//从本地缓存获取
let port = 6000;
let server_port = store.get(sandTable_udp_server_port);
if (!server_port) {
store.set(sandTable_udp_server_port, port);
} else {
port = server_port;
}
let host = getHostIP();
return { port, host };
}
function getHostIP() {
const os = require("os");
const interfaces = os.networkInterfaces();
let hostIP = "";
console.log(interfaces);
for (const networkInterface in interfaces) {
if (networkInterface.indexOf("以太网") > -1) {
const iface = interfaces[networkInterface];
for (let i = 0; i < iface.length; i++) {
const { address, family, internal } = iface[i];
if (family === "IPv4" && !internal) {
hostIP = address;
break;
}
}
if (hostIP) {
break;
}
}
}
return hostIP;
}
export { GetUdpServerPort, UpdateUdpServerPort, Init, sendMsg };