![]() |
Problem mit virtuellem COM-Port, USB Chip von FTDI
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 ? |
Re: Problem mit virtuellem COM-Port, USB Chip von FTDI
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:
War für ne Waage, die konnte auch beides (also nur empfangen und anfrage senden)
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; |
Re: Problem mit virtuellem COM-Port, USB Chip von FTDI
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 |
Re: Problem mit virtuellem COM-Port, USB Chip von FTDI
Nicht im Nebel stochern sondern systematisch suchen!
Du brauchst einen ![]() 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 :drunken: ) |
Re: Problem mit virtuellem COM-Port, USB Chip von FTDI
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. |
Re: Problem mit virtuellem COM-Port, USB Chip von FTDI
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. :gruebel: Gerade bei C und C++ Programmen passieren gerne mal die merkwürdigsten Effekte, ich spreche das aus leidvoller Erfahrung. :evil: Gruß, Carsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz