[NodeJS] Getallen uit Buffer halen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 11-10 10:16
Ik heb een beetje moeite met het uitlezen van een nummer uit een buffer op zo'n manier dat dit ook bruikbaar is in berekeningen. Ik heb een buffer die aan de variabele buf hangt:
let buf = new Buffer([0x00, 0x00]), waar door de I2C routine een waarde in het buffer gezet wordt. de I2C routine verwacht dat buf een buffer bevat.
Als ik een console.log(buf[0] doe, krijg ik keurig een waarde in de logger. Ook nadat ik die waarde verzonden heb via de websocket en weer uit lees, krijg ik een getal:
JavaScript:
1
2
3
4
5
6
        function I2CModefn(pressure) {
            console.log('state', buf);
            var calc;
            calc = buf[0]*0,483;
            console.log('test', calc);
        }


In de console zie ik dus: state 58 als de waarde van buf 58 is. En 240 als de waarde 240 is. En 1 als de waarde 1 is. Echter, de waarde van de tweede log is test, NaN

En ik heb geen flauw idee meer waar dat nog in zit. Ik dacht in eerste instantie dat ik wellicht eerst het getal uit de buffer moest halen aan de serverkant, maar ook dat is nog niet gelukt op zo'n manier dat ik van de NaN af kom.
Hier al behoorlijk op stuk gebeten, al een dag vergoogled, maar nog geen resultaat, ook niet met onderstaande.

http://www.w3resource.com/node.js/nodejs-buffer.php
https://docs.nodejitsu.co...uffers/how-to-use-buffers

Beste antwoord (via Pizza_Boom op 01-03-2016 15:41)


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 10-10 11:57

glashio

C64 > AMIGA > PC

code:
1
0,483
Moet zijn
code:
1
0.483

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing

Alle reacties


Acties:
  • +1 Henk 'm!

  • Caballeros
  • Registratie: November 2008
  • Niet online
je kent geen waarde toe aan calc

Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 11-10 10:16
Caballeros schreef op dinsdag 01 maart 2016 @ 15:22:
je kent geen waarde toe aan calc
Hmmm, dat was een typefoutje in mijn kopie die ik hier lokaal heb staan (code staat extern en laat zich niet makkelijk kopiëren, dus voor dit soort dingen staat er lokaal een kopie). In de "echte" code krijgt ie wel een waarde met de berekening en krijg ik ook NaN.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 10-10 11:57

glashio

C64 > AMIGA > PC

code:
1
0,483
Moet zijn
code:
1
0.483

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:27
Pizza_Boom schreef op dinsdag 01 maart 2016 @ 15:08:
Ik heb een beetje moeite met het uitlezen van een nummer uit een buffer op zo'n manier dat dit ook bruikbaar is in berekeningen. Ik heb een buffer die aan de variabele buf hangt:
let buf = new Buffer([0x00, 0x00]), waar door de I2C routine een waarde in het buffer gezet wordt. de I2C routine verwacht dat buf een buffer bevat.
Als ik een console.log(buf\[0] doe, krijg ik keurig een waarde in de logger. Ook nadat ik die waarde verzonden heb via de websocket en weer uit lees, krijg ik een getal:
JavaScript:
1
2
3
4
5
6
        function I2CModefn(pressure) {
            console.log('state', buf);
            var calc;
            calc = buf[0]*0,483;
            console.log('test', calc);
        }


In de console zie ik dus: state 58 als de waarde van buf 58 is. En 240 als de waarde 240 is. En 1 als de waarde 1 is. Echter, de waarde van de tweede log is test, NaN

En ik heb geen flauw idee meer waar dat nog in zit. Ik dacht in eerste instantie dat ik wellicht eerst het getal uit de buffer moest halen aan de serverkant, maar ook dat is nog niet gelukt op zo'n manier dat ik van de NaN af kom.
Hier al behoorlijk op stuk gebeten, al een dag vergoogled, maar nog geen resultaat, ook niet met onderstaande.

http://www.w3resource.com/node.js/nodejs-buffer.php
https://docs.nodejitsu.co...uffers/how-to-use-buffers
Probeer eens een parseInt om je buf[0] voordat je 'm probeert te vermenigvuldigen, wie weet leest 'ie 'm uit als een String.

Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 11-10 10:16
glashio schreef op dinsdag 01 maart 2016 @ 15:38:
code:
1
0,483
Moet zijn
code:
1
0.483
Dat was hem deels. Thanks. Ik had buf[0] vervangen door buf en toen kreeg ik een getal, maar consequent 0. Kommatje vervangen door een punt did the trick.
Merethil schreef op dinsdag 01 maart 2016 @ 15:39:
Probeer eens een parseInt om je buf\[0] voordat je 'm probeert te vermenigvuldigen, wie weet leest 'ie 'm uit als een String.
buf[0] vervangen door buf gaf een getal. Waarschijnlijk las ie een array of een string uit, maar nu de oorzaak opgepakt.

Voor de googlemensen in de toekomst het antwoord:
JavaScript:
1
2
3
4
            console.log('state', buf);
            var calc;
            calc = buf*0.483;
            console.log("test", calc);

[ Voor 10% gewijzigd door Pizza_Boom op 01-03-2016 15:45 ]

Pagina: 1