Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit TSerial und EventChar (https://www.delphipraxis.net/69603-problem-mit-tserial-und-eventchar.html)

Schneider-Huetter 17. Mai 2006 18:00


Problem mit TSerial und EventChar
 
Hallo zusammen,

ich habe ein Problem mit der Komponente TSerial. Ein Mikrocontroller sendet unmittelbar hintereinander Befehle über RS232 an den PC, alle Befehle werden mit #13 abgeschlossen. Ich habe nun bei TSerial #13 als EventChar eingetragen. Meiner Auffassung nach sollte sieser Eventhandler bei jeder empfangenen #13 aufgerufen werden, wird er aber nicht :pale: Wenn ich einen Breakpoint setze, sehe ich, dass in dem empfangenen String (wird mit Serial1.ReceiveText eingelesen) immer mehre Befehle hintereinander stehen, also z.B. "gp0#13gp1#ang1023". Das sind ganau die Befehle, die hintereinander im Timer-Interrupt des Mikrocontrollers gesendet werden. Es scheint also, als ob der PC jedesmal zwei #13 einfach ignoriert.
Ist also die Interrupt-Latenz des PCs tatsächlich zu groß? Als Alternative habe ich schon mal einen kleinen Parser geschrieben, der den String dann wieder "zerpflückt". So muss ich aber beim Mikrocontroller, wenn alle Befehle rausgeschickt wurden nochmal ein extra EventChar senden...

Weiß jemand Rat?

P.S. Ich hoffe ich bin inder richtigen Rubrik, wusste nicht wo das sonst hinpasst...

Schneider-Huetter 18. Mai 2006 10:37

Re: Problem mit TSerial und EventChar
 
Keine RS232-/TSerial-Spezialisten hier? Wäre wirklich dankbar für Hilfe...

marabu 18. Mai 2006 11:52

Re: Problem mit TSerial und EventChar
 
Hallo.

#13 ist der default event char. Wie sieht dein event handler aus? Wird er überhaupt getriggert?

Grüße vom marabu

Schneider-Huetter 18. Mai 2006 12:16

Re: Problem mit TSerial und EventChar
 
Eventhandler: Doppelklick im OI bei OnEventChar (TSerial), Events sind eingeschaltet, Eventchar steht auf #13.
Im Eventhandler lese ich dann mit Serial1.ReceiveText den empfangenen Text aus.
Der EventHandler wird getriggert, aber eben erst bei der 3. empfangenen #13...
Ach so, Übertragungsrate ist 19200 Baud, 2 Stopbit. Das sollte ja eigentlich nicht zu schnell für einen PC sein ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.

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