Moin,
ich habe eine 8-Port-Relaiskarte gekauft, die per COM-Schnittstelle programmiert wird.
Leider ist nur ein BASIC-Beispiel dabei, welches die Programmierung zeigt.
Kann mir jemand diesen Code in Delphi umsetzen? Ich arbeite mit Delphi 7.
Wäre eine super Sache, wenn mir da einer bei helfen könnte..
Code wie folgt:
Hinweis: Das Beispiel soll nur eine grobe Anleitung darstellen und zeigt nicht die Verwendung aller Kommandos.
CLS : CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN "com2: 19200,n,8,1,bin,cs,ds" FOR RANDOM AS # 1
---INTERRUPT SE RIAL INTERFACE ON---
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAME
---INITIALIZE RELAIS BOARD---
PRINT "INITIALIZE BOARD"
outbuf(O) = 1: outbuf(1) = 1: outbuf(2) = 0: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS
---SWITCH RELAIS---
teststart:
r = 1
rt:
outbuf(O) = 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(lNPUT$(l, # 1))
bz = bz + 1
IF bz = 4 THEN GOTO checkframe
RETURN
---CHECK VALIDllY---
checkframe:
ERROR$ = "ERROR"
IF inbuf(O) 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
So, hoffe ich habe alles richtig eingescannt und korrigiert..
RW
ich habe eine 8-Port-Relaiskarte gekauft, die per COM-Schnittstelle programmiert wird.
Leider ist nur ein BASIC-Beispiel dabei, welches die Programmierung zeigt.
Kann mir jemand diesen Code in Delphi umsetzen? Ich arbeite mit Delphi 7.
Wäre eine super Sache, wenn mir da einer bei helfen könnte..
Code wie folgt:
Hinweis: Das Beispiel soll nur eine grobe Anleitung darstellen und zeigt nicht die Verwendung aller Kommandos.
CLS : CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN "com2: 19200,n,8,1,bin,cs,ds" FOR RANDOM AS # 1
---INTERRUPT SE RIAL INTERFACE ON---
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAME
---INITIALIZE RELAIS BOARD---
PRINT "INITIALIZE BOARD"
outbuf(O) = 1: outbuf(1) = 1: outbuf(2) = 0: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS
---SWITCH RELAIS---
teststart:
r = 1
rt:
outbuf(O) = 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(lNPUT$(l, # 1))
bz = bz + 1
IF bz = 4 THEN GOTO checkframe
RETURN
---CHECK VALIDllY---
checkframe:
ERROR$ = "ERROR"
IF inbuf(O) 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
So, hoffe ich habe alles richtig eingescannt und korrigiert..
RW
Comment