kostenloser Webspace werbefrei: lima-city


Bascom und Ansteuerung COM/LPT Schnittstelle

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  5. Du willst eine Relaiskarte bauen wie ?

    Wie gesagt, Python und Tk bzw. WxWidgets.
  6. Autor dieses Themas

    freewareecke

    Kostenloser Webspace von freewareecke

    freewareecke hat kostenlosen Webspace.

    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
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!