AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C++ Problem mit virtuellem COM-Port, USB Chip von FTDI
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit virtuellem COM-Port, USB Chip von FTDI

Ein Thema von yogie · begonnen am 10. Jun 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#1

Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 10. Jun 2009, 08:15
Hallo zusammen,

ich habe eine Frage die nichts mit Delphi zu tun hat. Falls das so nicht erwünscht ist, habe ich halt Pech gehabt, aber vielleicht weiß ja jemand Bescheid.

Für ein Meßgerät existiert ein Windows Programm (geschrieben in C++, Quellen liegen vor) welches über eine serielle Schnittstelle Daten abfragt. Dieses Programm läuft seit mehreren Jahren problemlos (WIN 95, WIN98, XP). Nun wurde das Meßgerät modernisiert und verwendet einen USB Chip von FTDI zur Kommunikation via USB. FTDI stellt dafür passende Treiber bereit und Windows registriert einen (virtuellen) COM Port.

Im Prinzip läuft die Übertragung. Logische Fehler im sehr einfachen Protokoll sind nach intensiver Fehlersuche auszuschließen. Es werden zwei Werte zum Gerät übertragen, dann werden 8 Werte abgefragt. Die Übertragung erfolgt in ASCII Zeichen. Nun das Problem :

Nach unterschiedlichen Zeitintervallen kommt keine Kommunikation zwischen Gerät und Programm mehr zustande. Es ist kein regulärer Abbruch sonder irgendwas passiert auf der Treiberebene, nur keiner weiß was.

Seltsamerweise kommen diese Fehler nur, wenn die oben beschriebene Betriebsart verwendet wird. Es gibt eine weitere Betriebsart, bei der nur Werte abgefragt werden. Dabei ist bisher kein Fehler zu beobachten.

Erst nachdem der USB Stecker gezogen und neu verbunden wurde, läßt sich das Programm neu starten.

Wer hat Erfahrungen ähnlicher Art oder hat einen Tip ?
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 10. Jun 2009, 11:35
Hallo, ich hatte solche Probleme nicht, weiß aber dass man im Treiber einige sachen einstellen kann wie Buffergröße etc. Da muss man manchmal was rumschrauben damit es geht.
Welche COM- Komponente benutzt du eigentlich? Da gabs auch einige Probleme mit der nichts mehr gelesen werden konnte weil im Buffer noch irgend nen Mist steht (das Problem hatte ich da, man konnte schicken was man will es kam nix zurück).

TSerial:

Delphi-Quellcode:
  FSerial.Baudrate := 4800;
  FSerial.OnEventChar := SerialOnData;
  FSerial.HandshakeRtsCts := True;
  FSerial.HandshakeDtrDsr := True;
  FSerial.HandshakeXOnXOff := True;
  FSerial.EnableEvents := True;
  FSerial.ReceiveText; // Buffer leeren
  FSerial.RcvThreadPriority := tpHighest;
War für ne Waage, die konnte auch beides (also nur empfangen und anfrage senden)
  Mit Zitat antworten Zitat
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#3

Re: Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 10. Jun 2009, 12:27
Es gibt da keine Komponente, es ist auf der PC Seite ein C++ Programm mit
Aufrufen des WIN API. Mit FileHandle usw. Ich bin halt nicht fit in C++ und
trau mich da nicht an die Innereien. Ein Problem war noch, dass in dem Programm
pausenlos die Schnittstelle geöffnet und wieder geschlossen wurde. Das ist aber
jetzt schon beseitigt, hat aber nicht zur Lösung des Problems geführt.

Eventuell (ist noch nicht klar) hängst es auch noch mit dem verwendeten PC zusammen
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 10. Jun 2009, 12:44
Nicht im Nebel stochern sondern systematisch suchen!
Du brauchst einen Loopback-Stecker und ein Testprogramm.
Das Testprogramm sendet Daten über die Tx-Leitung und vergleicht sie mit den Daten auf der Rx-Leitung.
Du findest einige Testprogramme im Internet oder
vielleicht möchte ja jemand ein Testprogramm mit Delphi schreiben...
(es soll ja hier immer wieder Leute geben, die nicht wissen was sie programmieren sollen )
Andreas
  Mit Zitat antworten Zitat
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#5

Re: Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 12. Jun 2009, 06:27
Danke für den Tip, aber über dieses Stadium bin ich schon lange hinaus.

Ich habe ein Monitor programm mitlaufen lassen und sehe dass das Protokoll
richtig abläuft. Plötzlicht (von ein paar Minuten bis zu mehreren Stunden)
hängt die die Übertragung fest. Aus dem PC-Programm (C++) kommt die Fehlermeldung
"illegal file handle". Nach Beendigung des Programms ist kein Zugriff mehr
auf den (virtuellen) COM-Port möglich, auch nicht mit einem Terminalprogramm.

Der Geräte Manager zeigt den Port aber noch als vorhanden an. Erst USB-Stecker
ziehen und neu stecken bringt den Port wieder in den Zugriff.

Die zweite Variante ist, dass das PC-Programm einfach verschwindet, so als ob man
es abgebrochen hätte.
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#6

Re: Problem mit virtuellem COM-Port, USB Chip von FTDI

  Alt 12. Jun 2009, 06:44
Hallo,

wenn zwar der Quellcode vorliegt, Du aber keine Ahnung von C++ hast, dann bringt das ganze überhaupt nix. Inwieweit ist es denn im PC-Programm möglich, sich Fehler auch noch ausgeben zu lassen, wenn man den Quelltext in eine IDE zieht?
Nach Deinen Beschreibungen zu urteilen lässt sich IMHO die Fehlersuche auf das PC-Programm eingrenzen, da auch beim einem plötzlichen Verschwinden des PC-Programms der Port nicht mehr freigegeben wird.
Gerade bei C und C++ Programmen passieren gerne mal die merkwürdigsten Effekte, ich spreche das aus leidvoller Erfahrung.

Gruß, Carsten
  Mit Zitat antworten Zitat
Antwort Antwort


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:57 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