'-- relaiser.bas ----------------------------------------------- >>fst'01<< - ' - einfaches Steuerprogramm fuer die serielle Relaisplatine ' von Conrad (Best-Nr 96 77 20) in QBasic ' - die von der Platine gesendeten Daten bleiben unberuecksichtigt '-- V 20010904 ------------------------------ http://home.arcor.de/steini63 - 'serielle Schnittstelle fuer Ausgabe oeffnen (evtl COM2 in COM1 aendern): OPEN "COM2:19200,N,8,1,BIN,CS,DS" FOR OUTPUT AS #1 'Initialisierung: Kommando% = 1 'Kommando-Byte auf 1 = SETUP(Initialisierung) Adresse% = 1 'Platinenadress-Byte auf 1 = Platine 1 Daten% = 0 'Daten-Byte auf 0 = noch wird nichts geschaltet GOSUB Senden 'das Ganze absenden SLEEP 1 'sicherheitshalber 1 Sekunde warten 'kuenftig wollen wir nur noch Relais schalten (3 = Set Port): Kommando% = 3 'Relais schalten (mit dem Datenwert kann experimentiert werden): Daten% = 5 'Bit 0(Wert=1) und Bit 2(Wert=4) setzen; Relais 1,3 ziehen an GOSUB Senden 'die neuen Daten senden SLEEP 2 '2 Sekunden warten 'Relais nochmal schalten: Daten% = 0 'alle Bits auf 0; alle Relais oeffnen GOSUB Senden 'die neuen Daten senden CLOSE #1 'serielle Schnittstelle schliessen END 'Programm beenden '-- Unterprogramm ---------------------------------------------------------- Senden: 'Pruefsumme bilden (siehe Anleitung): PruefSumme% = Kommando% XOR Adresse% XOR Daten% 'Aus den vier Zahlen vier Zeichen bilden (CHR$) und zu einem 'String (Send$) zusammenfuegen ( + ); das ist der "Rahmen"(Frame): Send$ = CHR$(Kommando%) + CHR$(Adresse%) + CHR$(Daten%) + CHR$(PruefSumme%) 'zu sendende Bytes anzeigen (kann geloescht werden): PRINT "Sende:", Kommando%, Adresse%, Daten%, PruefSumme% 'den Rahmen auf der seriellen Schnittstelle senden: PRINT #1, Send$; 'und zurueckspringen: RETURN '-- Unterprogramm ENDE -------------------------------------------------------