Hi Leute, ich habe zwei test USB/SERIAL Platinen, die eine mit dem FT2232C und die andere mit FT232R. Wenn ich die am PC anschliesse sehe im Geräte-Manager, die virtuellen COM- Schnittstellen. Wenn ich aber die "CreateFilecom,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,\ FILE_FLAG_OVERLAPPED,0); aufrufe kriege ich bei dem FT232R ein INVALID_HANDLE_VALUE als Rückgabe!!! und kann auf die Schnittstelle nciht mehr zugreifen im Gegenteil zu FT2232C!!! an was könnte das liegen!!!!!! Gruß
"CreateFilecom,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,\ FILE_FLAG_OVERLAPPED,0); Da fehlt 'ne Klammer. Und der Text, den Du in der Variablen "com" angibst. Der nämlich muss bei Schnittstellen jenseits von "COM9" anders aufgebaut werden. Wenn CreateFile INVALID_HANDLE_VALUE zurückgibt, kann man mit GetLastError den Fehlercode bestimmen. Wie lautet der? PS: Ein Satzzeichen pro Satz genügt. Fragen werden übrigens mit anderen als den von Dir verwendeten Satzzeichen beendet.
Hallo, ich muss mich erstmal für das schlechte Formatieren meiner gestrigen Anfrage entschuldigen. Das mit der Klammer ist nicht das Problem, gestern beim koppieren ist irgendwie die eine verschwunden. In meiner Funktion versuche ich einfach alle existierende Com-Ports aufzulisten, dafür lade ich den Namen vorher mit
1 | com.Format("COM%i",i,com); |
und dann rufe ich die CreateFile(..), bei dem Ft232R kriege ich einen FehlerCode = 2, (No such file or directory), mit dem FT2232 klappt es ohne Probleme, obwohl virtuelle Coms bei beiden Bausteine existieren!!! kann das an der Platine liegen? wartet irgendwie CreateFile() beim Öffnen auf irgendeine Antwort von der Com-Schnittstelle? PS. das mit "Der nämlich muss bei Schnittstellen jenseits von "COM9" anders aufgebaut werden" habe ich nicht ganz verstanden, bitte um Erklärung wenn es geht. Gruß
Hallo nochmal, das Problem liegt an der Nummer der Schnittstelle, bei dem Ft232R kriegt COM14, beim dem FT2232 COM6, und COM7. Ich glaube das Problem liegt an der Schreibweise von dem "COM"-String, wenn die Nummer größen als 9 ist. Wie muß man es denn schreiben? "COM 14"?
Alex wrote:
> Wie muß man es denn schreiben? "COM 14"?
Moin Alex!
Bei uns funktioniert schon seit Ewigkeiten (VC++):
com.Format("\\\\.\\COM%d",Port);
HTH
Jens
Na, das freut mich! Das "\\.\" (wie es nachher im String steht) ist der UNC-Pfad für lokale Laufwerke und Geräte unter Windoofs, siehe Wikipedia->UNC. Warum diese Angabe allerdings in dieser Form für COM-Ports über 10 bei Windoofs erforderlich ist, bei den darunter auch die Angabe ohne den Schnickschnack vorweg, dass wissen wohl einzug und allein die Programmieraffen in Redmond. Wenn überhaupt... Ich habe den Tip auch vor einigen Jahren von Druidenohr zu Druidenohr erfahren. Vielleicht hilft dieser Thread ja auch in Zukunft den Verirrten und Verzweifelten ;-) IdS, Jens
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.