Jos formilta käskee hyppäämään aliohjelmaan, jossa pyörii
päättymättömässä luupissa ja lukee lpt portin pinnejä ja tulostaa näytölle arvot ja jossa tietty pinnin nouseminen ylös vasta päästää luupista pois.
Miksi tilttaa kun käskee hyppäämään aliohjelmaan.
Vai onko nyt ajatus moka.
onko sulla siellä luupissa DoEvents?
Ei pitäiskö olla mitä toi Events meinaa.
Mitä eroo pelkkään do:loop
Siis DoEventsiä käytetään tähän tyyliin:
Do ..koodia.. DoEvents ..koodia.. Loop
Eikä tuon DoEventsin tarvitse edes olla välttämättä loopissa eikä juuri noin kuin tuossa esimerkissä.
Tuo DoEvents antaa muillekkin prosesseille suoritusaikaa eikä vaan sille ohjelmasi loopille.
MSDN kertoo DoEvents:stä näin (lyhennettynä):
"DoEvents is most useful for simple things like allowing a user to cancel a process after it has started, for example a search for a file."
Käytetään tuollain kuin JTJ esittikin.
No nyt se ei tilttaa kokonaan kun käytää tuota DoEvent:siä välissä, mutta jos pulssia ei tule lpt pinneihin se ei hyppää tohon aliohjelmaan ilman kaksois klikkausta ja jää jotenkin päälle, silloin jos pulsseja tulee se hyppää normaalisti aliohjelmaan.
Pätkän on tarkotus lukee pic16f84 piiristä 16 bittinen luku sarja tietona lpt portista.
Joku tossa VB:ssä sotkee mun ajatusmaailmaa qbasikin jälkeen.
tollein testasin sitä se basikilla toimi normaalisti.
Private Sub luedata()
Dim n As Byte
Dim luku As Long
Dim vara2 As Byte ,swap
Dim vara1 As Byte ,swap
Dim vara As Byte ,swap
Dim apu As Long
Dim lahetetty As Byte
Do
luku = 0
vara = 2
vara1 = 3
'Call vbOut(&H21, &HFF)
'Call vbOut(&HA1, &HFF)
Call vbOut(888, 0)
Call vbOut(888, 3)
For n = 0 To 15
DoEvents
apu = 2 ^ n
If vara1 = 2 Then lahetetty = 16
if vara1 = 3 Then lahetetty = 0
takasin:
DoEvents
If pois = 1 Then pois = 0: GoTo loppu
If (vbInp(889) And 16) = lahetetty Then GoTo takasin
If (vbInp(889) And 64) = 64 Then luku = luku + apu
If n <> 15 Then vara2 = vara: vara = vara1: vara1 = vara2 Call vbOut(888, vara1)
Next n
Picture6.Cls
Picture6.Print luku
'Call vbOut(&H21, 0)
'Call vbOut(&HA1, 0)
Loop
loppu:
End Sub
Noi keskeytyksetkään ei olut käytössä.
Jelpatkaa nyt, että pääsee juonesta kiinni.
Missä välissä tuo DoEvents pitää olla?
Swapin eteen tuli pilkut vaikka piti olla '
ja vara1=vara2: call puuttuu toi kaksoispiste, mutta eiköhän siitä toiminta kummiskin selviä.
Onko tuossa ongelmana, että se vie liikaa prosessilta aikaa?
Kun pätkän kääntää exe:ä niin se ei sammu ollenkaa muuta kuin Ctrl+Alt+Del ja lopeta tehtävä.
Tuota portia pitäis lukee kokoajan kun sinne tulis n.200 kertaa sekunnissa 16 bittinen luku ja se siirto ei ole synkronisoitu jolloin täytyy odottaa kun yhdessä pinnissä jännite nousee ylös ja alas, että tietää milloin toinen on valmis lukemaan ja vastaanottamaan bitti tiedon.
Miten com porttiin tehdään kesketys jos yrittäis sitä sieltä kautta, ettei täydy sitä porttia lukea kokoajan?
Muokkaus toiminto on olemassa! Käytä sitä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.