Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi XE2: Serial-Komponente gesucht (https://www.delphipraxis.net/165908-xe2-serial-komponente-gesucht.html)

Rudirabbit 2. Jan 2013 18:11

AW: XE2: Serial-Komponente gesucht
 
Dank der Tips von hier habe ich die AsyncPro installiert.

Läuft auch soweit.
Nur habe ich auch ein Problem damit.
Ziel ist es damit längere Byte Arrays zu einem AVR die schicken der dann LED Stripes ansteuert.
Da ich den AVR Code auch selbst "verbrochen" habe, bin ich mit dem Protokoll flexibel. (Ein miniDMX -> tpm2 reduziert zu dem was ich brauche)

Also 230 LED brauchen 690 Byte + 5 Byte Header.
Wenn ich dies via ApdComPort1.OutPut in schneller Folge zum AVR schicke, bekomme ich von AsyncPro eine Message das der Output Puffer zu klein sei.

Ein Erhöhen des AsyncPro Out Puffers bringt keine Besserung.

Gibt es eine andere Methode als OutPut ?
Es gibt z.b putblock, komme aber nicht wirklich dahinter wie dies funktionieren soll.

zeras 2. Jan 2013 18:14

AW: XE2: Serial-Komponente gesucht
 
Wie schnell sendest du denn? Baudrate? Vielleicht kommen die Daten schneller in den Puffer, als diese dann reell übertragen werden können. So wächst der Puffer immer weiter an.
Wie sendest du denn, jede Sekunde oder nur bei Änderung?

Rudirabbit 2. Jan 2013 18:32

AW: XE2: Serial-Komponente gesucht
 
Die Baudrate 256000 Baud.

Mein Testprogramm besteht als 3 Slidern (Für die 3 Farben )

Wenn ich das event so einhänge, das bei jeder Änderung der Slider ein Frame gesendet wird kommt es zu diesem Problem.
Wenn ich nur am Ende der Änderung des Sliders, ein Frame schicke funkioniert es. (natürlich)

Das Problem wird schon sein, das der Puffer voll wird.
Wie kann man mit AsyncPro mit Pufferverwaltung arbeiten ?

zeras 2. Jan 2013 18:37

AW: XE2: Serial-Komponente gesucht
 
Zitat:

Zitat von Rudirabbit (Beitrag 1197400)
Die Baudrate 256000 Baud.

Das Problem wird schon sein, das der Puffer voll wird.

Das vermute ich auch.

Zitat:

Zitat von Rudirabbit (Beitrag 1197400)
Wie kann man mit AsyncPro mit Pufferverwaltung arbeiten ?

Dazu habe ich keine Infos, da ich mit den TMS Kompos arbeite. Hast du keine Events, die du abfragen kannst? Bei den TMS gibt es nur ein OnTXEmpty event.

Rudirabbit 2. Jan 2013 18:53

AW: XE2: Serial-Komponente gesucht
 
Die TMS hätten mir auch besser gefallen, leider gibts es sowas nicht für lau.
Im usenet habe ich auch nichts gefunden, upps laut gedacht :oops::oops:

zeras 2. Jan 2013 19:04

AW: XE2: Serial-Komponente gesucht
 
Ich bin vor vielen Jahren von der AsyncPro Kompo dann doch zu TMS gewechselt, da ich Probleme hatte. Meines Wissens waren das Probleme beim Empfang, dass Daten verlorengegangen sind. Deshalb habe ich die Euro investiert und bin damit zufrieden. Diese Art Probleme hatte ich danach nicht mehr. Das war aber schon um 2006 rum.

Nun zu deinem Problem. In der Doku habe ich Events gefunden, die du vielleicht ausprobieren kannst:
OnTriggerOutbuffFree oder OnTriggerOutbuffUsed. Vielleicht kann man damit abfragen, inwieweit der Buffer noch Daten aufnehmen kann.

v2afrank 3. Jan 2013 06:57

AW: XE2: Serial-Komponente gesucht
 
Eine ganz einfache Methode, aber sicher nicht die Ressourcenschonendste und beste ist das aktive warten darauf dass der Outputbuffer leer ist.

Delphi-Quellcode:
   ApdComPort1.PutString(str);
   while ApdComPort1.OutBuffUsed <> 0 do
      Application.Processmessages;
Ich weiß, so macht man es eigentlich nicht. Aber so kannst Du zumindest einfach mal testen ob Du damit auch deinen Fehler provozierst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz