-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Rs232 mit Delphi

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121

    Rs232 mit Delphi

    Anzeige

    Hallo, ich arbeite gerade an einer Steuerungsoftware für meinen selbst gebauten Plotter. Ich hab vor das mit Delphi zu machen (da ich das schon ein bisschen kenne und in der Schule eh Pascal lernen muss/darf). Die Kommunikation läuft über den Com Port und ich benutze diese vorgefertigten Funktionen hier um diesen anzusteuern:

    http://www.swissdelphicenter.ch/de/showcode.php?id=841

    Ich habe in einem Bascom Programm schon ein paar Befehle einprogrammiert, auf die er reagieren soll wenn diese über RS232 reinkommen. Wenn ich nun diese Befehle übers Bascom Terminal schicke funktioniert dies auch Tadellos.
    Mein improvisiertes Terminal mit Delphi funktioniert auch soweit, dass der MC die Befehle empfängt und auch scheinbar korrekt auf dem LCD ausgiebt.
    Das Merkwürdige ist nur: Er reagiert nicht auf die Befehle!
    Selbst wenn ich den MC so programmiere, dass er den ersten Befehl der ankommt auf eine Variable speichert und bei allen weiteren Eingaben die den selben Inhalt haben (wie diese Variable) eine Aktion ausführt, passiert nichts! Das ist irgendwie ziemlich merkwürdig...

    Ich dachte erst, dass es vielleicht daran liegt, das Delphi die Zeichen einzeln nacheinander sendet und der MC dann jedes einzelne Zeichen als eine Eingabe ansieht, doch dann müsste die Ausgabe (er sendet immer die Eingegangenen Befehle zurück) komplett anders sein.

    Könnte es vielleicht hier dran liegen:
    Code:
         An den übergebenen String einen Zeilenumbruch (#13 + #10) hängen
       }
      s := s + #13 + #10;
    Also an dem Zeilenumbruch, der an den String gehängt wird, welcher dann auf dem Comport ausgegeben wird? Ich weiß zwar nicht wirklich was die "+ #13 + #10" machen, aber ohne sendet er garnichts

    Achso zur Information, ich benutze (da ich am Laptop keine Comports habe) den USB-RS232 Adapter von Reichelt. Bisher hatte ich aber damit keine Probleme und mit Bascom und Megaload funktioniert er sehr zuverlässig.

    Okay, schonmal vielen Dank fürs lesen, ich hoffe hier gibt es wen der auch RS232 mit Delphi macht.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    43
    Beiträge
    1.517
    Also das es am 13+10 liegt kann ich mir nicht vorstellen den das interresiert nur den empänger und nicht den comport. die beiden zeichen markieren nur das ende einer zeile.

    #13 = wagen rücklauf (schreibmachine)
    #10 = zeilen vorschub

    Die RS ist sehr zeit empfindlich kann mit nicht vorstellen das es ohne Thread geht beim lesen. Hast du mal an der anderen seite ein Terminal gehängt ? passt die baudrate ?
    was steht in BytesWritten ?
    nach dem schreiben ?

    Leider habe ich in delphi bis jetzt immer nur gelesen das schreiben ist zwar programmiert aber ich habe es noch nicht geteste da ich auf c++ um gestiegen bin. Welches Delphi benutzt du ?

    Mfg
    Home
    P: Meine Tochter (06.11.07) und Link
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121
    achso, ja am andern Ende hängt ein Mega32 Microcontroller. Die Baudrate habe ich auf beiden Seiten auf 9600 gestellt. Die Eingaben scheinen ja auch richtig anzukommen (ich geb sie auf einem LCD was an den mc angeschlossen ist aus und der mc sendet die Eingabe nochmal zurück als bestätigung). Aber irgendwie scheint der Microcontroller in zwei von mir identisch eingetippten Eingaben doch noch einen Unterschied zu sehen, also scheint da ja irgendwas nicht zu funktionieren.
    Dann werd ich wohl mal ausprobieren auf die andere Seite auch einen Pc zu hängen und mal gucken was da "wirklich" raus kommt. Sehr merkwürdig...
    Ich benutze Delphi 2005 auf win xp

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Hast du den Anhang: "+ #13 + #10;" jetzt mal weggelassen?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121
    jaja, hab ich mal weg gelassen. Dann kommt aber scheinbar gar nichts an.
    Wenn ich die Zeit finde werde ich heute mal einen Computer ans andere Ende hängen und gucken was da wirklich raus kommt.
    Oder hat vielleicht schonmal jemand in Delphi ein Programm für RS232 geschrieben, was er mir zum test zur verfügung stellen könnte?
    Das war bloß die einfachste Variante die ich finden konnte.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Ja habe ich, sendet aber bestimmte Zeichen, ist also in dem Sinne kein Terminal. Es ist im Zuge meines ToS-Projektes entstanden:

    http://www.roboternetz.de/phpBB2/zei...rag.php?t=8248

    Könntest es zumindest zum senden von "Datenmüll" verwenden.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    43
    Beiträge
    1.517
    Ich habe da noch eine Idee was es sein könnte.

    ich weiß ja nicht was in deinem prg das Ende des Befehls makiert wenn
    aber zu beispiel das chr(10) ist dann würde es mir erklären warum du auf
    dem lcd was siehst aber der befehl nicht erkannt wird.

    Das LCD stell sicher kein sonder zeichen da dann sieht man nur den text aber im string für den befehl steht dann befehl+chr(13) und das ist nicht gleich befehl.

    Kannst du mir folgen ?

    Gruß
    Home
    P: Meine Tochter (06.11.07) und Link
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121
    also das in dem gesendeten String sozusagen noch irgendwas hinter steht, womit der MC nichts anfangen kann?
    Das könnte sein, ich habe einfach einen string mit 10 Zeichen als Variable genommen. Würde zwar trotzdem nicht erklären warum das mit delphi gesendet anders ist als das vom Bascom terminal, aber ich werds mal ausprobieren einfach nur einen Buchstaben zu benutzen.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121
    Also ich hab jetzt was noch merkwürdigeres festgestellt. Wenn ich vorher das Bascom Terminal zum benutzen des plotters nehme, es schließe und dann mein Programm starte, funktioniert der erste Befehl den ich Eingebe anständig, alles weiter nicht.
    Wenn ich die Eingabe am MC auf eine Variable mit nur einem Zeichen einlese funktioniert anscheind nur die erste Eingabe, bei allen weiteren Eingaben zeigt er nichts an und sendet auch nichts zurück.
    Da stimmt wohl wirklich was nicht mit dem Delphi Algorithmus. Ich glaub der baut einfach hint der Eingabe irgendwie ein Leerzeichen bzw. diesen Absatz ein und schon funktionierts nichtmehr.
    Ich denk ich schau mich besser mal nach einem anderen Code für den COM-Port um lol, einen anderen Computer dran zu hängen um zu gucken was wirklich raus kommt hab ich leider nicht mehr geschafft.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    29
    Beiträge
    121
    argh!! Ich bastel hier 2 Tage lang rum und wundere mich warum das nicht funktioniert und dabei lag es doch an diesem Zeilen umbruch :

    Code:
         An den übergebenen String einen Zeilenumbruch (#13 + #10) hängen
       }
      s := s  + #13 + #10;
      WriteFile(ComFile, s[1], Length(s), BytesWritten, nil);
      s := '';
    Wenn man die 13 und die 10 weg nimmt gehts gar nicht mehr, mit denen gehts nur einmal und wenn man die 10 weg macht und die 13 da lässt funktionierts
    Juhu, jetzt kann ich endlich weiter machen und malwieder meine eigene Frage beantworten lol.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •