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
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Exception während RS232 Datenempfang

  Alt 18. Mär 2020, 18:01
Doofe Frage am Rande: Nutzt du an all diesen Stellen wirklich die selbe Critical Section; also ein und dieselbe Instanz, oder heißt die einfach nur überall gleich?

Ansonsten fürchte ich, werden wir hier etwas mehr als den bereits gezeigten Code brauchen. Am besten alle Methoden, in denen die CS jetzt verwendet wird, mit möglichst wenigen Kürzungen. Auch die Klassendeklarationen die zu den Methoden gehören wären interessant. Ich muss nämlich gestehen: Ich habe aus den bisherigen Infos null Ahnung was hier wo, wann und mit wem genau passiert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 18. Mär 2020, 20:18
Hallo Medium
ist keine Doofe Frage, ist ja logisch.
Ja ich habe nur eine CriticalSection (EmpfangCS).Am Anfang war da gar keine.

Das Gesamte Programm ist sehr gross, und die jetztige Version stammt nicht von mir. Ich war 1991 Mit_Entwickler der DOS Version (MS Pascal).
Diese Version war der Ausgangpunkt für die jetztige OOP Version.
Die Firma die OOP Version Entwickelt hat ist leider liquidiert.

Ich teste zuerst nur das enfachste Menue (Manuel),in diesem Menue wird nur Empfangen (Istwert = M04).
Alle andere Meldungen von der CNC werden über rs232 zwahr empfangen
(im Thread) aber vom Hauptprogramm in diesem Menue nicht weiter verarbeitet.

Sende darum nur die 5 Units die meiner Meinung nach in diesem Menue relevant sind, im ganzem sind es 31 Units.
Die Exception tritt dann auf, nach dem das MAN_Menue(TForm11) aufgebaut wird
bevor die Istwerte (siehe NCTBUP12) angezeigt werden. Wenn man schrittweise duch den Programm
geht, braucht es mehrere Durchläufe bis die Exception auftritt.

Vielen Dank zum voraus
Anton
Angehängte Dateien
Dateityp: pas NCTBUP12.PAS (11,1 KB, 6x aufgerufen)
Dateityp: pas INIT_Main.pas (1,7 KB, 5x aufgerufen)
Dateityp: pas F_MAN.pas (7,1 KB, 7x aufgerufen)
Dateityp: pas F_MainWindow.pas (52,4 KB, 7x aufgerufen)
Dateityp: pas OptiNumericComm.pas (7,6 KB, 10x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.168 Beiträge
 
Delphi 12 Athens
 
#3

AW: Exception während RS232 Datenempfang

  Alt 19. Mär 2020, 06:23
Nur mal kurz drübergeschaut, ich würde versuchen das viel kleiner, modularer auseinander zu ziehen.

Hier ein paar Ideen:

in OptiNumericComm:
ich würde immer versuchen die Länge von dem eigentlichen Objekt (hier comport) zu bekommen, nicht von woanders.
Sonst könnte das schnell um die Ohren fliegen wenn Daten nicht vorhanden.
Delphi-Quellcode:
      for i:=1 to 8 do
         Result[i] := comport.GetByte; // was macht denn getByte wenn keine Daten mehr da sind ?
an zig anderen Stellen:
ich würde versuchen Enter - Leave in try - except -finally zu kapseln, um besser debuggen zu können
Delphi-Quellcode:
procedure
begin
  InitializeCriticalSection(EmpfangCS);
   try
      try
....
      except
        on E : Exception do
        begin
        // wenn hier ein Dummy-Code steht könnte man die Exception debuggen, und damit wissen wo die herkommt
        end;

    finally
        LeaveCriticalSection(EmpfangCS);
    end;
end;
  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 19. Mär 2020, 07:47
Hallo Rollo62
Ja da hast Du Recht, es is nicht immer konsequent, einmal mit recbyte andermal mit GetByte.Werde ich korrigieren.
Das die CNC Daten richtig sendet darauf kann man sich verlassen,es ist speziel ein Mikrokontroller in der CNC dafür da.

Das andere mit leave in try werde ich versuchen. Das muss ich in allen relevanten Methoden machen, oder ?
Vielen Dank für die Hilfe.
Anton
Anton Kurka
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Exception während RS232 Datenempfang

  Alt 19. Mär 2020, 08:20
Hallo Anton,

habe mal angefangen das in kleinere Methoden zu packen.
Vielleicht magst Du es Dir mal anschauen.

Grüße
Klaus
Angehängte Dateien
Dateityp: pas OptiNumericComm.pas (11,6 KB, 2x aufgerufen)
Klaus

Geändert von Klaus01 (19. Mär 2020 um 19:38 Uhr) Grund: Datei neu hochgeladen
  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 19. Mär 2020, 08:57
Hallo Klaus
Vielen Dank, das ist sehr lieb von Dir.
Ist der Grund für das Aufteilen
das man evt. Exception besser abfangen kann ?
Heute Nachmitag kann ich es schnell probieren.
Gruss
Anton
Anton Kurka
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Exception während RS232 Datenempfang

  Alt 19. Mär 2020, 09:09
Hallo Anton,

auch das - zusätzlich wird die receiveMessage Funktion lesbarer und übersichtlicher.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort

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 10:51 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