Hoi allemaal, een vraag voor picbasic:
Ik heb een uC, PIC18F2550, waarbij ik de hardware UART gebruik.
Ik sla de binnenkomende data op in een string:
dim strng_name AS string * 20
dit houd dus in dat de string 20 chars lang is.
Nu is het zo dat mijn data op de inkomende UART elke keer verschillend van lengte is.
Wat ik wil is het aantal bytes tellen wat er dus binnengekomen is.
Via de isr die ik heb van de UART lukt het niet.
ook kan ik niet de sting met LEN() tellen, want die is altijd al 20 lang.
wie o wie heeft een tip voor de oplossing?
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
elke keer als je je char weg schrijft van je usart buffer verhoog je een teller met 1 op die manier kan je kijken heoveel chars je ontvangt maar je kan maar 1 char per keer ontvangen omdat je buffer niet groter is
ik heb na elke keer dat er een interrupt plaats vind (en dat is bij elke byte die hij ontvangt...) al geprobeert een countertje te maken, alleen het lijkt wel of de interrupts te snel op elkaar volgen.
ik werk op 115200 baud, maar dat moet gewoon kunnen lijkt mij
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
maak een routine dat je eerst een antwoord naar je pc stuurt voordat die weer iets mag versturen dan is je probleem opgelost lijkt me
lijkt me geen optie.
je moet dan weer een routine schrijven in je pc software die wacht, het word er allemaal niet sneller op.
ik zoek verder, iig bedankt voor je antwoord
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
nix routine vb kan ook een interrupt krijgen dan hoef je zelf niet te pollen
dan gelijk volgende char verzenden en weer van voor af aan
serialport1_datareceived( event as sender, e as eventargs)
of zoiets zal het dan zijn
[Bericht gewijzigd door timmie op ]
ik heb een idee.
ik weet dat de string nooit langer kan zijn dan 20 chars
als ik nu eens de verzonden sting afsluit met 0 en dan via een kleine lus vanaf achter de string ga checken op 0, dan kan ik zo de lengte wel bepalen.
uiteraard voorafgaand aan het vullen van de string, deze weer netjes clearen, anders heb je het probleem dat indien je een kortere string dan de voorgaande krijgt een probleem hebt dat die 0 in je string niet overschreven is 
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
ander idee als je geen extended ascii gebruikt kan je alle bytes "11111111" ascii begint elke char met 0(bit8) dus kan die nooit 1 zijn