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
 
#6

AW: Tcomport on RXChar Problem

  Alt 10. Jun 2022, 09:01
Hallo,


ich greif mal den alten Tröt auf, weil er meinem aktuellen Problem am nächsten kommt.

Ich habe eine FMX-Anwednung und dazu die Winsoft-Komponente installiert:
https://www.winsoft.sk/comport.htm

Nun will ich Hex-Daten zu einem Controller schicken und welche empfangen. Nur Hex, also Bytes, keine Ansi-Chars oder ähnliches. Weshalb ich keine Ende-Erkennung habe. Das Protokoll, das der Controller verwendet, läßt sich nicht ändern, weil ich Geräte mit einbeziehen muß, die seit Jahren im Feld sind.

Nun hab ich das Problem, dass OnRxChar eigentlich das einzige Event ist, das sich zum Empfang nutzen läßt. Aber es tritt nach jedem empfangenen Byte auf. Nur, wenn ich nach jedem Byte selbiges einsammeln und in ein TByte-Array oder ähnliches schreiben will, tritt zwangsläufig der Fall auf, dass während des Ausführens dieser Routine der Empfang ja weiterläuft und sich die empfangenen Daten ändern. Das führt zu Fehlern.
Weshalb ich nun die Erleuchtung hatte, die einem der obigen Kommentatoren auch kam - ich setze einen Timer auf 100ms und lese dann erst die Daten aus. Nach 100ms müßte jede denkbare Sendung durch sein. Das hieße, dass OnRxChar meinen Timer starten müßte.

UNd da kommt das Problem: In dieser OnRxChar-Routine reagiert der Timer.Enable nicht.
Code:
procedure TForm1.CP1RxChar(Sender: TObject);
begin
     Timer1.Enabled := True;
end;
Das macht der nicht.

Nehm ich einen Button, kann ich den Enabled ein- und ausschalten, wie ich will.
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
    Timer1.Enabled := not Timer1.Enabled;
end;
Da klappt das bestens. Aber in der OnRxChar gar nicht. Genau genommen ändert sich das Property auf True aber der Timer löst kein Event aus.

Gäb's dazu eine Erklärung?

Geändert von BergLoewe (10. Jun 2022 um 09:08 Uhr)
  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 04:07 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