Avatar billede taiko_m Nybegynder
16. september 2010 - 11:09 Der er 6 kommentarer og
1 løsning

Event på et byte array.

Hejsa

Jeg har 50-100 UserControl, som viser status på 2 bit i et byte array(input).
Der ud over skal jeg styre status på 2 bit, via det samme UserControl, i et andet byte array(output).

De her byte arrays(input/output) bliver opdateret med 100ms interval, måske lidt hurtigere.

jeg vil godt have mulighed for at udvide, så jeg kan sætte et bit eller flere til at toggle, for hver 2. 3. 4. opdatering.

UserControl ligger pt. i en List.
Bruger en Timer til at lave selve opdareringen af byte arrays.
Begge byte array længde kan være mellem 15 til 62, i værste fald skal jeg have en UserControl for hvert bit i mit byte array.

Er der en smart måde at lave det her på?
Er vi ude i noget event styring på UserControl'en?
Avatar billede bvli Praktikant
16. september 2010 - 21:27 #1
Jeg har læst dit spørgsmål 8 gange nu, tror jeg. Og jeg fatter simpelthen ikke en bjælde af, hvad du mener. Kunne man lokke dig til at omformulere, eller måske endda poste noget kode, som viser noget af hvad du gør?
Avatar billede taiko_m Nybegynder
16. september 2010 - 23:01 #2
jada.

Jeg har et byte array, og jeg har en UserControle.
UserControle viser status for 2 bit i mit byte array.
fx:
bit 0 og 1 i array index 0( array[0] & 0x03 )
jeg kopir min UserControle, og ændre hvilke bit og array index de "ser" på.
så heler mit byte array er dækket ind.

mit Array opdater for hver 100ms, dvs. mit UserControle også skal opdater.

så jeg hele tiden har et grafisk billede af hvordan byte array'et ser ud.


Senere hen skal det så være muligt at gå den anden vej.
ved at klikke på den grafiske del af UserControle , skal et anden byte array opdater.

Håber det her hjælper lidt.
ellers så skriv lige.
Avatar billede bvli Praktikant
16. september 2010 - 23:36 #3
Ok.. Jeg tror jeg er med.

I første omgang vil jeg helt sikkert vælge ikke at bruge usercontrols. Min første tanke var, at du evt. kunne lave en custom control der repræsenterede en byte rent grafisk "...1...1" - men hvis du skal have lavet op til 500 af dem og de hver især skal gentegne sig tror jeg det ville tage længere tid at tegne, end intervallet mellem dine refreshs.

Hva' med om du laver en control, som har dit array som en data source. I dens OnPaint tegner du den grafiske repræsentation af hele dit array. Det burde være til at overskue med lidt simpelt gdi. Når du så opdaterer dit array, kalder du også Invalidate på din control.

Når du nu selv har tegnet hele controllen, så kan du også hurtigt håndtere museklik på den og finde ud af hvilken bit der er tegnet på hvilken position og derfra opdatere dit andet byte array ud fra det.

He - det lyder da i øvrigt som en skæg opgave!
Avatar billede bvli Praktikant
16. september 2010 - 23:37 #4
Avatar billede taiko_m Nybegynder
17. september 2010 - 16:17 #5
Har prøvet det meste af dagen at laven en control, og tror jeg har styr på det.

Men planen er at jeg skal have en control for hvor 2 bit.
det skal nemlig også være mulig at vælge hvilke der skal vises.
da man kun er interesseret i nogle enkle bit en gang imellem.

Tak for linket har hjulpet en hel del.
forstår ikke hvordan den custom control kommer over i toolbox'en, så man kan se den i Design Mode( men det er en anden sag).

Smid et svar, så du kan få point.
Avatar billede bvli Praktikant
18. september 2010 - 12:15 #6
Hej igen.

Her er svar :)

Men jeg er stadig af den overbevisning, at du bør nøjes med en enkelt kontrol. Om ikke andet så fordi hver enkelt kontrol du laver bruger et window handle og når vi taler om så mange controller, er der risiko for at dit program bliver en resourceæder.

Et forslag kunne være, at du laver en datastruktur, som indeholder bytearray'et samt informationer til din kontrol om hvordan hver enkelt byte skal renderes. Og så sætter denne struktur op når din control initialiseres.

God fornøjelse i alle fald!
Avatar billede taiko_m Nybegynder
18. september 2010 - 15:52 #7
Mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester