Bascom und Ansteuerung COM/LPT Schnittstelle
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
angegebene level
ausgang
code
dauer
ereignis
greifen
http
jemand
level
logik
messen
modul
paar
port
schalten
schnittstelle
serielle schnittstelle
signal
status
url
-
Hey Leute,
weiß jemand ob man mit Bascom die Pins der Schnittstellen eines PCs ansteuern kann? Also z.B. einen Ausgangspin der COM Schnittstelle ansteuern bzw. einen anderen Pin abfragen? An Schnittstellen meine ich die LPT bzw. COM Schnittstelle.
Wenn ja wie leicht ist dieses? Kennt jemand vll ein Tutorial wo man sich das mal vorab angucken kann?
Oder muss ich auf Microcontroller zurück greifen? Wenn ja in welcher Preisklasse liegen die etwa?
Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also da Bascom meiner Ansicht nach für die Programmierung von Microkontrolern gedacht ist (man korigiere mich so ich mich irre) würde ich denken das das der falsche Weg ist.
Aber wenn dir 5 Eingänge und 3 Ausgänge genügen (um Eingänge nutzen zu können wird bereits ein Ausgang benötigt) dann könntest du das Modemsteuerregister der RS232 Schnittstelle bspw. recht einfach mit Python programmieren indem du das serial Modul verwendest, ähnliches könntest du auch mit dem parallel Modul für die LPT Schnittstelle machen, hier mal ein Beispiel für die serielle Schnittstelle:
#! /usr/bin/python # -*- coding: utf-8 -*- # importiere Modul für Serielle Anschlüsse import serial, sys, os, time # Öffne /dev/ttyS0 als com1 mit 9600 Baud und 1s Timeout com1 = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # Definiere das Level vom DTR (Data Terminal Ready) Ausgang zu beginn zu False com1.setDTR(level=False) try: while True: # Gib aus welcher Port tatsächlich geöffnet wurde # print "Port = ", com1.portstr # Hole den Status des CD Pins (Pin 1 bei 9pol. SubD) und gib ihn aus # cd_state = com1.getCD() # print "CD = ", cd_state # Hole den Status des DSR Pins (Pin 6 bei 9pol. SubD) und gib ihn aus # dsr_state = com1.getDSR() # print "DSR = ", dsr_state # Hole den Status des CTS Pins (Pin 8 bei 9pol. SubD) und gib ihn aus # cts_state = com1.getCTS() # print "CTS = ", cts_state # Hole den Status des RI Pins (Pin 9 bei 9pol. SubD) und gib ihn aus ri_state = com1.getRI() print "RI = ", ri_state if ri_state == True: # Setze Pin 7 (RTS) und Pin 4 (DTR) auf das angegebene Level # com1.setRTS(level=True) com1.setDTR(level=True) # Verzögerung damit man die Änderung messen kann # time.sleep(0.5) if ri_state == False: # Setze Pin 7 (RTS) und Pin 4 (DTR) auf das angegebene Level # com1.setRTS(level=False) com1.setDTR(level=False) # Verzögerung damit man die Änderung messen kann # time.sleep(5.0) # warte kurz bevor das nächste mal aktualisiert wird time.sleep(0.1) # lösche Bildschirm für die nächste Ausgabe os.system("clear") # Wenn STRG + C gedrückt wird except KeyboardInterrupt: com1.close() sys.exit(0)
Wie du siehst wird dort ein Signal am RI (Ring Indicator) Eingang eingelesen und abhänig davon ein Ausgang (DTR) geschalten, die Pins auf dem 9pol. Sub-D habe ich immer mit dazu geschrieben und die auskommentierten Sachen beziehen sich auf andere Ein- und Ausgänge die Logik dazu musst du dir natürlich selbst ausdenken.
Doku solltest du selbst mit einer Suchmaschine deiner Wahl finden.
Eingänge beschaltest du über einen Ausgang des PC's bspw. Pin 7 (falls inaktiv im Programm High setzen) mit einem kleinen Serienwiderstand (so 5k vieleicht) und natürlich deinem Schaltkontakt auf den Pin des Eingangs.
Ausgänge kannst du mit 1,2k in der Basisleitung eines Kleinsignaltransistors (bspw. BC338-40) und der Emitterleitung auf GND (Pin 5 glaub ich) realisieren
Ich epfehle dringend Experimente an einer separaten RS232 oder LPT Karte oder über einen USB RS232 Wandler zu machen sonst ist ein Irrtum ev. für das Mainboard ein Grund Rauchzeichen zu geben.
Beitrag zuletzt geändert: 12.11.2011 12:06:02 von fatfox -
meines Wissens ist der COM port an sich kurzschluss fest. Also sollte da so schnell nichts passieren. Werde es mir aber mal zu gemüte führen. Und die anzahl der ein und ausgänge kann man ja durch schieberegister erhöhen. Also das hab ich schon mal gelesen. Mir gings nur um eine einfache sprache zum ansteuern der pins, dies grafisch am pc zeigen lassen bzw. Mit timer oder auf ereignisse die ausgänge schalten.
Michael
Beitrag zuletzt geändert: 12.11.2011 16:38:30 von freewareecke -
ja an sich ne Relaiskarte, die Via Schieberegister ein Anschluß für mehrere Relais nutzbar machen. Aber darüber hinaus will ich auch die Eingänge durch entsprechende Schieberegister auf dauer erweitern. Also dass die Eingänge erhöht werden. Aber an sich will ich erstmal mit den Ausgängen anfangen.
Nur wie gesagt ansteuerung soll möglichst leicht gehen und auch eine grafische Oberfläche mit paar Buttons oder Checkboxen (Häckchenkisten) sowie paar Labelfelder ausgestattet und dann so ereignisse vorrufen.
Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage