niin löysin internetin ihmeellisestä maailmasta seuraavan sivun jonka ohjeilla olen tulostin porttia ohjannut.
http://www.geekhideout.com/iodll.shtml
mutta onko mahdollista saada ohjelmaan joku systeemi (ite kutsun keskeytykseksi). eli jos jossain tulostinportin pinnissä käy tai ilmestyy tila "1", niin VB6:n saisin komennettua jotain kivaa tekemään.
ei taida kukaan näistä tietää...
NO MORJENS!
Arto kirjoitti:
ei taida kukaan näistä tietää...
Ennemminkin on niin, ettei ketään "näistä" moiset viritelmät enään kiinnosta! Mutta esim. täältä löytyy VB 2005:llä toteutettu Inpout32.dll esimerkki, joka on lähes sellaisenaan toteutettavissa VB6:lla. Itse voit sitten päättää ajoitatko lukemisen Timer'in avulla vaiko eikö...
Eipä taida olla keskeytystä samaan malliin kuin sarjaportissa. Joskus dos-aikaan piti ainakin skannata läpi pinnien tilat ohjelmallisesti.
sarjaportilla ainakin on helppoa saada viittä volttia pihalle, rts ja dts pinnejä voi suoraan ohjelmallisesti napsuttaa (ainakin .netin serialport controllilla), eiköhän onnistu vb6:sella ihan vastaavasti.
neau33 kirjoitti:
Ennemminkin on niin, ettei ketään "näistä" moiset viritelmät enään kiinnosta!
Nimenomaan. Varsinkin kun nykykoneissa ei usein edes ole rinnakkaisporttia ja jos tekisi jotain vakavampaa joka tarvitsisi sellaista, niin mieluummin tekisi sitten sellaisen joka toimii myös USB-sovittimien kanssa. Eli legacyosoitteiden puukottaminen suoraan inout virityksillä on jotain ihan hirveää.
Kuten jtha ja groovyb mainitsivatkin, niin sarjaportin käyttö voisi olla paljon järkevämpää. Tosin oikein toimivasta sarjaportista ei pitäisi tulla lainkaan 5V pihalle vaan +10 - +15 V ja -10 - -15 V. Tokihan noita saa elektroniikalla käsiteltyä ja sisäänpäin sarjaportti hyväksyy 5V nollaksi ja 0V ykköseksi.
vielä vänkään teille vähän vastaan.
linkistä http://www.beyondlogic.org/spp/parallel.htm
ja alla katkelma kyseisestä linkistä. (Mod. poisti järjettömän pitkän katkelman, kiinnostuneet osaavat varmaan klikata linkkiäkin.)
eli control rekisterin 4. bitti ylös, saa aikaan sen että jos ack linja menee ylös tai alas niin irq7 tai 5 "laukee" mutta kuinka nuita luetaan??
mulle ei tuo C kieli aukee ollenkaan... osaisko joku vääntää vb:lle tän =)
Arto kirjoitti:
vielä vänkään teille vähän vastaan.
En mä nyt tiedä keille "teille" sä vänkäät vastaan. Suunnilleen kaikilla oli toi tiedossa.
Käsittääkseni keskeytysten käsittely vaatii Windowsissa ajurin. Ajureita ei voi koodata VB:llä.
(End of story?)
Arto kirjoitti:
/* 2nd February 1998 */ ... #include <dos.h> ...
Itselle 1998 ja dos.h huutavat jo aika kovaa, että uudempaa tekniikkaa olisi järkevämpi käyttää.
Asiat voi toki aina toteuttaa kuten ne on toteutettu 13 vuotta sitten. Helpompaa olisi tosin ostaa Arduino tai jokin muu helppo mikrokontrollerialusta. Tarjoaa monipuolisemman mahdollisuuden ohjata ja lukea elektroniikkaa koneen ulkopuolelta. Keskustelu tietokoneen kanssa tapahtuu USB-portin kautta matkien sarjaväylään kytkettyä laitetta.
en millään viittis yhen isd25xxx piirintakia ostaa mitään kauheeta rautaa enää jatkoks... pitää koittaa pärjätä ilman keskeytyksiä... enpähän tuota ois tarvinnukkan kun muistin loppumista ja viestin loppumista ilmasemaan...
Ainahan voit ajastimen avulla tai omassa säikeessään pollata tilan muutoksia.
Tokihan voit vahtoehtoisesti asentaa koneellesi dos tai OS/2 käyttöjärjestelmän. Tällöin tosin VB:n käyttäminen täytyy unohtaa.
mikä on oma säe?? kuinka se toimii??
timeri on tietysti varteen otettava vaihtoehto.
VB6:ssa ei ole tukea säikeistykselle. Säikeiden käyttö luonnollisesti on silti mahdollista VB6-ohjelmassakin, mutta useita kertaluokkia helpommalla pääsee vaihtamalla vaikka VB.Netiin.
Sinänsä en näe mitään tarvetta säikeiden käytölle tuossa tapauksessa. Laitat vaan tarkistuksen timeriin ja sillä hyvä.
Arto: täällä infoa vb6 ja taustasäikeistä: http://msdn.microsoft.com/en-us/library/aa719109(v=vs.71).aspx
Mutta itse kyllä tekisin timerilla.
Ööh, olisiko tuossa yhtään mitään järkeä käyttää ylipäätään VB6:sta, jos kuitenkin sen monisäikeisen osuuden tekisi tuon esimerkin mukaisesti VB.Netillä ?
Ylipäätään en tekisi mitään uutta projektia VB6:lla, mutta tuo kyllä kuulostaa vielä hullummalta.
Heippa taas!
Joo alkaa mennä aika vaikeeks. Elikä tahtoo todellakin tietää, että miten ****lla muulla, kuin ajastimen avulla pollaus toteutettaisiin säikeen päässä HÄ?
JA ARTO HYVÄ USKO MINUA JA UNOHDA NYT JUMALAUTA AINAKIN BIOS KESKEYTYKSET!!!
Hmm, ei kai tässä nyt missään vaiheessa ole ollut mitään puhetta BIOS-keskeytyksistä?
neau33 kirjoitti:
Elikä tahtoo todellakin tietää, että miten ****lla muulla, kuin ajastimen avulla pollaus toteutettaisiin säikeen päässä HÄ?
Jos ei tarvetta ole millekään tarkalle ajastukselle, niin eiköhän tuo säie voisi yksinkertaisesti vain nukkua lyhyen aikaa pollausten välillä, vai?
Heippa taas!
lainaus:
Jos ei tarvetta ole millekään tarkalle ajastukselle, niin eiköhän tuo säie voisi yksinkertaisesti vain nukkua lyhyen aikaa pollausten välillä, vai?
Olisikohan niin, että jos säie "nukkuu" jonkun tietyn ajan niin se toimii ajastetusti?
Ja sitten asiaan...
Private Sub Timer1_Timer() MsgBox BitRead(StatusPortRead(BaseAddress), PollBit) End Sub 'Jan Axelson niminen heppu voi kertoa loput
neau33 kirjoitti:
Heippa taas!
Joo alkaa mennä aika vaikeeks. Elikä tahtoo todellakin tietää, että miten ****lla muulla, kuin ajastimen avulla pollaus toteutettaisiin säikeen päässä HÄ?
JA ARTO HYVÄ USKO MINUA JA UNOHDA NYT JUMALAUTA AINAKIN BIOS KESKEYTYKSET!!!
***** KOHTA PYSÄHTYY KUN LYÖN FISKARSSIN HALKASU KIRVEEN TUON MATOLOOTA KYLYKEEN!!
ei vaiskaan.. nii ei ruveta sitä keskeytystä sen enempää... mutta kyllä kai sen voi silti tehä jos tahtoo... eiköhän se timerillä riitä... tässä tapauksessa.
sitä paitsi mulla homma toimii jo!
Olen kyllä kaviaarin kanssa samaa mieltä, arduino on ehkä kätevin laite ikinä ulkoisten syötteiden (elektroniikan) lukemiseen mitä maa päällään kantaa...
Itse kun ensimmäisen arduinon sain rakastuin siihen niin, että kaikki pienetkin elektroniikkaan liittyvät jutut toteutin sillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.