Toon posts:

[vb] probleem met knopjes op parallele poort

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb knopjes gemaakt die op de paralelle poort zijn aangesloten en die wil ik in vb met dlportio winamp aan laten sturen. alles werkt perfect maar ik zit met 1 probleem waar ik eigenlijk niet zo snel een oplossing voor kon bedenken.

ik heb een timer gemaakt die elke keer kijkt of een knopje is ingedrukt en voert dan een command uit die winamp aanstuurt. maar als ik een knopje indruk dan voert ie die winamp-command meerdere keren snel achter elkaar uit (stuk of 2/3 keer). maar ik kan de timer-interval ook niet te laag zetten want dan reageren ze niet snel genoeg. ik dacht zelf dat je iets met een soort buffer zou moeten maken...
iemand een idee/oplossing?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Je kunt beter je commando's uitvoeren bij het veranderen van de knop status ipv de knopstatus zelf. Moet jezelf nog ff kijken of je het bij het indrukken of bij het loslaten wil doen (Meeste virtuele buttons in windows werken met waneer ie wordt losgelaten)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

De compoort stuurt vrij snel data door (5 * per ms oid) dus zul je je knoppen af moeten vangen.

Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 21:01 schreef Janoz het volgende:
Je kunt beter je commando's uitvoeren bij het veranderen van de knop status ipv de knopstatus zelf. Moet jezelf nog ff kijken of je het bij het indrukken of bij het loslaten wil doen (Meeste virtuele buttons in windows werken met waneer ie wordt losgelaten)
hmmz, ik snap wat je bedoelt, maar heb geen id hoe ik zoiets zou moeten proggen ;( (ben n00b)

Verwijderd

Op dinsdag 12 maart 2002 21:07 schreef LAuWe het volgende:

[..]

hmmz, ik snap wat je bedoelt, maar heb geen id hoe ik zoiets zou moeten proggen ;( (ben n00b)
Gebruik een variabele:

static ButtonDown as boolean

If ReadButtonFromParallelePoort = on then
ButtonDown = True
else
ButtonDown = false
endif
If ButtonDown Then
BestuurProgramma
endif

Op deze manier lees je wel meerdere waarden uit de poort maar je voert maar 1 keer een actie uit als gevolg van deze waarde.

Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 21:45 schreef KingLois het volgende:

[..]

Gebruik een variabele:

static ButtonDown as boolean

If ReadButtonFromParallelePoort = on then
ButtonDown = True
else
ButtonDown = false
endif
If ButtonDown Then
BestuurProgramma
endif

Op deze manier lees je wel meerdere waarden uit de poort maar je voert maar 1 keer een actie uit als gevolg van deze waarde.
hmm, tnx, ik zat net ook aan zoiets te dneken. heb het ff geprobeerd, het probleem is nog niet helemaal weg. maar het werkt wel al beter!

Verwijderd

Topicstarter
het heeft toch niet helemaal gewerkt. ik zla ff stukje code geven.
code:
1
2
3
4
5
If DlPortReadPortUchar(889) = 112 Then    //checked de knop
If
<prog stukje>  
End If
  End If

edit: heb het weer ff terug gedana zoals ik het erst had

Verwijderd

Wat werkt er niet dan?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Ik zal het ff verduidelijken

Pseudo code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
oldstate = false
while progje draaid {
  newstate = readstateFromButton
  if (newstate != oldstate) {
    // status is veranderd
    if (newstate) {
    //knopje is net ingedrukt
    } else {
    //knopje is net losgelaten
    }
  }
  oldstate=newstate;
  sleep(een tijdje);
}

Nu moet je op de plek waar de knop wordt ingedrukt, of wordt losgelaten gewoon je functie/procedure/sub/methode aanroepen die de actie uitvoert.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1