-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
Hallo Klaus
Dies kommt vielfach vor :
fOutMessageQueue.Enqueue(SendDataRecord);
die Fehler Meldung dazu :
F_MainWindow.pas(616): E2010 Inkompatible Typen: 'TMeldung' und 'TDataMessage'
-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
Hallo Klaus
da kommt das nechste:
schlimmste ist, ich sehe da kein Fehler:
zBsp Zeile 145:
F_MainWindow.pas(145): E2029 ')' erwartet, aber ',' gefunden
fCncMessageTransmitter := TCncMessageTransmitter(fOutMessageQueue, COMPORT, Form1.Handle); // ????
Da bin ich ehrlich gesagt total überfordert
-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
Hallo Klaus
Zeile 16 CNCMessageDispatcher:
constructor Create(const destHandle: THandle; var messageQueue: TThreadQueue<TMeldung>);// override; hier habe ic das override entfernt
nächste sind 12 Fehler : siehe Beilage:
Sollte das receivedMessage nicht receiveMessage sein ?
Grüsse
Anton
-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
Hallo Klaus
Geht leider nicht, siehe Beilage.
Grüsse
Anton
-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
Hallo Klaus
leider der nächste im cncDataReceiver:
geQueue: TThreadQueue<TMeldung>; const comport: shortInt; const destHande: THandle);
cncDataReceiver.pas(26): E2037 Deklaration von 'create' unterscheidet sich von vorheriger Deklaration
Grüsse
Antin
-
Forum: Programmieren allgemein
by akuk,
25. Mär 2020
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
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
Vielen Dank Für Deine Hilfe.
Anbei NCTB__09.pas sowie Aufzeichnung der ersten Meldungen an der RS232.
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
Entschuldige, das vorher war nicht komplett.
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
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...
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
die move zeile habe ich geändert, exzeption kommt, aber wenn ich fortsetzen
drücke, kommt kurzzeitig das menu MAN jedoch verschwindet es wieder , vermutlich wenn ein Status oder Istwert Meldung kommt. dabei erscheint im MAN Menue die Meldung mit "ungültige Zeigeroperation"
Die CNC sendet ja andauernd weitere Meldungen:
CNCstatus, AchsenStatus, Istwerte.
Könnte das sein, das die ...
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
Ich habe schrittweise Probiert Letzte BP1 wo noch kein Exc auftritt,
beim BP 2 kommt EXc. bereits:
Bp1> EditorForm := TForm2.Create(self);
with EditorForm do begin
BorderIcons := ;
BorderStyle := bsNone;
parent := TabSheet1;
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
Ja die trifft immer, aber wie kann ich es Debuggen, mit BP und Schrittweise ?
oder gibt es andere Möglichkeit ?
Mit BP und Schrittweise ist natürlich sehr mühsam, die CNC Verhängt sich dann
da muss ich immer beides abschalten und dann neu starten.
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
21. Mär 2020
Hallo Klaus
Vielen Dank für Dein Vorschlag, leider ist immer noch eine System-Exception
da, aber eine andere. Siehe Beilage.
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
20. Mär 2020
Hallo Zusammen
In der Unit F_MainWindows, Zeile 100 ist die Typendeklaration :
type
//Record for new files, will occur when LParam = TH_NEWFILE, WParam will be PNewFileRecord
PNewDataRecord = ^TNewDataRecord;
TNewDataRecord = record
ThreadID : Cardinal;
Data : OptiNumericComm.TMeldung;
DataLength : integer;
...
-
Forum: Programmieren allgemein
by akuk,
20. Mär 2020
Hallo Zusammen
"Ok. - habe es gefunden - SendMessage wartet bis die Nachricht angenommen wurde, bis dahin stoppt der Thread seine Arbeit."
Der rs232 Thread darf unter keinen Umständen angehalten werden, sonst
verpasst man weitere Meldungen von der CNC, resp. Meldungsempfang wird
unterbrochen was ja noch schlimmer wird.
Habe ich es richtig verstanden,es kommt nur PostMessage in Frage?
...
-
Forum: Programmieren allgemein
by akuk,
19. Mär 2020
Hallo Klaus
Richtig, bei Start und Compilation wird DFM überschrieben und dann gibt diese
ominöse Fehler. Wenn ich die AVIRA abschalte wird nach dem Start die Kompilation ok.
Ich habe in der Methode ManWindowsMessage den START, M6 und M4
mit try Except ergänzt, die Exception ist immer gleich (call FreeMem, ungültige Zeigeroperation).Siehe Beilage.
So wie ich es verstehe liegt die Ursache...
-
Forum: Programmieren allgemein
by akuk,
19. Mär 2020
Hallo Klaus
Da ich vermute den Fehler in Unit F_MAN, habe ich versucht
Try Except dort implementieren. siehe Beilage.
Es gibt aber ein Compilationsfehler der nicht auffinbar ist.
Was mache ich falsch ?
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
19. Mär 2020
Hallo Klaus
Leider kein Erfolg, es ist sicher nicht im OptiNumericCom, es ist immer die
gleiche System Exception => call FreeMem, ungültige Zeigeroperation.
Gruss
Anton
-
Forum: Programmieren allgemein
by akuk,
19. Mär 2020
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
-
Forum: Programmieren allgemein
by akuk,
19. Mär 2020
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
-
Forum: Programmieren allgemein
by akuk,
18. Mär 2020
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...
-
Forum: Programmieren allgemein
by akuk,
18. Mär 2020
Hallo Zusammen
langsam bringt mich das ganze zu Verzweiflung.
Ich habe in allen relevanten Teilen CriticalSection eingefügt um Sicherzustellen das zwischen der RS232 Thread (Daten Empfang) und dem
Hauptprogramm (wo Die Daten analysiert werden und Angezeigt) Die DatenSynchronisation gewährleistet ist.
Ich darf wohl annehmen das der Codeteil der sich innerhalb der CritischeSectionen befindet...
-
Forum: Programmieren allgemein
by akuk,
17. Mär 2020
Hallo Sinspin
das verstehe ich nicht, warum sollen die Daten blockiert sein ,die CriticalSection wird ja auschliesslich durchgelaufen (ich habe nur eine CS).
Hab ich da etwas falsch verstanden ?
In der CS ist der Handshake RTS/CTS und danach der Datenempfang und wieder Rts/cts. Mit dem LA habe ich es angechaut und es scheint richtig zu laufen.
Aber im Hauptprogramm (wo die Daten aus...
-
Forum: Programmieren allgemein
by akuk,
16. Mär 2020
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.
-
Forum: Programmieren allgemein
by akuk,
16. Mär 2020
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
.