Commit c9b8362ad7b6d3d491892f350b09e5912fd7cbb1
1 parent
f72e635e44
Exists in
master
pruebas con exito para telemetria
Showing
3 changed files
with
120 additions
and
0 deletions
Show diff stats
.gitignore
index.js
| ... | ... | @@ -0,0 +1,101 @@ |
| 1 | +// Include Nodejs' net module. | |
| 2 | +const Net = require('net'); | |
| 3 | +const converter = require('hex2dec'); | |
| 4 | +// The port number and hostname of the server. | |
| 5 | +const port = 10001; | |
| 6 | +const host = '190.15.193.76'; | |
| 7 | +var respuesta = ''; | |
| 8 | + | |
| 9 | +// Create a new TCP client. | |
| 10 | +const client = new Net.Socket(); | |
| 11 | +// Send a connection request to the server. | |
| 12 | +client.connect({ port: port, host: host }, function() { | |
| 13 | + // If there is no error, the server has accepted the request and created a new | |
| 14 | + // socket dedicated to us. | |
| 15 | + console.log('TCP connection established with the server.'); | |
| 16 | + var code = String.fromCharCode(01); | |
| 17 | + // The client can now send data to the server by writing to its socket. | |
| 18 | + console.info(client.write(code + 'i201TT')); | |
| 19 | +}); | |
| 20 | + | |
| 21 | +// The client can also receive data from the server by reading from its socket. | |
| 22 | +client.on('data', function(chunk) { | |
| 23 | + var data = chunk.toString('utf8'); | |
| 24 | + if (respuesta) { | |
| 25 | + respuesta += data; | |
| 26 | + } else { | |
| 27 | + var respuesta = data; | |
| 28 | + } | |
| 29 | + | |
| 30 | + if (data[data.length - 1].charCodeAt(0) == 3 && respuesta.slice(1,5) == 'i201') { | |
| 31 | + var indice = 0; | |
| 32 | + var fecha = new Date(); | |
| 33 | + var respuesta = respuesta.slice(17, respuesta.length); | |
| 34 | + respuesta = respuesta.split('&&')[0]; | |
| 35 | + console.info(procesar(respuesta)); | |
| 36 | + } | |
| 37 | + | |
| 38 | + // Request an end to the connection after the data has been received. | |
| 39 | + client.end(); | |
| 40 | +}); | |
| 41 | + | |
| 42 | +client.on('end', function() { | |
| 43 | + console.log('Requested an end to the TCP connection'); | |
| 44 | +}); | |
| 45 | + | |
| 46 | +function procesar(respuesta) { | |
| 47 | + var tanque = { | |
| 48 | + tanque: respuesta.slice(0,2), | |
| 49 | + producto: respuesta.slice(2,3), | |
| 50 | + estado: respuesta.slice(3,7), | |
| 51 | + campos: [] | |
| 52 | + } | |
| 53 | + | |
| 54 | + var campos = parseInt(respuesta.slice(7,9)); | |
| 55 | + | |
| 56 | + var inicio = 9; | |
| 57 | + var fin = 17; | |
| 58 | + | |
| 59 | + for (var i = 0; i < campos; i++) { | |
| 60 | + tanque.campos.push(procesarCampo(respuesta.slice(inicio,fin))); | |
| 61 | + inicio += 8; | |
| 62 | + fin += 8; | |
| 63 | + } | |
| 64 | + | |
| 65 | + if ((fin - 8) < respuesta.length) { | |
| 66 | + var respuestas = procesar(respuesta.slice((fin - 8), respuesta.length)); | |
| 67 | + } else { | |
| 68 | + var respuestas = []; | |
| 69 | + } | |
| 70 | + | |
| 71 | + respuestas.unshift(tanque); | |
| 72 | + return respuestas; | |
| 73 | +} | |
| 74 | + | |
| 75 | +function procesarCampo(campo) { | |
| 76 | + var proceso = ''; | |
| 77 | + | |
| 78 | + if (parseInt(campo) == 0) { | |
| 79 | + return 0; | |
| 80 | + } | |
| 81 | + | |
| 82 | + for (var i = 0; i < campo.length; i++) { | |
| 83 | + proceso += hexToBinary(campo[i]); | |
| 84 | + } | |
| 85 | + | |
| 86 | + var signo = proceso[0] == 0 ? 1 : -1; | |
| 87 | + var exponente = parseInt(proceso.slice(1, 9), 2); | |
| 88 | + var mantiza = parseInt(proceso.slice(9, 32), 2); | |
| 89 | + | |
| 90 | + return signo * Math.pow(2, exponente - 127) * (1 + (mantiza / 8388608)); | |
| 91 | +} | |
| 92 | + | |
| 93 | +function hexToBinary(digito) { | |
| 94 | + var binario = parseInt(digito, 16).toString(2); | |
| 95 | + | |
| 96 | + while (binario.length < 4) { | |
| 97 | + binario = '0' + binario; | |
| 98 | + } | |
| 99 | + | |
| 100 | + return binario; | |
| 101 | +} | |
| 0 | 102 | \ No newline at end of file |
package.json
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +{ | |
| 2 | + "name": "tcp-prueba", | |
| 3 | + "version": "1.0.0", | |
| 4 | + "description": "", | |
| 5 | + "main": "index.js", | |
| 6 | + "scripts": { | |
| 7 | + "test": "echo \"Error: no test specified\" && exit 1" | |
| 8 | + }, | |
| 9 | + "author": "", | |
| 10 | + "license": "ISC", | |
| 11 | + "dependencies": { | |
| 12 | + "hex2dec": "^1.1.2", | |
| 13 | + "net": "^1.0.2" | |
| 14 | + } | |
| 15 | +} |