Sida 1 av 1

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

Postat: 12 december 2008, 13:09:27
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.

Postat: 12 december 2008, 13:41:31
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.

Postat: 12 december 2008, 14:14:11
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. :)

Postat: 12 december 2008, 14:19:36
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

Postat: 12 december 2008, 14:28:21
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.

Postat: 12 december 2008, 14:39:42
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

Postat: 12 december 2008, 14:51:14
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. :)

Postat: 12 december 2008, 14:57:06
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å...

Postat: 12 december 2008, 16:29:41
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:

Postat: 12 december 2008, 17:01:17
av speakman
Keep us (me) informed! ;)