Initial commit

This commit is contained in:
ChK
2026-02-01 13:20:37 +01:00
commit fc7d40ac64
20 changed files with 1627 additions and 0 deletions

12
.gitignore vendored Executable file
View File

@@ -0,0 +1,12 @@
# Node
node_modules
npm-debug.log
yarn-debug.log
yarn-error.log
pnpm-debug.log
coverage
dist
build
.env
.env.
.DS_Store

40
3DInput.js Executable file
View File

@@ -0,0 +1,40 @@
const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const url = require('url');
const httpsOptions = {
"enable": true,
'key': fs.readFileSync('https/localhost.key'),
'cert': fs.readFileSync('https/localhost.pem'),
"passphrase": "abcd"
}
server = https.createServer(httpsOptions, (req, res) => {
let parsedURL = url.parse(req.url, true);
let path = parsedURL.path.replace(/^\/+|\/+$/g,"");
if(path == ""){ path = "index.html"; }
let file = __dirname + "/public/" + path;
console.log("file : " + file);
fs.readFile(file, function(err, content){
if(err){
console.log("File Not found "+ file);
res.writeHead(404);
res.end();
} else {
res.setHeader('X-Content-Type-Option', 'nosniff');
//let mime = lookup(path);
let mime = "text/html"
res.writeHead(200,{'Content-type': mime});
res.end(content);
}
})
});
server.listen(10010);
console.log("Connect to: https://localhost:10010")

2
CallCode.bat Executable file
View File

@@ -0,0 +1,2 @@
code .
exit

19
https/cert_abcd.cer Executable file
View File

@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDGDCCAgCgAwIBAgIQIKm3TdMAErVIFuSUWmXD1TANBgkqhkiG9w0BAQsFADAU
MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMjIwNzI3MTMwMDUzWhcNMjMwNzI3MTMy
MDUzWjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQC97MG8XIuUGoAskplE0qhMv5VyZ2Sgkp4vv8yLVP63VBvYPpg9
hi6w8HTCwhBIy2ZmUrztqQ7Ye8fFaWlowDnrTp10ewAiAWvpjxSyeJE7dfP1AQcb
x3/YgrOCvQfy/5Xtcnm1SC/9VtxutcePJMwvD6S/5dpkVeCUhVpPuagEGvzStMhk
ovMxxaTcEG++N+2CiEtBpe4xxmDs0mmZhhJgO5t6roYLZzy2Q3BSJ3FNHArOOD3R
hxh0aV9c4RHQUGSZVVUfwUORGDp5XMqlJjfSsnNncBDBex4byV9SBOkQ4mxKQa/c
LG2MQ1RjLSVXSZ3QFMDgWdw+FWIapiOCoMXJAgMBAAGjZjBkMA4GA1UdDwEB/wQE
AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwFAYDVR0RBA0wC4IJ
bG9jYWxob3N0MB0GA1UdDgQWBBSju5UGtw9Kz49/xVHoT0XnTlKtkDANBgkqhkiG
9w0BAQsFAAOCAQEAlEqbYXNgVTBLedFNOZz97IxrlAckG+4FMzcXIWhY55GvqwtL
gwWGrjKqGkXLhMVDzWHPSKWYxDdU6WJcBux9yuOz//s1Pro59jRIJvcOivbpXLPI
SaFPnc/29UeEDoh22AGr/9sAhOX2CrVMmrbaaDcZ8UN/YnT1bwufKFQipK1sGSR+
U5ISZ+pUXJ75aJFEZujucpFT1Sl6GWRWiL7u1Zacmm8jGIdZwpDIynSYK821fJMR
lVDQ9kPBBmU+Ummei/8vc+tqm2/3voekgLxIwxdpykn3L4JMtOn83+sZ2HVoS3Bz
/5+6Gc6u5+d3wLeO23q/sOARprC3ytzGc5bQRw==
-----END CERTIFICATE-----

BIN
https/cert_abcd.pfx Executable file

Binary file not shown.

4
https/info.txt Executable file
View File

@@ -0,0 +1,4 @@
abcd
SET OPENSSL_CONF="C:\Program Files (x86)\OpenSSL-Win32\bin\openssl.cfg"

27
https/key.pem Executable file
View File

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEArGn6Cbl+aqN8Fv0fW8IkDIHI3eF4mY6RdVIlJf9XD6amrUA4
fh3cyjriGKwT/KxB8B5czluo0kJ4ZDZvEDnfUkSdCXo2oCg6hBUfvcIA0X15rrn2
RdMZH8vtQ4P2ICrldpQS+A8ZnnnVnaGWql27sxygq6splqtXqhDBkuaA1x79mFlZ
6BRpELihDHpz0j67MgbRpQgauQSo5axPVYH4l7ZMhBX/u7USyfJyU+1aedNZ7Gtd
x5Hy4VytVYYO8y1/SaOAM6v/jo9C3rw8uEOvcs3+bK4+BrJBRGUzTRiQiBrx2mHx
BimZ0ZGtuLPVaU0EkFnXnBJnRtY/HaAMJghEQQIDAQABAoIBAQCptEpbZgxrdG2A
xzclfysycFDBLNwi8TR1cRyFkRYlnpgysaKpaEVZfKntNPsbWoYwjgI1T/0UsD6G
DRo2s3AALu8PVA8Oh2pJde1fPuTFTqcF957TTZxOMtBgAzSwpuhjVg5xwZMq7Kr5
VALTwB0viH8RWhE+b3qDN6kBKgcpNYc3/KEgW2Ernxt+UBY/iN5j80Q+cI87kr5U
uQ+bmGpDh0+uNpevinnfD06Dwle+eI1nDh+GjAfrdS7GU/PPFB78PTu5G1GOh6LB
debifPkBNs08890McHRspd3q59FPTyLcyetqhaBV1rrydkVwm1deN2uF0EImsxTX
E99mISYtAoGBANP1J8HB+iVAkJWtEA5z846oHkBbvFKSKuLugt2APa/Ma6ZP3TCA
aBomY7vXG0F+x7bnMQLOhsir18i4VCd0FXhqysjUowRGj241NwuTVEvttw5yjfSZ
aZuoGakEXRTbQytBxFtUdndY6FjgYnlD4qsZMXyCszx7punLbabdni/nAoGBANA9
V1jIai1/dWYwB1eokJekmTEJt2sgzoDChXZe2UbQY5Ai/00taPnKp7BN5qURUNth
KFf+ZiJloSwM0t9gbNKlkkdIJfIKAG/QDm5v6ekBdAOmctdBD2KUw/vYbFFAMJhw
KC2RuZF5YCLZKYkrgxLe11OpPawyXde6NcRbkYWXAoGBAJ8TZU0z6is/M8RB6MUQ
HQE6B8pBjythbDJ401quPp3MDBb75YPbO0Y0/bEileAn6HfLN6tlmR7OadrJDM+3
fc2sSJlFjTtOQaNy6OcVIbUCqdp7+zJSWUJrfSaukbVvgg/bAiWRVH/qCCd78CwW
2O2UsOFDroV8QB9Df/42YdyNAoGALYEKAkOhOBn/HHpoUFZsaka0lwupggZkOazI
H0qwrhHBf/C12zaOFu+a3yLWwMFc6uN7PmdACEovAwI2Xkui3BEEOwFgEVjwKX7M
eIOKGLmRkW6g77qu0vrxLKppWQPu2pC/pt2OMGTWhibwNaJFfS0m3ohACs3ixc5S
C3t6/DcCgYB7I6BfANEwd+KVEUYZXhjVvlXdQvyr+ZEQpxpwYFmC2WTxFjGuB5k0
IzGOAxfTnE4LdLYk/qLu51w64zLGqEdxETE8wLbnWxHO1tXDBmjqxMC+9C4onQ0V
OSN22zpjLTCv5TVRks2JfM3j5onBS1SqrHVd50DvV9E35CDl0/sUTg==
-----END RSA PRIVATE KEY-----

30
https/localhost.key Executable file
View File

@@ -0,0 +1,30 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,9FB898B8D313CB3A043B4F4E2F62C6D8
cg368RyYjMGTo9L8CtbSDMvzUisFai7fsWtrzegoGMrgYEsmkqI/NPDHO893tf7n
X4kXDqpWlYT9awry0yYDgYOyOVffBbh7+TfHEH2ZHC8dCNf7uF8OJlGbV3fVKZ92
yrNaHrrnHgVwb78SYrFpkKJLL42O7OAIC9yKfKv9TFJF+g5bntAqe/TNv1vL1Zmm
Y2Hlm9SaDgZhrn8dhUQ6uWq0pNVZ8NBcjzerAyEw8CSIa8y4pXU8dQHz0aMGqmW3
P9hgo8g9jI1U/V9WmacLuh6DDyWuT2qEqw+Qcp6WgXBV9eTVUMN+rmWxfFmL+hOn
fgSwFrQwNpI1V/WZlp5qL9UvzthJs7H5fK62pSfSN8ZRAWN2Yi4pOPQTOPY//h8t
q2x9f5YXrV+GOfDFeLAoUElENNh0zakjjNv5n/q1Pnw8RPouB9TWkJMEjGWbwxYb
vNt5z8QJXF9oB0wZgX6kcMpZST9Mi1+7AoWUrFWTeHmP55s2gv9lx+M1XvRkqtv1
Ddg5ANkCYf4chv2GLsn5nEae4aALIMq8XOa1BF7LkHQxuNTBNamfJwm4/U45+f1W
NaG+xHroPkgRRW8fklvpF8mJ0q8IbvrtapSWZQcxPnxmknJtZynJjqeiO22tbtmc
n1okJzNI6FvertxGDNY+QZfx6NZJ4sIXEhTw6dQce2x9vJPpA6VbMI+A39RJS4VO
LxWU+Zv2H1YTR0QjrT0of/sFOdMhUldyyTDdqTZd7Z1NIUDX1GW9pFua+29ntK04
QTwCis5feu/egSWctbCNAIf/YXi9IM5su1njY7H6G4wwcRFGU11O6I8TqM/8l3gm
5mYkTGJiBmEqbz3q+99XGbr+0K8YfB6x8eUlWZgmdw3cvKYRly+km1+kyJGB+pTc
2wNMN9oLHntcQV9NBgKtebuQQygfd4ZSVdheijIJQfpPFW0aDiKrnvvhcEixSTqn
6WTaEJhhA67GOWmtXLjLN3r0+nndvtL6N2UXP9FSZg6tCpn0k5jvJidKfGucBL7K
aoKP1yJ19ho4WjpJcAF1TyKgEbLb0rNHMr6AObLFQsVynbyPgA5FY5zTvUH5PZDd
oVyL8yYD2fQC2ghLdBxNLanlIh6gbintHCO2DEx8LY7itvjGthR5WdVCPbxK6L74
4FgXRBW9NXNh53O+6SBUT6dn064qVVBOsxqGhur15Bna5X8ULkRSHw3QMsv4e+9Q
kWyJ3r5jfHGMhdvNlU/gc6S4qaPFEBRAB3QUE7xDHjU9rrzXZzd+gcy7+pqFtRJz
pFQeVNuKYpwVqx1V+nAN+ZlIJim67JOuY9qGMeKwT4kVtujESgLG4eNmXyoxsT4Y
hwCmxzLr9eu0HpmcHVULTg1NhflaLSK1ThauawEhght2JmGgxsn3xTElx4adWUBI
4hb5MTCHy0NY6T3sDNOXeRSJoRb31rMA099CVTrF7xui9Bbzoj7q9DImh43S1h4d
nwQ/optM7GiMZlGqgHdEob6hBxXMfA1EfSnyN3KPxwsa0z9OoMio7Uu6+MZt+we7
Z9myzP2XSg/YsmtCvtvKKHuxdOun2byScwtagtGty/IXBkRsRz/E7sXNxOnJJVSS
-----END RSA PRIVATE KEY-----

22
https/localhost.pem Executable file
View File

@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDuzCCAqOgAwIBAgIJAOtJAMcSg7G5MA0GCSqGSIb3DQEBCwUAMHQxCzAJBgNV
BAYTAkNIMQswCQYDVQQIDAJaSDEPMA0GA1UEBwwGWnVyaWNoMQwwCgYDVQQKDAND
aEsxDzANBgNVBAsMBkRldkNoSzEMMAoGA1UEAwwDQ2hLMRowGAYJKoZIhvcNAQkB
FgtjaGtAYWJjZC5lZjAeFw0yMjA3MjcxNDI2MjNaFw0zMjA3MjQxNDI2MjNaMHQx
CzAJBgNVBAYTAkNIMQswCQYDVQQIDAJaSDEPMA0GA1UEBwwGWnVyaWNoMQwwCgYD
VQQKDANDaEsxDzANBgNVBAsMBkRldkNoSzEMMAoGA1UEAwwDQ2hLMRowGAYJKoZI
hvcNAQkBFgtjaGtAYWJjZC5lZjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAOZS5yfFHiPN4AvGoAhTrJ+MqcuNdwr8a1oug3yjgfLUdpCSzYsHMyDwNkD1
acGX4csalo5qnqEzsG9Aj3v5zBPXbCDUb5AfCzEo+C5QkHsEEVFlLcAgh0haSiFo
J2ossXPIwptosv2jNUBAp25tk7CoI0yNgYk/WT0ZxwYlAPI1oOVlIdGSHoQfVLVr
1+xudxP4H2F/2ZoGvYE1FU3vHNDWumrIjpVC1YdKiB7TiMxL72etbhNIWj6ZMrgQ
h+ZhqUbN/crzoQT3gd5TK5gAWTEY34Hxhl9W/IDFxGrwyIct/YVdLOvPbqyWo+W/
1gGQzFlN85DUYCe2kPZfvIP15vcCAwEAAaNQME4wHQYDVR0OBBYEFMl+Cq5lqeN2
lf3mp7mPDk7AXT10MB8GA1UdIwQYMBaAFMl+Cq5lqeN2lf3mp7mPDk7AXT10MAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBADc8KDpE4zXb0Gag82Iueux+
RCOLNb6Rbt3Ltoi8TzlbHpBb9LMsplpuQt+RHUDBDKh+vs73y53Sne5Ro9jd3JV7
0eY+V3SJYk3sSzSkqPgxeJFHsXFkQz9Y9UqloW9jpULGJTBPavXa0P4QcZ/2dnys
LGmV+cZhg3i8wOeM+3Ny8ZJGRJi7xj2Zb7EjGfuDwwc9wrXxGA2l9bJHuqxnzdyi
L4ApXrZ8t6lABOD+XwgbY5DepO2av8KUcBnhA91Jc2DD/gZrHZyxHG2/vT662+Mc
VdCS92IIPjOTe3TxJZ+5NgRjlU0JlYHe+aRG2RZ+AmmWBc+5DB+58PaImpcwkt8=
-----END CERTIFICATE-----

30
https/localhost2.key Executable file
View File

@@ -0,0 +1,30 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,FD72C71993563663BEF543276EED15FD
wEVQsIkYWEzxiVHCKMN3W5XHtlLQS/bNioPUtNoc/CkECmh82pR7NYphEMBB2ZQj
yZSVd+nFKQ70nP8qMhLzOBHG6pYRS3/DqQ4kON4/VtF33VUzC8R5dnBf+VydCUCp
1CjS71BJbAr3kQZLFFNPeMesr9iy4hBpxmVcfBC+rZjWoxPCiUxgwf7C/Aq53MJl
MuvY1EZ5NhvFpqvj2ncbIrjRhrg6NBN2hhICEfiwAoVOlSNJ+cDaNsGy86I82+Yd
n8t02mZcCMn8OWQvT5u7OhhUGbsKlRtbDdsFmGzuWapaWhLB145IvDIP/K6AuR35
GTGBVcODdk+APtGYvhw0XqLV5tJXo1CfrKcFdsZtMzPT3VLCsvUTWJ0d+NcPqRpa
nON/89sULZfeTlsoWWrn6sZRCeGrP8diqqnrVKfPdH06zcty3gWnmRZM1ZYnRjuC
JKchULbSvMM0G9cY80+/PVydoIkXyrwl6hMGPmDFD3kosJbePrUoWZXH0yv0AVx+
tobGiWiFycYRlW0V5SVU8eBwmBAN+r7L3USLYsd7As9sulYvUsGrUpbWjImN/ADm
nHbwX7aclFLZblpnVWI9GBXm7NmWQcnD3U37+kzPDAK0BpqSCkYI8orEyTtRoMpL
4WE6D738uBjnKOVX5Zlx9RTyiFF5tO7EXOVD2YymtpsyzGNk00c6YR6qevWM7/Ga
tAHqbv3ER18XZjmWz0A2JjvDaDvFKHH5uXoNwTt/EIdObkguOc3YOPJWQbDz6WaQ
SpYvM+0Xm8wkjN+gfn93ZsNokHut2k54Zy1tjQcAxtqjy/qdNMRhH8SstJP5xLj4
DkI/UpNTs+ePw5tuvJoWvelTXhxnHnXvsIa7SuavL1mUmFcWvuOVsCKzij5H8xIt
htEmOL4GXT7oJ80Udj7t9Fu0V7GxFSvxiYJyFD/djJY0WTsPpZbp6HLOCuFTc/p6
IQFsyGaYiTbg4+ShFWeSQ5bJ7KlTMUcJfO4rFC/GQjtp1odaJO7e7P26RYCZoo5k
amBWXdP7FQL1cIEtdHp12jCUCbiStRNjE9yW1hQFxBFj4b9FoGvP32MWyHv2nZx8
xluy0sTHG6r/0Ir1kdSPZCd/1tE3mRikWt0rg/fT21tAYtxXIxUARCUS7utu+JfK
2/1uyNK+S4/LLsr1cxsJBbjScs+JLIMwB+OCDJE0J2x1X73W/37gEQ94MbQZD9cC
xyi/0nrJIfRoNmLWT4Xo/rbXnGWZkVubZDBPUaxHQzYrbdt+bQJyOjeWQs3snQsw
gr5rSvMaGaSikt000sCMFSzS8bqRpd0iDIw/m7t4qzax7DOUPqem9DWgr+2FfjrC
gtUD1A+jUm8iUeuCSio6Vyn+nPTWCTfKXTnsJPg3gjvMF3SrOFo4v2UB/ti/vhCy
0XEc81RZxvPE0cA8O+4k3hriBIk89Fza+RW5TntOmAV3gnwf5h5KHeA50D9Z1OOl
OfMPc/ie31H4BjrpwPs6cI3vZOtEJnw1FWaI6a/LE/dlcFj61A+6HkbBUtCBC4hN
YlFMKLfQJd6RSsR7RRwo1fFqIECNWbC5zr7ozNatDwK9ln6zGLQ2vFOd3k83g/P0
-----END RSA PRIVATE KEY-----

6
install.bat Executable file
View File

@@ -0,0 +1,6 @@
npm install config
npm install os
npm install --save express
npm install wss
npm init

1132
package-lock.json generated Executable file

File diff suppressed because it is too large Load Diff

15
package.json Executable file
View File

@@ -0,0 +1,15 @@
{
"name": "roboticsdriver_webservicetest",
"version": "1.0.0",
"description": "WebService is provieded here",
"main": "3DInput.js",
"scripts": {
"start": "node 3DInput.js"
},
"author": "Ch Kendel",
"license": "ISC",
"dependencies": {
"express": "^4.18.2",
"wss": "^3.3.4"
}
}

110
public/GamePad.js Executable file
View File

@@ -0,0 +1,110 @@
var isRunning = false;
var gamePadId = 0;
var gamepad = {};
let lastCheckTime = 0;
function checkGamePad() {
if(isRunning == false){return;}
const stepSize = "0.01";
const stepSizeXYZ = "0.5"; // 3 ist auch ok
const stepSizeE = "0.01";
var gp = navigator.getGamepads()[gamePadId]
var buttons = gp.buttons
var xyzSpeed = 10; // 100 geht auch
var psi = gp.axes[0];
var z = gp.axes[1];
var x = gp.axes[2];
var y = gp.axes[3];
// Dreieck zum Dreieck-Setzen
if (buttons[3].pressed) {
socket.send(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B${-1.0*Math.PI/2} C0 F${xyzSpeed}`);
}
if (buttons[4].pressed) {
//console.log("x=" + robot.x + " y=" + robot.y + " z=" + robot.z);
}
// X Button setzt eine Marke
if(buttons[0].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
console.log('FPoint!');
socket.send('FPoint');
socket.send('FShow');
}
// L1 und R1 Button to forward-backward in Point-List
if(gp.buttons[4].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
socket.send('FMinus');
socket.send('FShow');
}
if(gp.buttons[5].pressed && (Date.now() - lastCheckTime > 500)){
lastCheckTime = Date.now()
socket.send('FPlus');
socket.send('FShow');
}
if (x < -0.2) { socket.send(`G91 G1 X+${stepSizeXYZ} F${xyzSpeed}`);}
if (x > 0.2) { socket.send(`G91 G1 X-${stepSizeXYZ} F${xyzSpeed}`);}
if (y < -0.2) { socket.send(`G91 G1 Y${stepSizeXYZ} F${xyzSpeed}`); }
if (y > 0.2) { socket.send(`G91 G1 Y-${stepSizeXYZ} F${xyzSpeed}`);}
if (z < -0.2) { socket.send(`G91 G1 Z${stepSizeXYZ} F${xyzSpeed}`); }
if (z > 0.2) { socket.send(`G91 G1 Z-${stepSizeXYZ} F${xyzSpeed}`); }
// Greif-Richtung
// LeftRight
if(buttons[14].pressed){ socket.send(`G91 G1 A${stepSize} F${xyzSpeed}`);}
if(buttons[15].pressed){ socket.send(`G91 G1 A-${stepSize} F${xyzSpeed}`);}
// Up - Down
if(buttons[12].pressed){ socket.send(`G91 G1 B${stepSize} F${xyzSpeed}`);}
if(buttons[13].pressed){ socket.send(`G91 G1 B-${stepSize} F${xyzSpeed}`);}
// Drehung
if (psi < -0.2) { socket.send(`G91 G1 C${stepSize} F${xyzSpeed}`); }
if (psi > 0.2) { socket.send(`G91 G1 C-${stepSize} F${xyzSpeed}`); }
// Trigger-Buttons für Öffnen und Schliessen
if(buttons[6].pressed){socket.send(`G91 G1 E-${stepSizeE} F${xyzSpeed}`);}
if(buttons[7].pressed){socket.send(`G91 G1 E${stepSizeE} F${xyzSpeed}`);}
if (isRunning) { setTimeout(checkGamePad, 15);}
}
function gamepadHandler(event, connecting) {
gamepad = event.gamepad;
if (typeof gamepad === `undefined`) {
isRunning = false;
gamePadId = 0;
console.warn("GamePad kann nicht gefunden werden");
return;
}
if (connecting) {
console.log("GamePad " + event.gamepad.index + " connected");
gamePadId = gamepad.index;
isRunning = true;
setTimeout(checkGamePad, 20);
} else {
console.log("GamePad " +gamePadId +" disconnected");
isRunning = false;
gamePadId = 0;
}
}
window.addEventListener("gamepadconnected", function (e) { gamepadHandler(e, true); }, false);
window.addEventListener("gamepaddisconnected", function (e) { gamepadHandler(e, false); }, false);
document.addEventListener("touchstart", e => { console.log("TouchStart"); })

66
public/KeyboardInput.js Executable file
View File

@@ -0,0 +1,66 @@
document.onkeydown = checkKey;
function checkKey(e) {
e = e || window.event;
if(e.key == 'a' || e.key == 'A')
{
console.log("back to A position");
socket.send(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B-${Math.PI/2} C0 F100`);
}
// Hand-Winkel (Eulerwinkel)
else if(e.key == 'i' || e.key == 'I'){
socket.send('G91 G1 B+0.1 F100');
}
else if(e.key == 'k' || e.key == 'K'){
socket.send('G91 G1 B-0.1 F100');
}
else if(e.key == 'l' || e.key == 'L'){
socket.send('G91 G1 A+0.1 F100');
}
else if(e.key == 'j' || e.key == 'J'){
socket.send('G91 G1 A-0.1 F100');
}
else if(e.key == 'o' || e.key == 'O'){
socket.send('G91 G1 C+0.1 F100');
}
else if(e.key == 'u' || e.key == 'U'){
socket.send('G91 G1 C-0.1 F100');
}
// XYZ Koordinaten
else if(e.key == 'e' || e.key == 'E'){
socket.send('G91 G1 Z+5 F100');
}
else if(e.key == 'd' || e.key == 'D'){
socket.send('G91 G1 Z-5 F100');
}
else if(e.key == 's' || e.key == 'S'){
socket.send('G91 G1 X5 F100');
}
else if(e.key == 'f' || e.key == 'S'){
socket.send('G91 G1 X-5 F100');
}
else if(e.key == 'r' || e.key == 'R'){
socket.send('G91 G1 Y5 F100');
}
else if(e.key == 'w' || e.key == 'W'){
socket.send('G91 G1 Y-5 F100');
}
// File & Log-Operations
else if(e.key == ' '){
console.log('FPoint!')
socket.send('FPoint');
}
else if(e.key == 'b'){
socket.send('FMinus');
}
else if(e.key == 'n'){
socket.send('FPlus');
}
}

