Gå til innhold

C#: LØST: Hvordan lese serieport, og oppdatere GUI?


Anbefalte innlegg

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 av Mr Burns
Lenke til kommentar
Videoannonse
Annonse
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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...