parallel oder seriell?

Gruß an alle Pinguine!

Folgendes Problem: Ich muss ein Programm schreiben, das auf eine Lichtschranke reagiert. Da ich sowas zum ersten Mal mache, bin ich mir nicht sicher, ob ich die serielle oder die parallelschnittstelle nehmen soll.

Und noch wichtiger: Wie spreche ich die Schnittstellen in C an? Welche der beiden ist leichter anzusprechen? Unter Windows gibts in der conio.h die Funktionen inp(0x378,...); bzw outp(0x378,...);. 0x378 ist die logische Adresse der Parallelschnittstelle. Hat diese unter Linux dieselbe Adresse? Wie kann ich das überprüfen?

Danke im Voraus für eure Hilfe!
 
Google sollte dir einige Ergebnisse dazu liefern wie du es umsetzen kannst, denn das Problem hatten sicherlich schon andere.

Die Addresse 0x378 ist unter Linux die selbe, denn die ist ja hardwareseitig (steht bei mir auch beim booten da, bei den Angaben vom BIOS)
mfg
Nornagest
 
Hi,

das Betriebssystem spielt keine Rolle. Der Port ist ja unter einer bestimmten Adresse fest eingebaut. Viel interessanter ist, ob dich das Betriebssystem überhaupt an die Hardwareadressen dranläßt. Win NT, 2000 und Xp verweigern den zugriff bzw. lassen den ins Nirvana zeigen.

Die Serielle Schnittstelle kann auch für bis zu drei Eingänge und weitere 3 Ausgänge herhalten. Vom Programmieren ist es nicht so logisch, wie beim parallelport, dafür ist die serielle Schnittstelle nahezu unverwüstlich. Sie arbeitet allerdings mit bis zu +/-12V und ist absolut kurzschlußfest. Der Parallelport verlangt 5V TTL-Signal und ist extrem empfindlich gegen negative Spannungen und Überspannungen. Die RS232 macht bis +/-15V alles mit.

Gruß
Elmar
 
Danke!

@Elmar: Gibt es denn unter Linux auch irgendwelche Zugriffsbeschränkungen?
Ich bin noch nicht dazu gekommen, es auszuprobieren. Ich habe mir auch noch kein Lichtschrankenmodul geholt, da ich erstmal versuchen möchte, ein Signal an den Parallelport zu bekommen, indem ich einfach eine konstante Spannung an eine der Datebleitungen lege. Kann ich dabei etwas kapputtmachen? Ich habe meine gesamten Elektrotechnikkenntnisse leider erfolgreich verdrängt. Es reicht doch einfach eine Spannungsquelle, also ein Netzteil, an dem ich die 5 Volt einstellen kann oder?

thx!
 
Hi,

Ob und vor allem wie Linux den Zugriff limitiert weiss ich leider nicht, da ich in Hardware Windows und DOS-Systeme verwende, da Linux in der Welt der "Sponsoren" ziemlich unbekannt ist. Ich verwende fast ausschließlich Mikrocontroler im Zusammenhang mit RS232, die dann nach Parallel oder was auch immer umsetzen. Unter Linux nutze ich dann einfach die normalen Zeichenausgabebefehle und leite die dann auf eine RS232 um.

Für erste Experimente ist es nicht so gut, eine fremde Spannung zu verwenden, da man da sehr viel aus Versehen falsch machen kann und so schnell den Parport grillt. Ich habe da auch schon viel Lehrgeld gezahlt.

Die Eingänge sind bei den meisten Parports von alleine High und können dann mit einer Brücke/taster/Schalter nach Masse (gehäuse oder Massepins) gezogen werden. Schaletr offen = '1' Schalter geschlossen = '0'.

Bei den Eingängen musst Du aber aufpassen, da einige Zustände invertiert in den registern landen, also '1' für LOW und '0' für HIGH. Das hat historische gründe, da ein nichtangeschlossener Drucker die Leitungen nicht auf LOW ziehen kann und so "Busy", "Paper out" und "Line off" signalisiert werden, damit der Computer auf jeden Fall merkt, dass er nicht drucken kann.

Eine Liste der Register und den zugehörigen Portpins am Druckerstecker solltest Du Dir vorher ergoogeln.

Gruß
Elmar
 
Zurück
Oben