Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

USB-COM Port wird nicht erkannt

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter Treytl



Anmeldungsdatum: 25.03.2016
Beiträge: 3

BeitragVerfasst am: 25.03.2016, 12:05    Titel: USB-COM Port wird nicht erkannt Antworten mit Zitat

Ich bitte um Hilfe bei folgendem Problem:
Ich möchte ein Messgerät mit USB-Schnittstelle (Microchip 18F4550) vom PC (WIN10) aus mittels FreeBASIC steuern. Dazu lade ich den entsprechenden USB-Treiber von Microchip (usbser.sys wird angezeigt) in den PC. Bei Anschluss des Messgerätes über die USB Schnittstelle wird im Gerätemanager und in der Registry des PC die verwendete COM-Schnittstelle (COM4) angezeigt. In FreeBASIC lässt sie sich aber nicht öffnen.
Ein Kommunikationsprogramm, das ich in VB.net geschrieben habe, erkennt die Schnittstelle und man kann auch mit dem Messgerät kommunizieren.
Ein weiteres Messgerät verwendet als Interface zu USB einen FTDI Chip (USART/USB). Mit den zugehörigen FTDI Geräte-Treibern arbeitet FreeBASIC einwandfrei zusammen (COM9). Das Gerät lässt sich einwandfrei vom PC aus mittels FreeBASIC steuern.
Was muss ich tun, damit FreeBASIC die für WIN sichtbare Schnittstelle ebenfalls erkennt? Da es sich um komplexe grafische Auswertungsprogramme handelt, die ich in FreeBASIC geschrieben habe, möchte ich nicht alles in VB neu programmieren.
Vielen Dank bereits jetzt
Peter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 25.03.2016, 16:42    Titel: Antworten mit Zitat

Im internationalen Forum gefunden:

http://www.freebasic.net/forum/viewtopic.php?f=6&t=24119

Ansonsten das Problem bei Dir mit kurzem Beispielcode vollständig dokumentieren (möglichst in Englisch) und als Bug den Entwicklern melden. Dabei auch ganz genaue Angaben zum PC (z.B. Lenovo ThinkCentre M57 6075-BQG) und Betriebssystem (z.B. Windows 7 Home Edition Service Pack 1 x64) und genaue Details zur USB-Hardware angeben, damit sich das Problem reproduzieren lässt.

Wichtig natürlich: Vorher aber noch die allerletzte Version des FB-Compilers (aktuel 1.05.0) verwenden (=> alles frisch übersetzen), um ganz sicher zu sein, ob das Problem nicht zwischenzeitlich bereits gelöst wurde.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.03.2016, 17:17    Titel: OPEN COM und die Datenfluss-Steuerung mit Hardware-Handshake Antworten mit Zitat

Hallo und willkommen im Forum!

Ein häufiges Problem beim Benutzen der COM-Ports in FreeBASIC ist, dass FB standardmäßig wohl Hardware-basiertes Handshaking für die Datenflusssteuerung (über die Leitungen DTR, DSR usw.) erwartet.
Siehe dazu https://de.wikipedia.org/wiki/Datenflusssteuerung#Serielle_Daten.C3.BCbertragung

