Strings aus serieller Schnittstelle als Text in Multiedit

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Hallo zusammen,


    ich bin neu hier und versuche gerade mit XProfan 11.2 ein kleines Terminal für ein Steuergerät mit serieller Schnittstelle zu schreiben.
    Habe aber ein kleines Problem und komme nicht weiter.


    Ich schicke über die serielle Schnittstelle einen Befehle und bekomme Zeichen vom Steuergerät zurück geschickt.


    Wie im Beispielprogramm COMM.PRF kann ich die empfangenen Zeichen als Text über den Print Befehl anzeigen lassen.
    Das funktioniert soweit einwandfrei.


    Ich möchte aber die Ausgaben vom Steuergerät in einem Multiedit Fenster ausgeben mit Scrollbalken.


    Das habe ich so versucht:


    Statt print x$ mit settext Multiedit1&,x$.


    Leider wird immer ein Zeichen geschickt und beim nächsten Zeichen der Inhalt von dem Multiedit Fenster gelöscht.
    Wie bekomme ich den ganzen Inhalt, was von der seriellen Schnittstelle geschickt wird, in das Multiedit Fenster?


    Für eure Hilfe wäre ich sehr dankbar.


    VG
    Roland

  • Ja, grundsätzlich, wenn Du per SetText einem Windowsobjekt einen neuen Text zuweist, wird der bisherige Text entfernt. Du müßtest also den bestehenden Text selbst mit dem neu gelesenen Zeichen verbinden:


    SetText MultiEdit1&, @Gettext$(MultiEdit1&)


    Oder Du sammelst die Zeichen gleich beim Lesen in Deiner Variablen X$:


    X$ = X$ + @ReadCom$(id%, 1)


    Gruß Volkmar

  • SetText MultiEdit1&, @Gettext$(MultiEdit1&)

    Am besten für einen Neuen hier gleich richtig schreiben :

    Code
    SetText MultiEdit1&, @Gettext$(MultiEdit1&) + X$

    Oder sammle es, wie Volkmar schrieb. Am besten in der internen Listboxliste.
    Wenn alles übertragen ist, reicht dann ein




    Code
    SetText edit&, ""
    Move("ListToHandle", edit&)

    um alles in das Multi-Edit zu schieben.


    PS:
    Hast du irgendwelche Unterlagen vom Steuergerät oder hast du es
    selber gebaut ?
    Was oft eine Stolperfalle ist :
    Manche Geräte senden kein Chr$(0) , also Stringende-zeichen mit.
    Somit erkennt XProfan und auch das Steuerelement den String nicht.
    Auch einen Zeilenumbruch (Chr$(13) + Chr$(10) ) muß man selber
    einfügen. Das mag für einzelne Zeichen zwar keine Rolle spielen, aber
    man sollte immer im Hinterkopf behalten : MC sendet ASCII Zeichensatz
    und das Profanprogramm arbeitet mit ANSI - Zeichensatz.
    Hab das auch schon mit einem AVR MikroController erlebt. Einen Timer
    mußte ich auch benutzen, damit ich auf den Takt des MC kam und alles
    auslesen konnte.

  • Hallo Volkmar und H.Brill,


    vielen Dank für eure schnelle kompetente Hilfe.
    Das ist genau das, was ich gesucht habe. Eigentlich liegt es nahe und ist sehr einfach umzusetzen.
    Ich hatte erst versucht mit einem Array das hinzubekommen, war aber dann doch auch nicht möglich, da ich ja auch die Zeichen einzeln aus dem Array hätte nehmen müssen ...


    Es ist nicht selbstverständlich, dass man in einem Forum so schnell eine wirklich hilfreiche Antwort bekommt.
    Profan ist ja nun leider auch nicht so weit verbreitet, wie es zudem früher einmal war.



    Und da komme ich kurz zu mir:
    Ich habe vor Jahrzehnten mit Profan einige kleine Programme geschrieben. Es muss so um 1992/93 gewesen sein. Das war noch eine frühe Version von Profan (glaube 1.5?) und Internet gab es nicht in dieser Form.
    Damals gab es keine einfachere Alternative kleine Programme mit grafischer Oberfläche zu erstellen. Und dazu hat die sehr gute Hilfe Datei von Profan extrem dazu beigetragen.
    Irgendwie lässt mich Profan nicht los, weil ich damals so gut Erfahrungen mit gemacht hatte. Deshalb möchte ich es jetzt noch einmal versuchen.


    Mich fasziniert eben die Kompaktheit des Profan Programms und der in Summe einfachen Programmierung, wenn auch an manchen Stellen ein bisschen kompliziert.
    Mein Interessengebiet liegt in der Hardware Entwicklung mit AVRs und die Programmierung der AVRs in Bascom, weshalb ich mir immer schwer tue, die dazu geeigneten Programm für den PC zu schreiben, um mit meiner Hardware zu kommunizieren. Bisher habe ich das immer über ein Terminal gemacht, was ich aber den Anwendern, die meine Hardware auch einsetzen, nicht zumuten möchte.


    Das kleine Progrämmchen, um das es hier geht, soll mit einer CAN-Bus ECU auf der RS232/USB Schnittstelle kommunizieren, um die ECU konfigurieren und auslesen zu können. Weitestgehend über Auswahl- und Edit-Felder. Später vielleicht auch noch, um ein Firmware Update machen zu können, für das ich aktuell ein Fremdprogramm verwende. Die ECU habe ich selbst entwickelt.


    @H.Brill, CR und LF schicke ich bereits mit dem AVR an die RS232, das sollte denke ich dann mal hinzubekommen sein. Ist aber immer wieder ein Punkt, über den man stolpert. Ich kenne das Problem. :)


    Ich melde mich dann wieder, wenn ich das Problem gelöst habe und berichte.


    VG
    Roland

  • Mein Interessengebiet liegt in der Hardware Entwicklung mit AVRs und die Programmierung der AVRs in Bascom

    Na, das ist ja dann auch ideal.
    Besonders, wenn man sein Protokoll für die eigene Hardware selber
    machen kann. Da reicht ein Endekennzeichen wie etwa das "§"oder
    sonst ein selten verwendetes Zeichen, um in Profan das Ende zu ermitteln.
    In deinem Falle brauchst ja nur CR+LF rauszufiltern. Hier würde ich die
    Daten in X$ belassen, und am Ende mit


    MOVE("StrToList", X$, Chr$(13) + Chr$(10))


    in die Listboxliste schreiben. Und danach mit


    MOVE("ListToHandle", &editbox&)


    das Multiedit befüllen.


    Hatte auch mal ein Programm entwickelt, das über RS232 bzw. USB
    4 Relais schaltet. Finde es leider auf Anhieb nicht mehr.


    Da müßte ja auch fast alles hinzubekommen sein.


    PS: Nimm dir besser das FreeProfan, das auf der Version X3 basiert.

  • @H.Brill
    Das mit der Listboxliste ist eine super Idee, werde ich heute Abend umsetzen.


    Bin froh, hier eine Anlaufstelle zu haben, die mir bei hartnäckigen Problemen weiterhelfen kann.


    Irgendwie werde ich aus XProfan, FreeProfan etc. nicht wirklich schlau.
    FreeProfan und Profan X3 in der 32 Bit und 64 Bit Version sind dann die Weiterentwicklungen von Roland in Lazarus?
    Was wäre jetzt ganz einfach gesprochen der Vorteil für mich in FreeProfan? Kompatibilität, mehr Funktionen?
    Die Seiten von Roland werden wohl nicht weiter gepflegt? Es gibt viele tote Links und alte Einträge, die scheinbar nicht aktualisiert werden.


    VG
    Roland

  • Profan wurde irgendwann, ich weiß jetzt nicht, ab welcher Version, zu XProfan. Wegen der vielen Erweiterungen das X für Extended vor dem Profan. Und ab Version 10 geht die Zählung mit X in der Versionsnummer, also X1 = 11, X2 = 12, X3 = 14 und aktuell sind wir bei X4, nach fortlaufender Zählung also Version 14. FreeProfan ist eine kostenfreie Variante in Lazarus, sowohl in 32 und 64 Bit. Dateien werden etwas größer, mitunter auch geringfügig langsamer. Manchmal auch etwas weniger fehlertolerant.
    FreeProfan hätte eben die Vorteile, daß es auf dem aktuellen Stand ist und sowohl in 32 Bit als auch 64 Bit verfügbar und kostenfrei. XProfan X? ist kostenpflichtig, allerdings sind ältere Versionen frei.
    Zu seinen Seiten kann Roland vielleicht mal was sagen, wenn er wieder hier vorbei schaut.


    Gruß Volkmar

  • Da hätte ich an Roto (oder evtl. auch andere) eine Frage :
    Vorgeschichte :
    Ich hatte mal vor Jahren angefangen, mich mit den AVR's
    zu beschäftigen und mir Experimentierboards usw. zugelegt.
    Mein Bruder half mir damals viel und baute mir das eine oder
    andere. Leider sieht er heute wegen eines Augeninfarktes nicht
    mehr gut. Ich selber habe in Elektronik gar keine Ahnung. Wenn
    ich zwei Drähte zusammenlöten kann, ist bei mir Schluß.
    Und ein paar LEDs zum Blinken zu bringen, wird ja auch mit der
    Zeit sehr langweilig.


    Nun hat sich da mit der Zeit einiges angesammelt :
    3 My-AVR Experimentierboards + Programmer , eines mit paral.
    Schnittstelle als Bausatz, zwei Relaisplatinen (12 V) mit 4 Relais, sonst.
    kleine Platinchen (Rs232-TTL) usw., 2 Modems mit Umschalter
    RS232-BT zum Ausschlachten, etwas Hühnerfutter, Temperatursensoren,
    BT-Modul, zweizeiliges LCD Display und auch eine Anzahl von AVRs usw.


    Das ist nur mal grob. Das eine oder andere habe ich bestimmt noch
    übersehen.


    Dies würde ich gerne als Bastlerkiste loswerden. Ich würde mal
    sagen für 50 € + Porto. Damit sind schon alleine die Boards bezahlt. Alles
    andere, wie die Relaisplatinen usw. ist dann alles Zugabe.
    Bei mir liegt es nur rum und wird auch mit der Zeit nicht jünger.


    Vielleicht ist ja jemand an sowas interessiert.

  • @Volkmar
    Das ist genau das, was mir an Info gefehlt hat. Ist Au den Punkt gebracht und hat meine Fragen vollständig beantwortet. Danke!! :top:


    @H.Brill
    Das ist sehr schade, dass Dein Bruder das Hobby nicht mehr so ausüben und Dich unterstützen kann. :-(
    Vor ein paar Jahren hätte ich Dir die Elektronikteile sofort abgekauft. Inzwischen hat sich bei mir soviel ähnliches angesammelt, und es fehlt mir leider die Zeit, mich damit zu beschäftigen. Ich habe so viele Ideen, komme aber leider nicht dazu, diese umzusetzen.
    Es wäre schön, wenn sich jemanden finden lässt, der vielleicht neu in dieses Thema einsteigt und diese AVR Boards etc. dafür verwenden kann.
    Drücke die Daumen.


    VG
    Roland

  • Ja, ich bin da eher der Programmierer und mein Bruder der Hardwarespezialist.
    Gegenseitig konnten wir uns da immer ergänzen.


    Das war schon seit Anfang 1990 so. In welchem Jahr, weiß ich leider nicht so genau.
    Da suchte mein Bruder beim Umweltschutz auch ein Programm für ihre betriebliche
    Hardware. Ein Gerät, das Messungen mit Datum, Uhrzeit, Geräte-ID usw. in eine Datei
    schrieb. Da brauchte ich auch Tage, bis ich die Strings auseinander gewuselt hatte. Und
    das noch mit GW-Basic bzw. Quickbasic. Hätte es da schon die regulären Ausdrücke gegeben,
    wäre es ein Kinderspiel gewesen. ;-)

  • Habe Deinen Vorschlag umgesetzt.
    Bin jetzt noch bei XProfan 11 geblieben. Werde das später in eine höhere Version importieren.


    In XProfan 11.2 ist der MOVE Befehl noch ein bisschen anders. Aber es funktioniert jetzt alles soweit einwandfrei.
    Die zuvor zusammengefügte Zeichenkette habe ich aus der Prozedur GetComInput direkt übergeben lassen.


    Code
    @MOVEStrToList(GetComInput(c%),CHR$(13)+CHr$(10))
    @MoveListToHandle(Multiedit1&)


    Btw., gibt es eine X3 chm Hilfedatei? Konnte nur die für X2 und X4 finden.


    Danke nochmal!


    VG
    Roland