NoCee Geschrieben October 18, 2018 at 14:55 Geschrieben October 18, 2018 at 14:55 Hallo zusammen Ich lese mich gerade durch die API vom RS485 Bricklet. Im Beispiel finde ich rs485.Write(['t', 'e', 's', 't']); In der Doku der API finde ich rs485.Write([... aber nicht. Da gibt es nur ein RS485.WriteLowLevel... Fehlt das hier? Zweite Frage, warum schreibt man hier rs485.Write(['t', 'e', 's', 't']); und nicht rs485.Write(['test']); Danke schon mal im Vorraus für eine Antwort Gruß NoCee Zitieren
borg Geschrieben October 18, 2018 at 15:36 Geschrieben October 18, 2018 at 15:36 Oh, da ist die Dokumentation in der Tat noch unfertig. Wird gefixt. Bei den neuen Bricklets gibt es "Streaming-Funktionen", diese sind nicht auf 64 Byte Größe beschränkt wie die normalen Funktionen, sondern können beliebige Datenmengen übertragen. Wenn du "Write" aufrufst mit einem char-Array der Größe 128 Byte (z.B.) ruft das intern 2x WriteLowLevel mit je 64 Byte auf. Die LowLevel-Funktionen kannst du ignorieren, die sind eigentlich nur für die interne Nutzung. Die Write/Read-Methoden verwenden ein char-Array und kein String, daher musst du ['t', 'e', 's', 't'] statt 'test' schreiben. Die Daten könnten ja auch Binärdaten sein mit Nullen dazwischen etc, dafür sind Strings nicht gut geeignet. Du kannst aber in deinem Programm mit Strings arbeiten und den String einfach in ein Array umwandeln bevor du die Write-Funktion aufrufst. Zitieren
NoCee Geschrieben October 19, 2018 at 08:03 Autor Geschrieben October 19, 2018 at 08:03 Ok, kapiert. Danke für die Info. Noch ne Frage zur internen Kommunikation. Ich hab mal Daten einer relativ langsamen RS422 Busleitung mitloggen wollen. Auf einem Win-PC mit 2 echten Coms. Da hat mich Windows aber so im Stich gelassen, daß ich die Daten nicht in der richtigen Reihenfolge bekommen habe. Weil das Ganze halt nicht echtzeitfähig ist. Noch nicht mal mit 1200bd. Passiert mir das mit dem Red und 2 seriellen Schnittstellen auch, weil da ja auch ein nicht echtzeitfähiges Linux drauf läuft? Der Gedanke war einen Telegrammwandler für eine nicht mehr erhältliche Hardware zu bauen. Mit einem Mikrokontroller wäre das kein Thema, kenn ich mich aber Null aus und würde das viel lieber mit TF und Lazarus realisieren. Hab ich da eine Chance oder macht da der Red auch nicht mit? Gruß NoCee Zitieren
borg Geschrieben October 22, 2018 at 15:57 Geschrieben October 22, 2018 at 15:57 Deine Frage ist ob die Nachrichten von zwei RS485 Bricklets immer in der gleichen Reihenfolge beim PC/RED Brick ankommen wie sie beim Bricklet eintreffen, richtig? Ich befürchte das muss nicht zwangsweise so sein. Die beiden Bricklets untereinander sind ja in dem Sinne nicht synchronisiert zueinander. Egal ob du einen RED Brick verwendest oder den Stapel am PC anschließt. Zitieren
NoCee Geschrieben October 22, 2018 at 20:22 Autor Geschrieben October 22, 2018 at 20:22 Das ist ein Master Slave Netzwerk, und das ziemlich lahm. 1200bd Aber Windows bringt es fertig, mir die Hälfte der Antwort vom Slave vor der ganzen Masteranfrage zu liefern. Ich habe ein bischen gehofft, daß der Red bei so etwas so unterlastet und so freundlich ist, mir die Reihenfolge einzuhalten wie es eingetroffen ist. Ich kenn mich mit Linux noch nicht so dolle aus. Vielleicht ist ja euer Softwarepaket da irgendwie echtzeitfähiger. Aber so wie es aussieht, muß ich da doch einen Arduino mit 3 seriellen Schnittstellen dazwischen klemmen. Aber das wäre C, nicht so mein Ding. Da wäre der Red schon super, der versteht mein Pascal. Trotzdem Danke für die Antwort Gruß NoCee Zitieren
borg Geschrieben October 23, 2018 at 08:25 Geschrieben October 23, 2018 at 08:25 Bei 1200 baud kannst du Problemlos die Daten Buchstabe für Buchstabe bekommen (auch per USB). Da bin ich zuversichtlich das du die Master-Anfragen vor den Slave-Antworten siehst. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.