PAV 정부 과제 프로젝트 - front
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

98 lines
2.4 KiB

const { getConnection, writeData } = require('./pav-client');
const { dumyData } = require('./pav-utils');
// const host = "192.168.0.24"
// const host = "localhost"
const host = '211.253.38.218';
const port = 8082;
const prefix = 'TEST-DRON-';
const severalDrones = cnt => {
// 클라이언트 정보 저장공간
const clients = [];
// 최초 좌표
// y - y' : 37.57 -> 35.36
// x - x' : 126.60 -> 128.94
const firstCoord = [37.57, 126.6];
const lastCoord = [35.36, 128.94];
// 좌표 차이 계산
const diffX = firstCoord[0] - lastCoord[0];
const diffY = lastCoord[1] - firstCoord[1];
// 구분점
const divCnt = Math.round(Math.sqrt(cnt));
const divDiifX = diffX / divCnt;
const divDiifY = diffY / divCnt;
// 초기값 저장
for (let i = 0; i < cnt; i++) {
const client = {};
const suffix = i.toString().padStart(3, '0');
const dronName = prefix + suffix;
// client
client.dronName = dronName;
client.socket = getConnection(dronName, host, port);
const divX = i % divCnt;
const divY = Math.floor(i / divCnt);
const x = Number((firstCoord[0] - divX * divDiifX).toFixed(5)) || 0;
const y = Number((firstCoord[1] + divY * divDiifY).toFixed(5)) || 0;
const initialData = {
...dumyData,
terminalId: dronName,
body: [
{
...dumyData.body[0],
objectId: dronName,
lat: x,
lon: y
}
]
};
client.data = initialData;
clients.push(client);
}
return clients;
};
//
const clients = severalDrones(100);
const dist = 0.01;
const sendData = cnt => {
const direction = Math.floor(cnt / 10) % 4;
clients.forEach(item => {
switch (direction) {
case 1:
item.data.body[0].lat = Number(
(item.data.body[0].lat - dist).toFixed(5)
);
break;
case 2:
item.data.body[0].lon = Number(
(item.data.body[0].lon - dist).toFixed(5)
);
break;
case 3:
item.data.body[0].lat = Number(
(item.data.body[0].lat + dist).toFixed(5)
);
break;
default:
item.data.body[0].lon = Number(
(item.data.body[0].lon + dist).toFixed(5)
);
break;
}
writeData(item.socket, JSON.stringify(item.data));
});
if (cnt >= 39) cnt = null;
iteratorSendData(++cnt);
};
const iteratorSendData = (cnt = 0) => {
setTimeout(() => sendData(cnt), 1000);
};
iteratorSendData();