Diesen Modus der Datenflusssteuerung kann man in üblichen Terminal-Programmen für serielle Schnittstellen (z. B. HyperTerminal) auch aktivieren (siehe http://webimg.ssteiner.de/view/htcom2.png).

Bei selbstgebauten Mikrocontrollerschaltungen setzt man diese hardwarebasierte Datenflusssteuerung über spezielle Zusatzleitungen aber meiner Erfahrung nach oft nicht um. Sondern hat nur die eigentlichen Datenleitungen RX und TX in Gebrauch, die man quasi "über Kreuz" mit den Leitungen der PC-Schnittstelle verbindet.

Siehe dazu: http://www.mikrocontroller.net/articles/RS-232#Flusssteuerung
Mikrocontroller.net Wiki hat Folgendes geschrieben:
Bei Mikrocontrollern wird jedoch sehr oft auf jegliche Flusssteuerung verzichtet, so dass nur die Leitungen von RxD, TxD und GND (Masse) verdrahtet werden. Diese Schnittstelle wird auch als 3-wire bezeichnet, da sie nur drei Drähte benötigt.

Wird vom PC-Programm aus aber die hardwarebasierte Flusssteuerung angenommen, kommt keine funktionierende Übertragung zustande.

Wegen der expliziten Schnittstellen-Konfiguration können sich zwischen individuellen FreeBASIC-Programmen und fertigen Tools / Lösungen in anderen Programmiersprachen Unterschiede ergeben.

Um in FreeBASIC eine einfache Datenübertragung hinzubekommen, die lediglich RX, TX und die Masse/GND als Leitungen benötigt, muss man die "Signalerkennung" auf den Handshake-Leitungen abschalten. Das passiert über Parameter in dem Konfigurations-String, den man OPEN COM mitgibt.

Ein kleines Programmbeispiel gibt es z. B. hier:
https://forum.qbasic.at/viewtopic.php?p=106896#106896

Man beachte insb. diesen Teil:
Code:
Const COMPortKonfig = "COM1:4800,N,8,1,ME,CS0,DS0,CD0,RS"

Hier muss die Baud-Rate entsprechend des Geräts eingetragen werden, z. B. wie hier 4800 Baud oder bspw. 9600 oder so. Eine automatische Erkennung der Baud-Rate wird m.W. nicht unterstützt.

Die kommaseparierten Parameter werden z. B. in der deutschsprachigen Befehlsreferenz zu OPEN COM erläutert:
Befehlsreferenz hat Folgendes geschrieben:

  • CSn Setze die CTS-Dauer (in ms) (n>=0), 0 = abschalten, Standard = 1000
  • DSn Setze die DSR-Dauer (in ms) (n>=0), 0 = abschalten, Standard = 1000
  • CDn Setze die "Carrier Detect"-Dauer (in ms) (n>=0), 0 = abschalten
  • OPn Setze "Open Timeout" (in ms) (n>=0), 0 = abschalten
  • RS Unterdrücken der RTS-Erkennung
  • ME Alle Fehler ignorieren

Ergänzend zu dem o.g. Beispiel-Konfigurations-String könnte man also noch OP0 ausprobieren.

In dem verlinkten Programmbeispiel werden eingehende Daten direkt auf den Bildschirm ausgegeben. Wenn man auf der Tastatur die [1] drückt, wird ein definierbares Kommando an das angeschlossene Gerät gesendet. Das Programm ist natürlich beliebig erweiterbar.

Viele Grüße & schöne Osterfeiertage!
Sebastian, der immer lieber mit ATMEL AVRs gebastelt hat happy
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Peter Treytl



Anmeldungsdatum: 25.03.2016
Beiträge: 3

BeitragVerfasst am: 25.03.2016, 18:12    Titel: Antworten mit Zitat

Euch beiden, lieber drael und lieber Sebastian, vielen Dank für die schnelle Antwort auf meine Frage. Ich werde Euren Hinweisen nachgehen, allerdings wird es etwas dauern, bis ich alles ausgetestet habe. Ich werde mich dann wieder melden.
Sollte ich auf keinen grünen Zweig kommen, werde ich den Vorschlag aufnehmen und das Problem in englischer Sprache zusammenfassen.
Auch Euch beiden ein frohes Osterfest
Peter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Peter Treytl



Anmeldungsdatum: 25.03.2016
Beiträge: 3

BeitragVerfasst am: 25.03.2016, 22:31    Titel: Antworten mit Zitat

Es funktioniert! Vielen Dank für den Hinweis auf das Handshaking. Nach entsprechender Einstellung der Parameter auf
comrtn=Open Com("COM4:9600,N,8,1,CS0,DS0,CD0" AS #a)
gibt es keine Probleme mehr.
Aus bisheriger Erfahrung und verschiedenen Publikationen war ich der Meinung, dass ein zur USB-Schnittstelle umgewidmeter COM-Port sowohl die eingestellte Datenrate als auch das Handshaking ignoriert. Beim FTDI-Treiber wird dem wohl Rechnung getragen, indem das Handshaking dem Datenfluss auf dem USB entsprechend vom Treiber generiert wird. Im Fall von Microchip wird der Standard USB-Treiber von Windows usbser.sys verwendet, der diese Signale wohl nicht zur Verfügung stellt. Wieder etwas dazugelernt!
Nochmals herzlichen Dank
Peter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.03.2016, 00:11    Titel: Antworten mit Zitat

Hallo Peter!

Das freut mich, dass es jetzt funktioniert!

Wenn das Projekt öffentlich sein darf, kannst Du es übrigens selbstverständlich auch sehr gerne im Forum vorstellen oder auf FreeBASIC-Portal.de zum Download veröffentlichen, wenn es fertig ist.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz