Toon posts:

[VB6] Fill color probleem.

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben bezig met een klein test progje om te zien of de printer poort nog werkt.

Ik heb een form1 wat het hoofd programma bezit. en hier in zit een knop die "bin1" heet. als je op deze knop klikt dan wordt datalijntje D0 van de printerpoort. pin2 100ms hoog. en vervolgens weer laag met de volgende code gebeurt dat:

Visual Basic 6:
1
2
3
4
5
Private Sub bin1_Click()
  Call LPT_DataReg_PinHigh(BIT0)
  Call Sleep(100)
  Call LPT_DataReg_PinLow(BIT0)
End Sub


Maar omdat ik niet altijd een ledje op de lpt heb zitten wil ik het ook software
matig kunnen zien. en heb ik dus een rondje getekent met de kleur "666666"
Als ik nu op die knop druk dan moet dit rondje even rood worden ( 100ms ) kleur 255

daar voor kwam ik tot de code:

Visual Basic 6:
1
2
3
4
5
6
7
Private Sub bin1_Click()
Call LPT_DataReg_PinHigh(BIT0)
If (BIT0) Then LPT_trigger.Indicator(1).FillColor = 255
Call Sleep(100)
Call LPT_DataReg_PinLow(BIT0)
If (BIT0) Then LPT_trigger.Indicator(1).FillColor = 666666 
End Sub


nu was ik in de veronderstelling dat hij dus even rood zou knipperen en vervolgens weer zijn oude "uit" kleur terug kreeg.

Dit gebeurt dus niet. hij blijft gewoon rood maar hij gaat niet meer terug naar kleur 666666

als ik
If (BIT0 = 1 --of 0 neer zet krijg ik overflow in mijnmodule--) Then

als ik
If (BIT0 = true --of false neer zet maakt het geen verschil--) Then

net als
If (BIT0) = false/true Then
ook geen verschil maakt.

Hoe los ik dit op?

de search geeft alleen maar omiga fouten en Google komt niet verder da alleen fill en color en vb6 maar niks wa dit oplost.

[ Voor 3% gewijzigd door gorgi_19 op 15-08-2004 09:05 ]


  • deathz0rz
  • Registratie: Januari 2003
  • Laatst online: 14-04 13:46
moet die laatste if niet
If (Not BIT0) Then LPT_trigger.Indicator(1).FillColor = 666666
zijn?

Verschil moet er zijn.


Verwijderd

Topicstarter
Ik heb het getest maar dan slaat hij de eerste kleur over dus hij gaat gewoon meteen weer door naar zijn oude stand en rood krijg je niet te zien :S hoewel dat toch wel voor 100ms zou moeten niet? das iig de bedoeling :)

IFnot is geen command, heb ik ondertussen ook getest.

[ Voor 5% gewijzigd door Verwijderd op 15-08-2004 11:26 ]


  • deathz0rz
  • Registratie: Januari 2003
  • Laatst online: 14-04 13:46
nou, dan is het duidelijk DAT het niet werkt.
als je even kijkt naar dat scriptje,

op regel 2 wordt BIT0 true, of 1, of weet ik veel
op regel 3 wordt gechecked of ie true is... ja dus, dus dat gaat goed
op regel 4 moet ie slapen, maar dat doet ie niet!
op regel 5 wordt BIT0 false, of 0, of weet ik veel
op regel 6 wordt weer gechecked of ie true is... nee, en dat hoort ook niet, maar dus verandert dat ding niet, met mijn modificate (not) werkt het wel goed

conclusie: sleep werkt voor geen meter. ik denk dat het trouwens in delphi wel zou werken...

Verschil moet er zijn.


Verwijderd

Topicstarter
En bij mij werkt die sleep weer wel,

want ik heb dus ook mijn hardware aan de LPT hangen en als ik de sleep verander naar 1000 dan brand gewoon 1 sec lang mijn ledje op de lpt poort.

alleen softrware matig krijg ik hem dus niet aan de gang.

  • deathz0rz
  • Registratie: Januari 2003
  • Laatst online: 14-04 13:46
dat is dan toch wel raar

Verschil moet er zijn.


Verwijderd

Topicstarter
Daarom heb ik het hier ook gepost :)

En op google kan ik helemaal niks vinden met dit "onderwerp"

  • deathz0rz
  • Registratie: Januari 2003
  • Laatst online: 14-04 13:46
probeer het eens met een timer

Verschil moet er zijn.


Verwijderd

wat is je datatype van bit0 ? en heb je al eens geprobeert met F8 door je code te steppen en te zien wat de werkelijke waarde is? Wordt je IF zo en zo wel uitgevoerd?

en die sleep versie is dat geen API ? heb je die wel gedeclareerd? En zo ja, als je dan 5000 gebruikt, wacht die dan wel 5 seconden? Schrijf anders even zelf m.b.v. een Do/Loop een wachtfuntie.
Pagina: 1