AGB  ·  Datenschutz  ·  Impressum  







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

Exception während RS232 Datenempfang

Ein Thema von akuk · begonnen am 12. Mär 2020 · letzter Beitrag vom 26. Mär 2020
Antwort Antwort
Seite 2 von 7     12 34     Letzte » 
akuk

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

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 thread3976.pdf (155,6 KB, 12x aufgerufen)
Dateityp: pdf Thread3980.pdf (165,2 KB, 6x aufgerufen)
Dateityp: pdf Thread3944-1.pdf (154,4 KB, 5x aufgerufen)
Dateityp: pdf Thread3984.pdf (161,9 KB, 5x 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
 
#12

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 13:38
xxxx
Angehängte Dateien
Dateityp: pdf Thread3944-1.pdf (154,4 KB, 6x aufgerufen)
Dateityp: pdf thread3976.pdf (155,6 KB, 5x aufgerufen)
Dateityp: pdf Thread3980.pdf (165,2 KB, 5x aufgerufen)
Dateityp: pdf Thread3984.pdf (161,9 KB, 5x 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
 
#13

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
36.605 Beiträge
 
Delphi 10.4 Sydney
 
#14

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
akuk

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

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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.439 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 20:02
.. vielleicht hilft es ein
TCriticalSection.Aquire beim Eintritt in die istWertAnzeige setzn
und vor dem Verlassen ein TCriticalSection.Release.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.439 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Exception während RS232 Datenempfang

  Alt 15. Mär 2020, 09:42
.. ist istWertAnzeige eine Routine Deines Threads oder der Hauptprogramms?

Das Image ist kein Bitmap oder?
Bitmaps sind nicht threadsafe.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
akuk

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

AW: Exception während RS232 Datenempfang

  Alt 16. Mär 2020, 16:24
Hallo
Nach dem ich mich durch div. Tutorials durchgekämpft habe versuchte ich
mein Problem mit der Exception zu lösen.
Nun tritt eine andere Exception. Was ich gemacht habe :

In der Unit für RS232 Empfang (OptiNumericCom.Pas) die im Thread läuft
habe ich CriticalSction definiert ab Empfang der Daten bis Empfang beendet

var
.
EmpfangCS : TRTLCriticalSection;
.
.
function TOptiNumericComm.receiveMessage : TMeldung;
.
.
.
EnterCriticalSection(EmpfangCS);
id := recByte; //Empfang von 1.Byte (Meldungstyp) ****** Hier Exception *****

case (id AND $0F)
$01:
// usw
else //Meldung-In (16 Byte) einlesen
begin
SetLength(Result, 17);
Result[0] := id;
for i:=1 to 16
do Result[i] := comport.GetByte;
end;
end; //ende Case
LeaveCriticalSection(EmpfangCS);
======================
Im Hauptprogramm ist keine CriticalSection definiert,is auch nicht nötig,
ich will nur erreichen, dass der Empfang im Thread ohne Unterbruch
durchläuft.

Die Exception tritt auf bereits beim Empfang von 1. Byte. (id := recByte
Recbyte befindet sich in eine andere Unit,ist natürlich mit uses deklariert.
Wo ist das Problem ?
Der Datenempfang hat vorher ohne CriticalSection für erste paar Meldungen funktioniert bis Exception auftratt wg. Synchronisation.
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
 
#19

AW: Exception während RS232 Datenempfang

  Alt 16. Mär 2020, 19:05
Hallo
Ich habe vergessen die CS Initialisieren.
Jetzt läuft es durch,Meldungen werden Empfangen aber
der Empfang wird irgendwie gestört, es kommen wirre Werte über RS232.
Verlangsamt CS den Empfang ?
Und es kommt die alte Exception wieder, wie wenn das CS nicht wäre.
Ich muss es mit dem LA morgen genau anschauen was da passiert.
Anton Kurka
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
2.760 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Exception während RS232 Datenempfang

  Alt 16. Mär 2020, 19:59
Versuch im Rs232 Empfang nur die Daten z.B. in einem Fifo od. Ringbuffer zu speichern, und dann schnell wieder raus.
Die Verarbeitung dann an einer separaten Stelle Durchführen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf