Mr Burns Skrevet 17. januar 2007 Del Skrevet 17. januar 2007 (endret) Heisann! Jeg skal lese fra serieporten og oppdatere GUIet. Håpet å få det event-drevent, slik at jeg slipper å polle porten. Jeg la til serialPort1_DataReceived-eventhandler, som skulle oppdater en enkel tekstboks. Desverre kjører denne i en annen tråd en selve tekstboksen, og da kan ikke serialPort1_DataReceived oppdatere GUIet. Bruker skal trykke på noen knapper, og sende kommandoer via serieporten til en mikrokontroller. Mikrokontrolleren skal sende tilbake målinger noenlunde kontinuerlig. Jeg har sett litt på BackgroundWorker-klassen, men forstår ikke helt hvordan jeg skal få den til å oppdatere GUI (eller hvordan koble opp serialPort1_DataReceived til BackgroundWorker). Et potensielt problem med denne løsningen er deling av serieporten. Kun en tråd kan bruke serieporten om gangen, tror jeg. Håper noen kan hjelpe meg her. Endret 18. januar 2007 av Mr Burns Lenke til kommentar
nitor Skrevet 17. januar 2007 Del Skrevet 17. januar 2007 Heisann! Jeg skal lese fra serieporten og oppdatere GUIet. Håpet å få det event-drevent, slik at jeg slipper å polle porten. Jeg la til serialPort1_DataReceived-eventhandler, som skulle oppdater en enkel tekstboks. Desverre kjører denne i en annen tråd en selve tekstboksen, og da kan ikke serialPort1_DataReceived oppdatere GUIet. 7741699[/snapback] Lag en delegate for funksjonen som skal kalles, og kjør den via Invoke funksjonen til kontrollen på GUI som skal oppdateres. Lenke til kommentar
Mr Burns Skrevet 18. januar 2007 Forfatter Del Skrevet 18. januar 2007 Fant det ut rett etterpå: private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { this.Invoke(new EventHandler(delegate { inbuffer = readPort(); parseStatusMsg(inbuffer, 26, true); checkStatus(inbuffer, 26); } })); } Takk for svar i alle fall! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå