Het project:
Code is veel te lang. Ik zal dus een beschrijving doen waarin het stukje onderaan voorkomt.
Hardware:
16*80 ledmatrix, aagestuurd door een 80c59 controller. Verbonden via de FT245BM USB <> 8bit FiFo aan pc.
Bevat een E²prom met 64K waarin de bitmaps opgeslagen zitten (1260 bytes + 1 optie byte)
Deze matrix is "bitmap-gestuurd". De controller wordt gebruikt om de bitmap data telkens op zijn uitgangen te zetten. Er zit dus geen karaktergenerator in. Het is de software die alle bitmaps moet maken.
Software:
Programma gemaakt in Visual Basic. Dit programma zet teksten/afbeeldingen om in bitmaps (array's van 1260 bits, die elk een ledje voorstellen). Die bitmaps worden 1-malig doorgestuurd naar de E²prom via de FTB245 chip tijdens een interrupt.
Ik wil een image array aanmaken van 1260 images (16x80). De bedoeling is dat deze images een LEDmatrix voorstellen. Als de gebruiker klikt op zo'n LED (1 image dus), dan verandert de kleur van wit<>rood. Momenteel heb ik al verschillende deelprogramma's gemaakt die panelen (stuk van een ledmatrix) voorstellen. De image array's hebben hier een grootte van 10x14.
Deze deelprogramma's kan ik perfect doen werken, het aantal images is dus niet teveel.
Mijn probleem:
Nu wil ik ook een programma hebben waarin de gebruiker een overzicht heeft op de ganse matrix: 1280 leds (16x80 orientatie).
Ik gebruik dezelfde code, maar vergroot de variabelen:
naast de imgPixel array, heb ik een tabel die coherent is aan de imgPixel array
Als de gebruiker klikt op een image, wordt er gekeken naar de overeenkomstige waarde in tabel "Karakterset". Met behulp van deze
tabel wordt gekeken of de led op rood of wit moet komen te staan.
tot zover geen probleem; nu komt het:
Deze code maakt mijn pixelarray dynamisch aan. Echter zijn er teveel objecten.
Resultaat:
Ik krijg de melding "Out of memory -runtime error '7' " De debugger stopt bij element 851.
De code zelf (de geneste lussen) kloppen. Verander ik de hoogte en breedte om terug te gebruiken in mijn deelprogramma's, dan werkt alles perfect.
Wat heb ik al geprobeerd?
-Proberen te werken met een Flexgrid; maar echt onhandig in gebruik om dezelfde look&feel te geven van de matrix
-Google gezocht: users die klagen over memory leaks in VB? tot extra RAM bijsteken
-GoT Search; geen echt resultaat gevonden.
Specs werkpc
Win98; PIII 550Mhz, 256MB SDRAM
Code is veel te lang. Ik zal dus een beschrijving doen waarin het stukje onderaan voorkomt.
Hardware:
16*80 ledmatrix, aagestuurd door een 80c59 controller. Verbonden via de FT245BM USB <> 8bit FiFo aan pc.
Bevat een E²prom met 64K waarin de bitmaps opgeslagen zitten (1260 bytes + 1 optie byte)
Deze matrix is "bitmap-gestuurd". De controller wordt gebruikt om de bitmap data telkens op zijn uitgangen te zetten. Er zit dus geen karaktergenerator in. Het is de software die alle bitmaps moet maken.
Software:
Programma gemaakt in Visual Basic. Dit programma zet teksten/afbeeldingen om in bitmaps (array's van 1260 bits, die elk een ledje voorstellen). Die bitmaps worden 1-malig doorgestuurd naar de E²prom via de FTB245 chip tijdens een interrupt.
Ik wil een image array aanmaken van 1260 images (16x80). De bedoeling is dat deze images een LEDmatrix voorstellen. Als de gebruiker klikt op zo'n LED (1 image dus), dan verandert de kleur van wit<>rood. Momenteel heb ik al verschillende deelprogramma's gemaakt die panelen (stuk van een ledmatrix) voorstellen. De image array's hebben hier een grootte van 10x14.
Deze deelprogramma's kan ik perfect doen werken, het aantal images is dus niet teveel.
Mijn probleem:
Nu wil ik ook een programma hebben waarin de gebruiker een overzicht heeft op de ganse matrix: 1280 leds (16x80 orientatie).
Ik gebruik dezelfde code, maar vergroot de variabelen:
code:
1
2
3
4
5
| 'deze code in de form load
For Y = 1 To 1280
Load imgPixel(Y) 'alle 1280 images
Next Y |
naast de imgPixel array, heb ik een tabel die coherent is aan de imgPixel array
code:
1
| Dim KarakterSet(1260) As Boolean 'public declaration |
Als de gebruiker klikt op een image, wordt er gekeken naar de overeenkomstige waarde in tabel "Karakterset". Met behulp van deze
tabel wordt gekeken of de led op rood of wit moet komen te staan.
tot zover geen probleem; nu komt het:
Deze code maakt mijn pixelarray dynamisch aan. Echter zijn er teveel objecten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| For Y = 1 To Hoogte 'hoogte is hier 16
For X = 1 To Breedte 'Breedte is hier 80
imgPixel(I).Visible = True
If KarakterSet(I) = True Then 'true = 0 = lamp brandt
imgPixel(I).Picture = LoadPicture(Padnaam & "\wit.bmp")
Else
imgPixel(I).Picture = LoadPicture(Padnaam & "\rood.bmp")
End If
imgPixel(I).Visible = True
imgPixel(I).Left = X * 250 + (X - 1) * imgPixel(1).Width
imgPixel(I).Top = Y * 250 + (Y - 1) * imgPixel(1).Top
imgPixel(I).Refresh
I = I + 1
Next X
Next Y |
Resultaat:
Ik krijg de melding "Out of memory -runtime error '7' " De debugger stopt bij element 851.
De code zelf (de geneste lussen) kloppen. Verander ik de hoogte en breedte om terug te gebruiken in mijn deelprogramma's, dan werkt alles perfect.
Wat heb ik al geprobeerd?
-Proberen te werken met een Flexgrid; maar echt onhandig in gebruik om dezelfde look&feel te geven van de matrix
-Google gezocht: users die klagen over memory leaks in VB? tot extra RAM bijsteken
-GoT Search; geen echt resultaat gevonden.
Specs werkpc
Win98; PIII 550Mhz, 256MB SDRAM