Basic zu C++



  • Hallo,

    ich habe da ein Messgerät (MDP) das an den Computer an den COM Port angeschlossen wird. Von diesem Messgerät geht es wiedrum zu PT100 Widerständen um Temperaturen zu messen.
    Das Problem das ich habe ist das es keinerlei Benutzerhandbuch zu diesem Gerät gibt und niemand mehr etwas über dieses Messgerät weiss. Entweder wurde es speziell dafür gebaut oder es war nur eine sehr geringe Serienproduktion. Das einzige was es gibt ist ein uralter Basic Code, der auf einem entsprechend altem Rechner läuft, jedoch nicht auf einem "modernen" Rechner. Deswegen soll ich jetzt ein neues Programm schreiben, was ich in C++ machen will, damit man die Messungen auch von einem neuen Rechner machen kann.

    Die Initalisierung von dem Gerät sieht in Basic folgender Maßen aus:

    6190 '--------------------------- init mdp ---------------------------------
    6200 '
    6210 '
    6220 C=CHR=CHR(27)
    6230 :
    6240 OPEN "COM2:9600,N,8,2" AS #1: ' 9600 baud
    6250 PRINT#1,C;"@";: FOR I=1 TO 15000:NEXT: ' mdp clear 6260 PRINT#1,C;"rs": FOR I=1 TO 15000: NEXT: ' mdp reset
    6270 PRINT#1,C;"sem2";C;"se m2";C;"xoc1": GOSUB 6490: ' mdp xon/xoff
    6280 PRINT#1,C$;"ot00 a1" : GOSUB 6490: ' mdp tech.format
    6290 RETURN

    Ich habe es schon geschafft mit Hilfe von der CreateFile() Funktion eine Vebrindung herzustellen. Mit der Funktion TransmitCommChar() konnte ich einpaar Zeichen senden die das Gerät auch bekommen hat. An der vorderseite sind LEDs die den Status anzeigen (Ready, I/O Busy, Want To Talk, System Error, Syntax Error).
    Also einzelne Zeichen konnte ich senden, jedoch ab dem PRINT#1,C;"sem2";C;"se m2";C;"xoc1" hängt es dann. Wenn ich versucht habe etwas mit WriteFile an das Gerät zu senden hat es nicht reagiert. Das liegt aber eher daran das ich nicht so recht weiß was ich alles dabei beachten muss.
    Wie gesagt, weil es keinerlei Aufzeichnnung mehr gibt kann ich auch nicht sagen was z.B. dieses "se m2" bedeutet.

    Kann mir jemand weiterhelfen?

    Mit freundlichen Grüßen

    Cheetah



  • thread verschonen in rund um die programmierung forum



  • PRINT #1 ,C;"sem2";C;"se m2";C;"xoc1": GOSUB 6490:

    Übersetzung:

    Schreibe ASCII Zeichenfolge: 27(Escape),"s","e"," ","m","2",27(Escape),"x","o","c","1"
    weiter mit Programmzeile 6490.

    Vielleicht hast du nicht daran gedacht diesen Code hier zu übersetzen:
    "FOR I=1 TO 15000: NEXT:"

    Der wartet eine bestimmte Zeit lang vor dem nächsten senden, wie lang das ist, kann ich dir nicht sagen. Aber das Gerät scheint es zu erfordern


Anmelden zum Antworten