AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Exception während RS232 Datenempfang
Thema durchsuchen
Ansicht
Themen-Optionen

Exception während RS232 Datenempfang

Ein Thema von akuk · begonnen am 12. Mär 2020 · letzter Beitrag vom 26. Mär 2020
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 08:34
Schau doch mal im Stacktrace kurz darüber, _UStrClr und so. Und das läuft in irgendeiner Fensterprozedur eines TWinControl . Steckst du irgendwie rohe Bytes in Strings oder sowas?
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 10:18
Hallo schöne Günter
Ich bin ein Anfänger, wo finde ich das UstrCtr resp TWinControl.
ich hab überall gesucht aber nicht gefunden.
Start
Ueberwachte Ausdrcke ?
Parameter ?

ja es passiert in eine Fensteprocedur beim werte abfüllen aber wo habe ich bis
jetzt nicht gefunden.
es sollen Werte die vom Rs232 Thread (byte array) im Fenster Angezeigt werden.
ich hab überall BP gesetzt aber das hat nicht funktioniert.

Besten Dank zum voraus.
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.564 Beiträge
 
Delphi 12 Athens
 
#3

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 11:55
Manchmal bleibt der Debugger auch im falschen Thread stehen, bzw. die eigentliche Fehlerursache kann von wo anders her kommen.
Strg+Alt+T: In der Threadliste kannst du mit Doppelklick umschalten und siehst im Stacktrace dann auch die anderen Threads.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 13:24
Hallo Himitsu
es sind schon ca.6 Jahre her als wir letztemal miteinander kommuniziert haben.
Ich habe imer noch "Unruhestand" statt "Ruhestand". Nun zu meinem
Problem:
Es wurden insgesamt 4 Threads angezeigt, so wie ich es verstanden habe
alles System Threads.Siehe Beilage.
In meinem Programm gibt es nur ein einzige Threads ,
nämlich für rs232 kommunikation.
Ich habe die ganze Kette durchgesucht von dem Empfang der Daten
(Konkret eine Meldung mit 20 Bytes) bis zu der Prozedur(Anzeige_koordinaten) die in den Fenster hinein schreibt, nichts auffäliges gesehen.
Wenn ich ein BP nach der Prozedur setze komm die Exception noch nicht,
unmitelbar danach geht es in Exception ???
Angehängte Dateien
Dateityp: pdf Thread3984.pdf (161,9 KB, 5x aufgerufen)
Dateityp: pdf Thread3980.pdf (165,2 KB, 6x aufgerufen)
Dateityp: pdf Thread3944-1.pdf (154,4 KB, 5x aufgerufen)
Dateityp: pdf thread3976.pdf (155,6 KB, 12x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 13:38
xxxx
Angehängte Dateien
Dateityp: pdf Thread3984.pdf (161,9 KB, 5x aufgerufen)
Dateityp: pdf Thread3980.pdf (165,2 KB, 5x aufgerufen)
Dateityp: pdf thread3976.pdf (155,6 KB, 5x aufgerufen)
Dateityp: pdf Thread3944-1.pdf (154,4 KB, 6x aufgerufen)
Anton Kurka

Geändert von akuk (13. Mär 2020 um 13:40 Uhr)
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 15:09
Hallo
ich komme dem Problem ein bisschen näher.
Folgende Sequenz löst die Exception aus, aber nur wenn es normal
ablauft.

M4: begin
WriteXY(Image1,22,25,' 6 '); {==testpunkt ============}
//getblk(false);
WriteXY(Image1,22,25,' 7 ');
IstWertAnzeige(Image1); {getblk drin }
WriteXY(Image1,22,25,' 8 ');
F_Neu:=false;
WriteXY(Image1,22,25,' 9');
end;

Wenn ich den 1.BP setze vor IstWertAnzeige und dann weiter mit F9 zu 2.BP
tritt keine Exception auf .
Dagegen wenn ich nur ein BP setze nach IstwertAnzeige kommt die Exception.
d.h. wenn IstwertAnzeige ohne halt durchlauft kommt es zu Exception.
Frage: was hat das mit EInvalidPointer zu tun ? (ungültige Zeiger)
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.564 Beiträge
 
Delphi 12 Athens
 
#7

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 16:07
Tja, viel Spaß beim Suchen von Threadingfehlern.

Vermutung: du hast irgendwo eine Synchronisierung vergessen und die Threads bekämpfen sich.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 17:06
Hallo Himitsu
Ja das habe ich in der Zwischenzeit auch herausgefunden. Du hast absolut
richtig getippt.
Wenn die Procedur IstwertAnzeige aufgerufen wird während dem im Thread
eine neue IstwertMeldung empfangen wird, dann genau passiert es.

Wie macht man es am einfachsten ?
Nach jede empfangene Meldung eine Freigabe setzen, wenn eine neue Meldung kommt wieder rücksetzen. Oder soll ich zusätzlich noch ein Ack Signal seitens Hauptprogramm generieren ?
Oder gibt es eine bessere Methode ?
Anton Kurka
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:50 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