Toon posts:

[vb] lcd loop

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik probeer dus de tijd op het lcd te krijgen, en dan moet ie dat refreshen (ong. om de sec. dus) en daar heb ik de volgende code voor gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Aantalkeer = 0
i = 1
Do While Aantalkeer < 30
For i = 1 To 8
TePrintenText = Mid(Time$, i, 1)
DlPortWritePortUchar 890, 6
DlPortWritePortUchar 888, Asc(TePrintenText)
DlPortWritePortUchar 890, 5
sleep 1
Next
Aantalkeer = Aantalkeer +1
DlPortWritePortUchar 888, 128
DlPortWritePortUchar 890, 0
DlPortWritePortUchar 890, 1
Sleep 950
loop

dit zou dus 30 keer refreshen (als het goed is) maar deze code is te "zwaar" het proggje reageert dan niet meer, en het vreet cpu, dus hoe moet ik dat efficienter doen?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Nu refresht 'ie 30 keer per seconde? Of begrijp ik je nu verkeerd?

Zo ja, is dat niet wat veel?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
nee, hij zou 30 keer refreshen, maar ik moet wat met die getallen spelen, want hij moet precies 1 sec over doen om tot het einde van de loop te komen (of iets minder) want dan begint ie weer vooraan met het afbreken van de tijd, het op de lcd zetten van de tijd, en dan w8 ie 950 ms voordat ie weer aan de loop begint (schijnt zo te zijn dat die sleep() niet zo nauwkeurig is, dus..)

Verwijderd

Je hebt er twee keer sleep in staan misschien zit daar het probleem?

Verwijderd

Topicstarter
nee, dat is et em niet, die loop is gewoon "te zwaar" denk ik

Verwijderd

Is i een integer is kan je er misschien een long van maken dat is sneller.
Doet hij het ook niet als hij gecompilleerd is?, dan zijn programma's veel sneller.

Verwijderd

Topicstarter
ik zal het nog eens een keer proberen.

  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Is het niet makkelijker om gebruik te maken van je systeemclock?

Verwijderd

Topicstarter
Op dinsdag 29 januari 2002 16:36 schreef TheGhostInc het volgende:
Is het niet makkelijker om gebruik te maken van je systeemclock?
hoe dan?

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
sleep pakt dacht ik milliseconds, en jij hebt 1 (=1/1000 van een seconde) :)

Verwijderd

Topicstarter
jah, maar dat is et em niet, hij gebruikt niet die sleep voor de tijd, die sleep is gewoon om tussen elke keer dat ik de lcd "refresh" eventjes pauze te houden, de time$ geeft de tijd

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Je kunt het beter zo doen:
(timer1 => delay van 1000)

Timer1_Timer
Static intTeller as Integer

intTeller = intTeller + 1

If intTeller = 30 then
intTeller = 0
[do your thing]
End If

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
En daarbij komt nog dat Sleep geen DoEvents ofzo geeft, dus die pakt dan inderdaad ALLE tijd van je progje.

[More to come -- moet nu naar de bus :( ]

Verwijderd

Topicstarter
ik denkd at ik idd doevents moet gebruiken. voor de geinteresseerde met lcd: edit: url weg, proggje was te buggy, crashte alleen maar
let wel op dat ie dus blijft hangen (alleen het proggie niet heel windows)

verder ben ik een vb-n00b, dus de hele code is buggy

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Je moet zowieso DoEvents gebruiken, want alles zit nu in een gesloten loop. Maar deze hele code moet je er uit gooien, en de code zoals ik die hierboven schreef er in zetten. Trust me :)
Pagina: 1