AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tcomport on RXChar Problem

Ein Thema von PhilmacFLy · begonnen am 5. Okt 2012 · letzter Beitrag vom 28. Jun 2022
 
BergLoewe

Registriert seit: 20. Nov 2005
37 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Tcomport on RXChar Problem

  Alt 27. Jun 2022, 18:26
Also nachdem der Timer -warum auch immer erst so spät- einsieht, dass er sich in der Empfangsroutine starten lassen soll, geht's eigentlich.
Wobei:
Erstens wird das Event OnRxChar nicht mehrfach aufgerufen, sondern immer nur einmal. Ich hatte da einen Zähler laufen, der zeigt nur "1" an.
Zweitens -ich sende/empfange ja ausschließlich Bytes, also keine Chars oder Strings oder Ascii oder so- Auslesen des COMPORT-Buffers funktioniert nur mit ReadBytes. Aber das geht dann. Ich mach das final im Timer-Event.
Eines ist aber doch ganz komisch:
Die Gegenseite ist zunächst eine Sensor-/Kommunikationsbaugruppe mit einem Mikrocontroler, der via USB über einen CP210 und dessen RS232 angesprochen wird. Da hab ich noch Zugriff auf die Software, kann also das Prtokoll bestimmen. Die Baugruppe soll sich zunächst melden, sagen, wie sie heißt und auf weitere Anfrage ihre Software-Versionen bekannt geben. Nun hatte ich offensichtlich Übertragungsfehler, so dass das Delphi-Programm sehr oft zu wenig oder was falsches verstand. Im Controler hab ich deshalb eine Verzögerung zwischen den Sende-Bytes eingebaut, seither geht's mit der eigentlich drei Byte längeren Versions-Abfrage super. Sowohl in 9600 Baud, als auch 19200Baud. Die kürzere Sendung mit der Typnummer aber, da sind die Übertragungsfehler nicht wegzukriegen. Der Fehler liegt aber im PC/Delphiprogramm. Auf dem Oszi gibt's da keine Abweichungen. Ich hoffe nur, dass sich das nicht mit anderen Geschichten fortsetzt, da sollen später 64Byte lange Blöcke über einige hundert Kilobyte übertragen werden. Soweit bin ich aber momentan noch nicht.

Aber noch eine ganz andere Frage, die eigentlich nichts mit der COMPORT-Schnittstelle zu tun hat:
Ich sende an die Baugruppe bestimmte Dinge, die bestimmte Antworten erbringen sollen. Die sind dann recht kompliziert auszuwerten und dann geht das ganze wieder von vorn los. Das heißt, im Timer_Event, was dem Empfang folgt, wird eine Auswerte-Routine aufgerufen, die dann wieder den nächsten Schritt sendet. Was aber eben wieder Empfangs- und Timer-Event aufruft. Wenn jetzt der Quittungssempfang nach dem Senden einer Zeile schon fertig ist, bevor die Auswerteroutine und die Timer-Event-Roiutine abgeschlossen wurden, dann wird das Ding doch rekursiv - oder? Erstens, verträgt Delphi überhaupt sowas und zweitens gibt's da im Delphi so'ne Tricks, wie man eine Art Hauptschleife simuliert?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz