Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Exception während RS232 Datenempfang (https://www.delphipraxis.net/203690-exception-waehrend-rs232-datenempfang.html)

akuk 21. Mär 2020 15:46

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
Ich sende dir ein Offline Simulation Demo-programm der die CNC mit der Bediensoftware zusammen simmuliert. Allerdings nur die Stellungen MAN/REF, PROG,und AUTm es ist ein bisschen Spielzeug.
Das Programm habe ich nur vor paar Jahren schnell zusammengestellt, ist nicht ganz proper.
Im CNC Menue werden laufend Meldungen Angezeigt wie im echtem Betrieb
So hast Du Vorstellung wie das ganze Ablaufen soll.
Das jetztige Programm ist natürlich an die echte CNC über RS232/422 angebunden.
Gruss
Anton

akuk 21. Mär 2020 16:06

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
Entschuldige, das vorher war nicht komplett.
Gruss
Anton

Klaus01 21. Mär 2020 18:35

AW: Exception während RS232 Datenempfang
 
Hallo Anton,

danke, kannst Du mir vielleicht noch die Unit mit den Message Konstanten geben?
TH_MESSAGE, TH_DATAM, TH_CONNECTED, TH_ERROR, TTH_SEND,...

Grüße
Klaus

akuk 21. Mär 2020 23:37

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Klaus
Vielen Dank Für Deine Hilfe.
Anbei NCTB__09.pas sowie Aufzeichnung der ersten Meldungen an der RS232.
Gruss
Anton

Klaus01 24. Mär 2020 10:19

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Anton,

ich habe mal versucht alles etwas zu entzerren.

Neu ist eine Thread: cncDataReceiver
Der liest Daten von dem comport und packt die Meldungen
in die Queue fInMessageQueue.
Diese Queue wird von dem Thread cnsMessageDispatcher gelesen.
Die Meldungen werden dort verarbeitet und entsprechende Messages gepostet.

Die Daten die zum comport geschickt werden sollen werden von dem Thread cncDataTransmitter verarbeitet.
Die Input Daten bekommt der Thread aus der fOutMessageQueue.
Die fOutMessageQueue wird in der F_MainWindow unit gefüllt.

fInMessageQueue und fOutMessageQueue basieren auf TThreadQueue.
TThreadQueue ist ein thread-Safe TQueue.

Daten vom und zum comPort werden nun gepuffert

Ich kann nicht versprechen, dass das alles auf Anhieb läuft, dazu sind die Umbauten zu groß.

Grüße
Klaus

akuk 25. Mär 2020 09:26

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
Da bin ich wieder, da gibt es Problem wegen Klassenvererbung.
TCncMessageTransmitter =class(TThread).. ich habe probiert
(TCNCDataReceiver) das ist doch die Bassisklasse ? aber das funktioniert
nicht. siehe Beilage, Fehler in Zeile 17
Gruss
Anton

Klaus01 25. Mär 2020 09:35

AW: Exception während RS232 Datenempfang
 
Hallo Anton,

tut mir leid -mein Fehler.
TCncMessageTransmitter hat als Basisklasse TThread.

Kannst Du bitte das override am Ende der Create Definition entfernen?
Das gleiche dann bitte auch noch bei TCncDataReceiver.

Grüße
Klaus

akuk 25. Mär 2020 10:30

AW: Exception während RS232 Datenempfang
 
Hallo Klaus
leider der nächste im cncDataReceiver:

geQueue: TThreadQueue<TMeldung>; const comport: shortInt; const destHande: THandle);

[dcc32 Fehler] cncDataReceiver.pas(26): E2037 Deklaration von 'create' unterscheidet sich von vorheriger Deklaration

Grüsse
Antin

Klaus01 25. Mär 2020 10:50

AW: Exception während RS232 Datenempfang
 
Delphi-Quellcode:
  TCncDataReceiver = class(TThread)
    private
      fCommTest: TOptiNumericComm;
      fMessageQueue: TThreadQueue<TMeldung>;
      fComPort: ShortInt;
      fDestHandle: THandle;
      function receiveDataCom: TMeldung;
    public
      constructor create(var messageQueue: TThreadQueue<TMeldung>; const comport: shortInt; const destHandle: THandle); override;
      destructor destroy; override;
      procedure Execute; override;
  end;
Delphi-Quellcode:
constructor TCncDataReceiver.create(var messageQueue: TThreadQueue<TMeldung>; const comport: shortInt; const destHande: THandle);
begin
  inherited create(true);
  fCommTest := TOptiNumericComm.Create;
  fMessageQueue := messageQueue;
  fComPort := comPort;
  fDestHandle := destHandle;
  suspended := false;
end;
.. wenn Du das override wieder hereinnimmst.
TThread.create() hat eine andere Signatur.
Also müsste override gesetzt werden.

Grüße
Klaus

akuk 25. Mär 2020 11:07

AW: Exception während RS232 Datenempfang
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Klaus
Geht leider nicht, siehe Beilage.
Grüsse
Anton


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Seite 6 von 7   « Erste     456 7      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz