AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme USB Seriell Adapter bringt mein Programm zum Absturz
Thema durchsuchen
Ansicht
Themen-Optionen

USB Seriell Adapter bringt mein Programm zum Absturz

Ein Thema von v2afrank · begonnen am 28. Feb 2013 · letzter Beitrag vom 1. Mär 2013
 
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#1

USB Seriell Adapter bringt mein Programm zum Absturz

  Alt 28. Feb 2013, 13:16
Betriebssystem: Win XP,Win Vista,Win 7
Hallo,
ich habe hier ein seltsames Problem mit einem USB Seriell Adapter von Digitus.
Und zwar habe ich ein Programm geschrieben, welches über die serielle Schnittstelle mit unserer Hardware kommuniziert. Ich benutze dazu die Async Pro Komponenten. Das Programm läuft jetzt auch schon seit mehreren Jahren ohne Probleme bei der Kommunikation zu haben.
Jetzt häufen sich aber die Klagen von Kunden die den Digitus Konverter benutzen, dass das Programm abstürzt. Ich habe mir jetzt auch so einen Konverter besorgt und kann das Problem mehr oder weniger nachvollziehen. Und zwar habe ich mir eine Schleife gebaut, die 100 mal das gleiche ausliest. Mal komme ich durch, mal bleibt das Programm auch schon beim ersten mal stehen. Es ist also nicht vorhersagbar reproduzierbar. Ich habe jetzt schon zwei Stellen gefunden an denen mein Programm hängen bleibt. Zum einem ist es eine Stelle bei der ich darauf warte dass der Outbuffer geleert ist
while (ApdComPort1.OutBuffUsed<>0) und beim simplen Schließen des Ports ApdComPort1.Open:=false; Wie gesagt, bei physikalisch vorhandenen Schnittstellen funktioniert der Code einwandfrei, weswegen ich hier auch nicht mehr zeige, aber bei diesem Digitus habe ich ein Problem.
Meine Vermutung geht dahin, dass unsere Hardware Signale auf irgendeine Leitung des Kabels sendet, was den Digitus Konverter aus der Bahn wirft. (Diese Vermutung wird auch dadurch bestärkt, dass ich eine Hardare dazwischen gesetzt habe die nur RxD und TxD durchlässt). Da man den Fehler aber nicht sauber reproduzieren kann, bin ich mir nicht sicher ob ich Ihn in diesem Fall vielleicht einfach nicht gesehen habe.
Letztendlich ist mir auch egal, woher der Fehler kommt, da wir unsere Hardware wahrscheinlich nicht ändern werden, aber ich hätte gerne das mein Programm weiterhin bedienbar beleibt bzw. eine Fehlermeldung bringt. Bei dem while (ApdComPort1.OutBuffUsed<>0 kann ich mir ja noch vorstellen dass ich mir eine Endlosschleife im Fehlerfall gebaut habe, aber beim Port.Open fehlt mir die Idee.

Darum hat einer von Euch eine Idee, wie ich der Sache auf den Grund gehen kann ? Ich erhalte keine Exception und das Programm reagiert einfach nicht mehr. Auf einem unserer XP Rechner geht es sogar so weit dass der ganze Rechner ausgeschaltet werden muss, da sich das Programm noch nicht einmal mehr vom Taskmanager beenden läßt. Mit meinem Windows 7 Rechner kann ich den Prozess zumindest immer abschiessen. Ich bin für jede Idee dankbar und werde es testen, obwohl ich momentan mich kaum trauen würde zu sagen, jetzt ist der Fehler behoben.
  Mit Zitat antworten Zitat
 


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 20:06 Uhr.
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