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 GETFRAME

    PRINT "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
    RETURN

    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

    sendframe:
    Outbuf(3)= outbuf(0) XOR outbuf(1) XOR outbuf(2)
    send$ = CHR(outbuf(0))+CHR(outbuf(0)) + CHR(outbuf(1)) + CHR(outbuf(2))+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

    Vielen 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#1

    serielle 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 GETFRAME

    rs232 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:CLS

    110 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 teststart

    311, 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
    RETURN

    interrupt-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 "-----------":RETURN

    macht '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(0))+CHR(outbuf(0)) + CHR(outbuf(1)) + CHR(outbuf(2))+CHR(outbuf(2)) + CHR(outbuf(3))
    PRINT #1,send$
    PRINT "TRANSMITTED:";" ";outbuf(0);" ";outbuf(1);" ";outbuf(2);" ";outbuf(3)
    RETURN

    sendet 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!


Anmelden zum Antworten