Quellcode übersetzten
-
Hallo Leute, wer kann mir den folgenden Quellcode (vermutlich in BASIC(?)) in C Syntax übersetzten, bzw. grundlegend erklähren was dort vor sich geht und mir Unterstützung zum Übersetzen geben?
(Es handelt sich um ein Programm zum Funktionstest(?) einer 8-fach-seriellen-Relaiskarte von Conrad)
CLS: CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN"com2:19200,n,8,1,bin,cs,ds"FOR RANDOM AS#1'---Interuprt serial interface---'
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAMEPRINT "INITIALIZE BOARD"
outbuf(0)=1:outbif(1)=1:outbif(2)=0:GUSUB sendframe
FOR delay = 1 TO 1000000:NEXT:CLS'----Switch relais----'
teststart:
=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----'
GETFRAME:
inbuf(bz) = ASC(INPUT$(1,#1))
bz = bz + 1
if bz = 4 THEN GOTO checkframe
RETURNCHECKFRAME:
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 "-----------":RETURNsendframe:
Outbuf(3)= outbuf(0) XOR outbuf(1) XOR outbuf(2)
send$ = CHR(outbuf(1)) + CHR(outbuf(3))
PRINT #1,send$
PRINT "TRANSMITTED:";" ";outbuf(0);" ";outbuf(1);" ";outbuf(2);" ";outbuf(3)
RETURN'----ERROR HANDLER---'
BADCOM:
PRINT: "---DATA ERROR---"
RESUME
RETURNende:
ENDVielen Dank für eure Hilfe.
-
Gast (C-Anfänger) schrieb:
CLS: CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN"com2:19200,n,8,1,bin,cs,ds"FOR RANDOM AS#1serielle schnittstelle öffnen. 19200bps, no parity, 8 datenbits, 1 stopbit,
bin?? --> binärmodus?
cs? ds? --> flusskontrolle?Gast (C-Anfänger) schrieb:
'---Interuprt serial interface---'
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAMErs232 events automatisch verarbeiten (interruptgesteuert)
Gast (C-Anfänger) schrieb:
PRINT "INITIALIZE BOARD"
outbuf(0)=1:outbif(1)=1:outbif(2)=0:GUSUB sendframe
FOR delay = 1 TO 1000000:NEXT:CLS110 hinschicken (in frame verpackt) zur initialisierung
Gast (C-Anfänger) schrieb:
'----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 teststart311, 312, 314, 318, usw... als frame verpackt und mit pause dazwichen hinschicken. damit sollen wohl irgendwelche ausgänge geschaltet werden (wie ein lauflicht, immer einer ein, alle anderen aus)
Gast (C-Anfänger) schrieb:
'---serial communication----'
GETFRAME:
inbuf(bz) = ASC(INPUT$(1,#1))
bz = bz + 1
if bz = 4 THEN GOTO checkframe
RETURNinterrupt-routine, liest automatisch immer ein zeichen ein. sind 4 zeichen da, dann framecheck machen....
Gast (C-Anfänger) schrieb:
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 "-----------":RETURNmacht 'nen frame check. der frame ist ok wenn die ersten 3 zeichen XOR-verknüpft das vierte zeichen ergeben...
Gast (C-Anfänger) schrieb:
sendframe:
Outbuf(3)= outbuf(0) XOR outbuf(1) XOR outbuf(2)
send$ = CHR(outbuf(1)) + CHR(outbuf(3))
PRINT #1,send$
PRINT "TRANSMITTED:";" ";outbuf(0);" ";outbuf(1);" ";outbuf(2);" ";outbuf(3)
RETURNsendet einen frame bestehend aus 3 zeichen nutzdaten + einem framecheck byte.
der framecheck wert ist wieder dieses 3-fache XOR, wie oben...
[/quote]
-
also bis hier hin schon mal vielen dank, wenn du mir jetz noch erklärst was es mit dem frame auf sich hat und wie ich das in C mache, glaube ich das ich das hin bekommen könnte.
MfG
Nico
-
Gast (C-Anfänger) schrieb:
wenn du mir jetz noch erklärst was es mit dem frame auf sich hat
guckst du: http://en.wikipedia.org/wiki/Data_frame
Gast (C-Anfänger) schrieb:
und wie ich das in C mache, glaube ich das ich das hin bekommen könnte.
genau so, wie in dem basic programm.
nur dass das XOR in C ein "^" ist (ohne die gänsefüsschen)...
-
vielen dank
-
soweit ich das auf die schnelle gesehen hab, wird da ein relais-interface über den lpt angesprochen(?)
ich habe dazu ein c-programm mit dem ich mein-relais interface einfach ansprechen kann...wenn du willst kann ich den sourcecode reinstellen (aber vielleicht bin ich auch total falsch hier^^)gruss
jonas
-
Hab das slebe Problem, benötige den Code aber in C#, vielen Dank erstmal an ten für die Erläuterungen...
@jjoe64, es wäre toll wenn du Deinen Code noch bereit stellen könntest.
Vorab vielen Dank!