Toon posts:

[Java] Krijg inputBufferSize niet goed

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb volgende applicatie..

Met deze app wil ik gegevens inlezen via de com-poort die via een uP verstuurd worden. Door de microprocessor worden telkens pakketjes van 3 bytes verstuurd (1 als ID en 2 voor data) en worden dan in deze app verwerkt..

Nu wil ik in de perken houden door de inputBufferSize in te stellen op 8, zodat hij maar 1 byte per keer in kan lezen, maar als ik dit test via:
code:
1
2
3
serialPort.setInputBufferSize(8);
int size = serialPort.getInputBufferSize();
textArea.setText(String.valueOf(size));

dan blijft hij toch op 4096 staan met als gevolg dat hij soms meerdere karakters tegelijk inleest..

Is hier iets aan te doen, zodat ik de bytes toch één voor één binnen kan halen en verwerken?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:08

Janoz

Moderator Devschuur®

!litemod

Je kunt er toch voor zorgen dat je maar 3 bytes uitleest? Sowieso krijg je problemen waneer je je buffer te klein maakt. Je kunt dan inderdaad maar 1 byte uitlezen, maar de uP(?) kan niks verzenden aangezien de buffer al vol is na 1 byte.

Sowieso wordt in de api vermeld 'Note that this is advisory'. Je kunt er dus niet vanuit gaan dat de door jou ingestelde waarde daadwerkelijk overgenomen wordt en of de teruggekregen waarde ook daadwerkelijk de buffersize is.

kortom, zorg gewoon dat je telkens uit de buffer slechts 3 bytes uitleest en dat je niet afhankelijk bent van een buffersize. 3 bytes uitlezen moet simpel kunnen met read

[ Voor 11% gewijzigd door Janoz op 06-04-2005 10:28 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op woensdag 06 april 2005 @ 10:24:
Je kunt dan inderdaad maar 1 byte uitlezen, maar de uP(?) kan niks verzenden aangezien de buffer al vol is na 1 byte.
8)7 Je hebt gelijk.. was een beetje dom gedacht.. tnx iig!