Interrupt, parallellport, nätverk och Visual Studio (Basic)

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Interrupt, parallellport, nätverk och Visual Studio (Basic)

Inlägg av JimmyAndersson »

Jag håller på att snygga till koden till min nummerpresentatör.
Istället för att med jämna mellanrum läsa av parallellporten för att se när pin 10 (statuspinne 6) blir hög så skulle jag vilja lösa den kollen på något bättre sätt.
Misstänker att interrupt är rätt väg.. Men jag vet inte riktigt hur jag ska gå till väga. Eller brukar man bara låta programmet ligga i en loop när det ska vänta på att något ska inträffa? Det känns som att det bara skulle slösa CPU-kraft..

Jag använder inpout32.dll som innehåller en kernel-driver, så det borde gå att få interrupts. En annan väg är iofs Windows API, men jag har lika lite koll på hur man löser det där.



Hänger ni med på vad jag vill göra? Annars får ni fråga. :)
Det är inte helt lätt att skriva relevant information när man saknar kunskapen om vad som behövs för att lösa detta problem.
Senast redigerad av JimmyAndersson 12 december 2008, 14:52:16, redigerad totalt 1 gång.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Mest "rätt" hade väl varit att lagt på en uC och låta den meddela seriellt när det händer något. Då blir den mer generisk också och slipper fulhack för att använda parallellporten.
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Men hur löser man det med serieporten då? Det blir väl precis likadant där isåfall, dvs antingen interrupt eller poll-grejj? Hur som helst så måste/vill jag använda parallellporten. Serieportarna används till 1wire-nätet och jag vill inte bygga om för mycket av detta.


edit:
Kan passa på att tillägga att avläsningen av parallellporten i VisualBasic är en tillfällig grejj.
Senare ska nummerpresentatören vara kopplad till serverns parallellport. Servern ska då (genom nätverket) meddela VisualBasic-programmet om vem som ringer. Men det är en senare sak. :)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Serieporten har ju interruptstöd i både VB och alla andra program. Det är den naturliga vägen att gå. Och har du ingen serieport så kör du en USB->Serial-omvandlare, eller om du ska rita ett kort så smäller du på en FTDI-krets på en gång.

En sån här gör ju inte ont:
http://www.komplett.se/k/ki.aspx?sku=315699
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Mjo lite ont, om man inte har fler lediga USB-portar och redan har gjort ett färdigt kretskort med fem utgångar (till parallellport). :)

När vi ändå är lite off-topic:
Hur är det med interruptstöd på parallellporten i Debian och någon C ?


edit:
"Serieporten har ju interruptstöd i både VB och alla andra program."

Ah, just det ja. Det har du ju rätt i.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Jodå, med ppdev (/dev/partport0 etc) så kan du med vanlig select invänta interrupt på parallellporten. Så på Linux är den ju helt okej att använda. Inget trolleri heller. :)

http://people.redhat.com/twaugh/parport/html/x623.html
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Aha, det var så smidigt tillochmed. :)

Då tar jag den sista frågan också när jag ändå håller på:

Servern ska alltså i slutändan lyssna efter ett interrupt på en parallellportspinne.
När det inträffar så ska den läsa av fyra andra parallellports-ingångar och utföra lite annat hyss (leta i databas och lite sånt).

Sedan (och det är här jag är lost: )
Därefter ska servern berätta resultatet för ett VisualBasic-program som ligger i bakgrunden på WinXP-burkarna i det lokala nätverket.

Jag har gjort en liknande grejj, men det var när VisualBasic var en ny uppfinning, så de hjärncellerna har flyttat hemifrån för länge sedan...


Jag skulle behöva ett finger (helst pekfinger) åt rätt riktning så jag vet var jag ska börja. :)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Linux-sidan gör du ju enklast; öppna /dev/parport0, låt main-loopen via med en select() (eller poll()), och den "släpper" och indikerar något läsbart så läser du bara ur den enligt länken i förra inlägget och hanterar datat som du nu kopplat det.

För överföring till Windows-burken skulle jag föreslå t.ex HTTP + REST. Det borde krylla av HTTP-moduler till VB (kanske t.o.m. färdiga för REST), och på linuxsidan finns det mängder med stöd i de flesta språk för att dumpa över ett litet xml-ark.

Det är den "renaste" lösning jag kan komma på...
Användarvisningsbild
JimmyAndersson
Inlägg: 26417
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Aha! :idea:

Så enkelt och logiskt det känns när man fattat grundprincipen. :D
Det här ska bli kul att läsa vidare om och testa.

Tack! :tumupp:
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Keep us (me) informed! ;)
Skriv svar