Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Seriellen Port ansteuern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mannyk



Anmeldungsdatum: 31.01.2006
Beiträge: 2

BeitragVerfasst am: 31.01.2006, 02:54    Titel: Seriellen Port ansteuern Antworten mit Zitat

Hi!
Erstmal ein Hallo an Alle lächeln

Ich habe eine Relaiskarte (von Conrad), die ich gerne per QBasic steuern möchte. Ein Beispiel-Script habe ich der Dokumentation entnommen.
Da ich mich mit qbasic noch nicht wirklich gut auskenne, wollte ich fragen, ob mir jemand helfen kann das Programm so zu verändern, damit ich zb. das 1. Relais schalten kann. Bis jetzt steht nämlich immer nur "Transmitted:" und einige veränderliche Zahlen dort.

So kann man die Relais anscheinend ansprechen:


Hier noch der Code:
Code:

CLS : CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN "com2:19200,n,8,1,bin,cs,ds" FOR RANDOM AS #1

'--- INTERRUPT SERIAL INTERFACE ON ---
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAME

'--- INITIALIZE RELAIS BOARD ---
PRINT "INITIALIZE BOARD"
outbuf(0) = 1: outbuf(1) = 1: outbuf(2) = 0: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS

'--- SWITCH RELAIS ---
teststart:
r = 1
rt:
outbuf(0) = 3: outbuf(1) = 1: outbuf(2) = r: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS
r = r * 2: IF r < 256 THEN GOTO rt
GOTO teststart

'|||||||||||| SERIAL COMMUNICATION |||||||||||
'-----------------------------
'--- READ 4 BYTE DATAFRAME ---
'-----------------------------
GETFRAME:
inbuf(bz) = ASC(INPUT$(1, #1))
bz = bz + 1
IF bz = 4 THEN GOTO checkframe
RETURN
'--- CHECK VALIDITY ---
checkframe:
ERROR$ = "ERROR"
IF inbuf(0) XOR inbuf(1) XOR inbuf(2) = inbuf(3) THEN ERROR$ = "OK"
bz = 0: PRINT "RECEIVED:"; " "; inbuf(0); " "; inbuf(1); " "; inbuf(2); " "; inbuf(3); " "; ERROR$
PRINT "-------------------------------------------": RETURN
'-----------------------------

'-----------------------------
'--- SEND 4 BYTE DATAFRAME ---
'-----------------------------
sendframe:
outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)
send$ = CHR$(outbuf(0)) + CHR$(outbuf(1)) + CHR$(outbuf(2)) + CHR$(outbuf(3))
PRINT #1, send$
PRINT "TRANSMITTED:"; " "; outbuf(0); " "; outbuf(1); " "; outbuf(2); " "; outbuf(3)
RETURN

'***************** ERROR HANDLER ***************
BADCOM:
PRINT "--- DATA ERROR ---"
RESUME
RETURN

ende:
END


Danke für etwaige Hilfe!
mfg,
mannyk
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz