Jump to content

[Delphi] callback rs232 Bricklet


Recommended Posts

Hallo zusammen,

ich schau seit langer Zeit regelmäßig auf die TF-Seite.

Gefällt mir ziemlich gut was die Treiben. Ich suche schon geraume Zeit ein

möglichst einfachem System mit dem ich verschiedene Dinge im Betrieb machen kann.

Ein Thema ist der Aufbau von temporären Versuchsaufbauten für mechanische Tests.

Ein anderer ist der Ersatz von Uralthardware an Steuerungshardware die es nicht mehr gibt, ohne den ganzen Schaltschrank umbauen zu müssen.

Programmierbar sollte das ganze in mehreren Hochsprachen speziell Lazarus sein.

Der Hardwarebastelaufwand sollte auch möglichst klein sein. Was mich betrieblich bisher abgehalten hat, ist das Fehlen von z.B. Hutschienen- Alugehäusen und so. Die durchsichtigen Gehäuse sind für die Spielwiese sicher hübsch, aber für einen Versuchsaufbau kann ich bei uns nicht damit landen.

Da ich jetzt mit TF anfange, hab ich mich auch gleich registriert und daß das

in deutsch geht (also das Forum) finde ich dann auch noch super.

 

Und jetzt zu meiner ersten Frage: Wann kommt der callback für empfangene Daten vom RS232 Bricklet? Wenn ich z.B. 30 Byte empfange, bekomme ich den callback nach einem Empfangstimeout oder kann es passieren, daß ich da mehrere callbacks bekomme und das zusammenbauen muß?

 

Ich möchte mehrere RS232 Schnittstellen mitschreiben. Auf meinem PC sollen die Asciidaten dann passend zum Empfangszeitpunkt dargestellt werden.

Dazu muß ich aber einigermaßen zeitnah an die einzelne Bytes kommen damit die Empfangsreihenfolge auch stimmt. Weiß jemand wann der callback aufgerufen wird?

 

(geschickt wäre da die Möglichkeit, das einstellbar zu haben wie z.B. Empfang mit fester Länge, mit Endekennung wie Cr und auch mit vorgebbarem Empfangstimeout)

 

Grüße NoCee

Link zu diesem Kommentar
Share on other sites

Und jetzt zu meiner ersten Frage: Wann kommt der callback für empfangene Daten vom RS232 Bricklet? Wenn ich z.B. 30 Byte empfange, bekomme ich den callback nach einem Empfangstimeout oder kann es passieren, daß ich da mehrere callbacks bekomme und das zusammenbauen muß?

 

Du kannst mehrere Callbacks bekommen und musst die Daten wieder zusammensetzen. RS232 hat in dem Sinne ja erstmal kein definiertes Packetformat. Das Bricklet weiß also nicht wie deine Daten zu interpretieren sind.

 

Ich möchte mehrere RS232 Schnittstellen mitschreiben. Auf meinem PC sollen die Asciidaten dann passend zum Empfangszeitpunkt dargestellt werden.

Dazu muß ich aber einigermaßen zeitnah an die einzelne Bytes kommen damit die Empfangsreihenfolge auch stimmt. Weiß jemand wann der callback aufgerufen wird?

 

Der Callback wird sofort aufgerufen, wenn Daten empfangen wurde. Das Bricklet fügt da keine künstliche Verzögerung ein.

 

(geschickt wäre da die Möglichkeit, das einstellbar zu haben wie z.B. Empfang mit fester Länge, mit Endekennung wie Cr und auch mit vorgebbarem Empfangstimeout)

 

Das Bricklet kann das nicht. Dafür wäre ein Zwischenspeicher auf dem Bricklet notwendig, der so nicht vorhanden ist. Das Bricklet sendet dir einfach alle empfangenen Daten so schnell wie mögliche. Jegliche Interpretation der Daten ist dann deine Aufgabe. Dadurch hast du die Flexibilität die Daten in jeglicher Weise zu interpretieren, ohne eine feste Vorgabe durch das Bricklet gebunden zu sein.

Link zu diesem Kommentar
Share on other sites

Aha, danke für die Antwort.

 

Da fällt mir aber sofort die Folgefrage dazu ein:

Wenn ich dann z.B. 30Byte empfange, relativ niedrige Baudrate, der Stapel hat nichts anderes zu tun, bekomme ich dann weil der Stapel mir das ja so schnell wie möglich schickt, 30 callbacks?

Wenn ich das jetzt mit z.B. 3x RS232 mache, gleiche Daten wie oben, bekäme ich dann ja 90 callbacks wenn ich das richtig verstanden habe.

Wenn die Systemlast höher wäre, bekäme ich dann vermutlich weniger callbacks aber mit mehreren Bytes.

 

Wäre dann für meinen aktuellen Anwendungsfall dann genau das richtige weil ich die zeitliche Reihenfolge (alle Bytes als fifo) einer vorhandenen Kommunikation mitloggen möchte.

 

Gruß

NoCee

 

Link zu diesem Kommentar
Share on other sites

Das hat nichts direkt mit der Last zu tun. Okay, einmal in die technischen Details.

 

Auf dem Bricklet ist ein IC der RS232 spricht und inter einen 60 Byte Lesebuffer für über RS232 eingehende Daten hat. Das Bricklet ließt diesen Buffer jede Millisekunden aus und schickt dir die Daten per Callback.

 

Wenn deine 30 Byte vom RS232 IC so empfangen werden, dass er gerade die ersten 10 Byte in seiem Lesebuffer gespeichert hat, wenn das Bricklet ihn abfragt, dann bekommst du einen Callback mit diesen 10 Byte. Die restlichen 20 Byte bekommst du dann im nächsten Callback.

Link zu diesem Kommentar
Share on other sites

Klar ist da genug dabei. Ich werd aber im Geschäft leider nicht fürs Basteln bezahlt. Wenn wir da Produktprototypen auf mechanische Haltbarkeit testen,ist die Mechanik, Steuerungstechnik inklusive Software für Steuerung und Auswertung ein Produkt für die Tonne. Nach ein paar Monaten können wir das schon wieder ausschlachten. Tests fertig, nächste Konstruktion. Deshalb darf das nicht viel Kosten. Und da kommt uns das Konzept von TF schon sehr entgegen.

Was ähnliches gibt's von einigen anderen Herstellern schon länger, aber ich hab da einfach keine Zeit z.B. ein Linux selber zu bauen wo die Kerneltreiber drin sind usw. Wir brauchen da was einigermaßen Fertiges insbesondere auf der Softwareseite. Da kann jeder Kollege die Bindigs nutzen mit denen er schnell zum Ziel kommt. Für mich ist da Lazarus das wichtigste (deshalb auch "NoCee" :)) Kollegen Scripten lieber, nur einer will da C.

Und Gehäuse wollen wir da auch nicht groß bearbeiten. Muß ja nicht lange halten und schön aussehen. Muß flexibel sein, funktionieren, den Sicherheitsnormen einigermaßen entsprechen und EMV-mäßig brauchbar sein und darf nicht viel Kosten (Arbeitszeit). Wir sind da eine Abteilung die da halt nur kostet.

 

Gruß

NoCee

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...