34
public/WebService.js Executable file
View File

@@ -0,0 +1,34 @@
var startTime = Date.now() ;
console.log("Meine Document-Location: " + document.location);
var lastPingRequest;
//var socket = new WebSocket(String(document.location).replace("https://","wss://").replace("10010","2095").replace("index.html","") + "echo");
var socket = new WebSocket("wss://thinkcentre.local:2095/echo");
socket.onopen = () => console.log('Connected') || setInterval(() => { lastPingRequest = Date.now();
socket.send("Ping");
}, 5000);
socket.onclose = (event) => console.log((event.wasClean) ? 'Disconnected' : 'Connection break: ' + (event.reason || event.code));
socket.onmessage = (event) => {
if(event.data == "Ping"){
console.log("Ping: " + (Date.now() - lastPingRequest).toString() + " ms");
}
else if(event.data.toString().includes("position")){
console.log("Position: " + event.data);
}
else if(event.data.toString().includes("XYZ__FShow__XYZ")){
const content = event.data.toString().split("XYZ__FShow__XYZ")[1];
console.log("File Content: " + content);
console.log(document.getElementById("GCodeWindow"))
console.log(document.querySelectorAll("textarea#GCodeWindow.editor-look")[0]);
document.querySelectorAll("textarea#GCodeWindow.editor-look")[0].value = content;
}
else{
console.log('DATA SinceStartup: ' + (Date.now() - startTime).toString() +': ', event.data);
}
}
socket.onerror = (err) => console.error(err.message);

BIN
public/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

73
public/index.html Executable file
View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<script src="WebService.js" defer></script>
<script src="KeyboardInput.js" defer></script>
<script src="GamePad.js" defer></script>
<script defer>
setTimeout(() => {
socket.send('FShow');
}, 100);
</script>
<style>
#GCodeWindow{
width: 100%;
height: 220px;
}
</style>
</head>
<body>
<div id="topMain">
<h1>Send Keyboard <br/> & Gamepad Data</h1>
<button onclick="socket.send('G91 G1 Z10 F100');">Up</button>
<button onclick="socket.send('G91 G1 Z-10 F100');">Down</button>
</br/>
<button onclick="socket.send('G91 G1 X10 F100');">Right</button>
<button onclick="socket.send('G91 G1 X-10 F100');">Left</button>
<br/>
<button onclick="socket.send('G91 G1 Y10 F100');">Forward</button>
<button onclick="socket.send('G91 G1 Y-10 F100');">Backward</button>
<br/>
<button onclick="socket.send('M114');">Info</button>
<button onclick="socket.send('G28');">Null</button>
<br/>
<br/>
<button onclick="socket.send('G91 G1 A0.1 F100');">a+</button>
<button onclick="socket.send('G91 G1 A-0.1 F100');">a-</button>
<br/>
<button onclick="socket.send('G91 G1 B0.1 F100');">B+</button>
<button onclick="socket.send('G91 G1 B-0.1 F100');">B-</button>
<br/>
<button onclick="socket.send('G91 G1 C0.1 F100');">C+</button>
<button onclick="socket.send('G91 G1 C-0.1 F100');">C-</button>
</div>
<br/>
<button onclick="socket.send('G91 G1 E0.1 F100');">E+</button>
<button onclick="socket.send('G91 G1 E-0.1 F100');">E-</button>
</div>
<br/>
<br/>
<div id="GCode">
<form><a>Motor Koordinaten (GCode) </a><input id="GMotor"/></form><button onclick="socket.send(GMotor.value.replace('G1','M1'));">Send</button>
<br/>
<form><a>Karthesische Koordinaten (GCode) </a><input id="GKarth"/></form>
</div>
<div id="divGCodeWindow">
<button onclick="socket.send('FShow');">ListFile</button>
<br/>
<textarea id="GCodeWindow" class="editor-look" readonly>
</textarea>
<br/>
<button onclick="console.log('FPoint!'); socket.send('FPoint');socket.send('FShow');">Point</button>
<button onclick="console.log('⇩'); socket.send('FPlus');socket.send('FShow');"></button>
<button onclick="console.log('⇧'); socket.send('FMinus');socket.send('FShow');"></button>
</div>
</body>
</html>

4
public/style.css Executable file
View File

@@ -0,0 +1,4 @@
#GCodeWindow{
width: 100%;
height: 220px;
}

1
run.bat Executable file
View File

@@ -0,0 +1 @@
node 3DInput.js