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 1 von 7  1 23     Letzte » 
akuk

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

Exception während RS232 Datenempfang

  Alt 12. Mär 2020, 18:40
Zwei PC kommunizeren über RS232. PC1 sendet laufend Daten an PC2.
Eine Exception wird gemeldet (System), trotzdem werden die Daten
weiterhin übermittelt und deren Empfang Quittiert.
Dagegen das Programm-Hauptablauf ist blockiert.

Exception im "System" :
CALL FreeMem, InvalidPointer, "ungültige Zeigeroperation"
siehe Beilage.
Was kann die Ursache sein ? wo soll man suchen ?
Angehängte Dateien
Dateityp: pdf Exception.pdf (165,4 KB, 22x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
2.388 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Exception während RS232 Datenempfang

  Alt 12. Mär 2020, 19:15
RS232 kann zu beliebigen Zeiten kommen, müsste also ThreadSicher behandelt werden bevor Du das irgendwo weiterverarbeitest.
Probier das Mal mit TThread.ForceQueue zu entkoppeln.
ce
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.239 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Exception während RS232 Datenempfang

  Alt 12. Mär 2020, 19:21
Ich nehme das hier für RS232 Kommunikation und bin zufrieden damit.
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.555 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Exception während RS232 Datenempfang

  Alt 12. Mär 2020, 19:40
Eine kostenfreie Alternative, die ich seit Jahren immer mal wieder erfolgreich einsetze ist TPAPro. Zuletzt allerdings mit D2007 - ob und wie gut das mit den neuen Delphis spielt kann ich leider nicht sagen. (Wird für mich über kurz oder lang aber sicher auch mal interessant.)


Edit: Das auf Sourceforge scheint veraltet zu sein. Brandaktuelle Versionen habe ich gerade auf GitHub gesehen!
"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)

Geändert von Medium (12. Mär 2020 um 19:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.446 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Exception während RS232 Datenempfang

  Alt 12. Mär 2020, 23:55
RS232 kann zu beliebigen Zeiten kommen, müsste also ThreadSicher behandelt werden bevor Du das irgendwo weiterverarbeitest.
Probier das Mal mit TThread.ForceQueue zu entkoppeln.
ce
Das kommt drauf an. Ja, viele ComPort-Komponenten haben einen Thread, der die Daten empfängt und vom hardwarepuffer in einen Softwarepuffer kopiert,
aber ein muss ist das nicht.

Aber auch diese komponenten aben meisten keinen unendlich großen Puffer, also muß dessen Programm somit auch die Daten von dort abrufen, damit die Komponente nicht aufhört den Hardwarepuffer zu leeren.


Per se, also ohne Hardwarehandshake, ist die serielle Komunikation meistens ohne Rückkopplung, also niemand bekommt mit, wenn der Andere die "empfangenen" Daten überhaupt verarbeitet, bzw. ob überhaupt jemand zuhört. (es sei denn der andere Antwortet und man wertet das aus)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
2.388 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 06:34
@himitsu
Stimmt, aber mit aktuellen PC's habe ich da eigentlich keine Probleme mehr gehabt,
die sind einfach viel schneller als RS232.
Kommt natürlich auf die Baudrate an.
Beim Debuggen können die Buffer natürlich schon vollaufen im Hintergrund.
Der Fehler kann natürlich trotzdem noch alle möglichen Ursachen haben, war jetzt nur eine Idee.

Ich benutze deswegen einen eigenen Ringbuffer, der threadsicher reinschreibt und auslesen kann,
so das In- und Out völlig entkoppelt sind.
Ich denke mal das einige COM Komponenten das schon drin haben, die Hinweise und Links sind also richtig.
Ich weiss aber nicht was der TE nutzt und wie er das umsetzt.
  Mit Zitat antworten Zitat
akuk

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

AW: Exception während RS232 Datenempfang

  Alt 13. Mär 2020, 08:02
Hallo
Das rs232 lauft im Thread, darum lauft es weiter auch nach der Exception.
Die Exception passiert also im Hauptablauf. Nur handelt sich um SystemException
,wie finde ich heraus was ist die Ursache.
Das was Debugger zeigt hilft nicht weiter, da ist man schon im System.
Siehe Beilage.

Kan man im RAD Delphi Rio tracen, ich habe es nicht gefunden ?
Angehängte Dateien
Dateityp: pdf Exception.pdf (165,4 KB, 16x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Der schöne Günther
Online

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

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
33 Beiträge
 
Delphi 10.3 Rio
 
#9

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
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.446 Beiträge
 
Delphi 10.3 Rio
 
#10

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  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 15:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf