Ik heb nu zo'n grafische LCD gekocht, maar ik wil er ook graag knopjes onder hebben. Nu snap ik dat allemaal wel, maar is het ook mogelijk om passief een programma te laten wachten tot een knopje is ingedrukt? Ik vond de oplossing van een loop met een sleep() erin namelijk niet zo mooi (vergt veel van de processor)
Dan moet je met threads gaan werken. Op MSDN (www.microsoft.com/msdn) staat genoeg over de win32 thread functies.
Verwijderd
als je 4-5 keer perseconde even kijkt op die port is meer dan genoeg (sleep van ~200ms) dat kan nooit 'n hoge load opleveren. Als je zelf 'n loopje maakt met queryperformance counter tjah dan gaat het idd wel cpu zuipen..
Threads betekent toch gewoon dat je meerdere loops tegelijk kan doen in je programma? En dan zit ik weer met een loopOp maandag 01 april 2002 22:32 schreef Orphix het volgende:
Dan moet je met threads gaan werken. Op MSDN (www.microsoft.com/msdn) staat genoeg over de win32 thread functies.
Ben bang dat het een hele hoge processorload opleverd
Verwijderd
In de tijd dat jij je sleep aan roept, mogen anderen processen de cpu gebruiken dus nix om bang voor te zijn.
Ik probeer het morgen denk ik wel even (eerst ff nog wat onderdelen bij de electronicazaak weghalen
) of het dan wel goed werkt
Ik dacht echt dat er een betere manier wat, dat het programma pas iets gaat doen als er op die knop gedrukt wordt.
Ik dacht echt dat er een betere manier wat, dat het programma pas iets gaat doen als er op die knop gedrukt wordt.
Verwijderd
enige waar je wel op moet letten dat je read/write operaties elkaar niet in de weg gaan zitten als je met threads aan de gang gaat..
ik gebruik vaak in een thread een loop
while(!bStop)
{
sleep(50);
}
met een sleep, om de load wat te verminderen, werkt perfect
bStop is een bool waarmee je de thread dus stopt
while(!bStop)
{
sleep(50);
}
met een sleep, om de load wat te verminderen, werkt perfect
bStop is een bool waarmee je de thread dus stopt
/me weet geen leuke quote voor in zijn signature
.edit: hier stond onzin, niet goed gelezen
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ja idd, maar meestal wil je dit toch omdat anders de rest van je programma niks kan doen. In een multi-tasking omgeving zoals Windows wil je vaak dat bv je GUI onafhankelijk werkt van cpu-intensieve taken.Op maandag 01 april 2002 22:34 schreef Marcj het volgende:
Threads betekent toch gewoon dat je meerdere loops tegelijk kan doen in je programma? En dan zit ik weer met een loop
Verder zou ik ook geen andere manier weten dan pollen icm een sleep. Je kan altijd nog de thread priority omlaag schroeven als het te intensief wordt (ten koste van nauwkeurigheid). En heel misschien kan je ergens in windows een hook instellen wanneer data binnenkomt op de lpt poort, maar daar weet ik verder weinig van.
op welke manier lees je de data van je LPT1 poort uit? Als dat een 'gewone' filehandle is, moet je eens kijken naar WaitForSingleObject e.d, op die manier kan je je thread blocken totdat er data is op een of meerdere handles.Op maandag 01 april 2002 22:29 schreef Marcj het volgende:
Ik heb nu zo'n grafische LCD gekocht, maar ik wil er ook graag knopjes onder hebben. Nu snap ik dat allemaal wel, maar is het ook mogelijk om passief een programma te laten wachten tot een knopje is ingedrukt? Ik vond de oplossing van een loop met een sleep() erin namelijk niet zo mooi (vergt veel van de processor)
Verwijderd
Voor de aansturing van lcd's is 99% van de tijd dlportio gebruikt waardoor je dus echt zelf moet gaan pollen voor data.
Als je de lpt poort opent als file, gaat windows er vanuit dat wat je naar die file stuurt, naar een printer moet. De data die je er uit leest, is volgens mij dan alleen de status van de data poort, en niet de control of status poort (waar meestal de knopjes aan hangen).
Als je die wilt uitlezen moet je dus zelf op I/O leven gaan kijken (dus NIET openen als een file). Je moet dan wel meer zelf doen, maar je kan wel alles checken van de LPT poort.
Als je die wilt uitlezen moet je dus zelf op I/O leven gaan kijken (dus NIET openen als een file). Je moet dan wel meer zelf doen, maar je kan wel alles checken van de LPT poort.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Ik heb al DLportIO gedownload, en daar zit een duidelijk voorbeeld bij, dus daar kom ik wel uit
Verwijderd
ik heb ook een programmatje gemaakt voor 4 knopjes voor bij mijn 2x16 lcd. ik gebruik ook het pollingprincipe. check sig voor meer info
Je kan natuurlijk ook gewoon ff de interrupt van de printerpoort op je printje aansluiten en de interrupt afvangen... Dan zul je natuurlijk wel even een device driver moeten schrijven. Onder Linux is dit een eitje, maar onder windows?
Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.
Verwijderd
Waarom denk je dat iedereen dlportio gebruikt? juist! omdat driver schrijven een hels karwij is.Op dinsdag 02 april 2002 13:58 schreef BCC het volgende:
Dan zul je natuurlijk wel even een device driver moeten schrijven. Onder Linux is dit een eitje, maar onder windows?
Zit daar geen interrupt functie in dan?
Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.
Pagina: 1