# Webserial
---

Webserial is best lastig om zonder voorkennis van javascript te implementeren, omdat je streamreaders moet gebruiken en andere dingen. 90% van de online tutorials verwachten dat je al javascript ervaring hebt.


ik heb problemen met het uitlezen van de binnenkomende data. Het is me gelukt om de data te splitsen door de binnenkomende data te splitten met ```readibleoutput.split(',')```, maar die data komt niet goed binnen omdat de reader te snel leest en de data opsplits. ik heb geprobeerd om alles in een geheel binnen te krijgen doormiddel van ```setTimeout()```, maar dat werkte niet. Uiteindelijk werkte de manier van bas zijn online les met dat je wacht tot een specifieke byte is binnenkomen. Je maakt dan een loop en wacht dan tot een specifieke byte is binnengekomen met een if statement als die byte binnenkomt activeerd het onderliggende script in de if statement.

### Een poort openen

Om een Serieele poort te openen op een website moet je javascript gebruiken. Dat luidt als volgt

```javascript
    port = await navigator.serial.requestPort();
    await port.open({ baudRate: 9600 });
    reader = port.readable.getReader();

```

Je moet de browser nagivator vragen om een menutje te openen om een Serieel apparaat te kiezen en die koppel je aan een variabel. daarna open je die poort met een specifieke baudRate. de Baudrate is het aantal bits dat er per seconden worden verzonden door de Serieele port. Als dit anders staat dan op de microcontroller en Javascript krijg je onleesbare data binnen.

### De data lezen

Om de data te lezen moet je eerst een functie maken met een loop want je wilt alle binnenkomende data ontvangen en verwerken eerst wacht je tot een specifieke byte is binnengekomen via de Serialreader, beivoorbeeld byte 10 wat gelijk staat aan Linefeed in de ascii tabel. Als je dit niet doet krijg je halve blokken data binnen en word je data gesplits weergeven wanneer je het print in console

![ascii tabel](https://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg)

Als die is binnengekomen wil je dat het als een blokje word vertaald naar leesbare data. Dat doe je met een decoder
```javascript
                let sensorString = decoder.decode(new Uint8Array(buffer));
```
buffer is het blokje data dat is binnengekomen. en dat word vertaald en in sensorString gezet.

als je Sensorstring zou printen naar console krijg je de data die je verstuurd via je microcontroller
