Forum: PC-Programmierung USB <> Serial Driver => report Data available to Application


von Chefkoch (Gast)


Lesenswert?

Hallo zusammen,

ich verwende in Qt 5.xx den Seriell Com Port zusammen mit einem DeLock 
USB-Seriell Wandler auf Windows 7.
Da ich abstraktionsseitig eher von der Registerebene komme, bin ich 
nicht ganz im klaren, wie mit COM-Port Treibern umzugehen ist; bzw. weiß 
nicht mal, ob die einem Standard folgen, was ich aber vermute.

>Zur Sache:
Die Kette müsste ja sein UsbPort->Betriebsystem->Treiber->Applikation
Wann meldet ein USB-Seriell Wandler einer Applikation sinngemäß "Data 
available"?
A) Immer dann, wenn etwas im Buffer des Treibers ist?
B) Immer dann wenn etwas im Buffer des Treibers ist, das mit ASCII NULL 
abgeschlossen ist
C) Konfigurierbar

Versteht mich nicht falsch, meine Kommunikation läuft, aber ich würde 
sie gerne optimieren.

viele Grüße!

von Max D. (max_d)


Lesenswert?

AFAIK ist option A der default, ob es konfigurierbare Varianten gibt 
weiß ich nicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der USB-Seriell-Wandler ist hier nicht relevant. Du programmierst eine 
serielle Schnittstelle. Daß die nicht mit einer 8250 am ISA-Bus 
aufgebaut ist, sondern in einem USB-Baustein enthalten ist, ist nicht 
weiter relevant, denn die Schnittstelle, die Du anfasst, ist die 
Schnittstelle, die das Betriebssystem (hier: Windows) Dir zur Verfügung 
stellt.

Deiner Anwendung meldet nicht der USB-Adapter, sondern das 
Betriebssystem, daß Daten verfügbar sind. Und das ist unabhängig von der 
verwendeten Hardware, ob ISA-Bus mit 8250, ob PCI-Karte, ob 
USB-Seriell-Bridge oder ob Ethernet-Deviceserver, dank entsprechender 
Treiber werden alle auf die gleiche Art und Weise angesprochen.

Stichwörter "Win32 serial port programming".

QT wiederum dürfte eigene Abstraktionsmechanismen enthalten, um 
betriebssytemunabhängig Funktionen zur Verfügung zu stellen.

Stichwörter "QT serial port programming".

von Pandur S. (jetztnicht)


Lesenswert?

USB-to-Serial bedeutet in der Regel, auf der Hardwareseite hast du ein 
UART, mit Rx, Tx, Handshake, und auf der PC Seite eine serielle 
Schnittstelle. Auf der PC Seite kannst du mit Openfile() und so oder mit 
einer Serialport library arbeiten. Ich empfehle Letzeres.
Was dazwischen ist, ist nett zu wissen, aber nicht noetig zu wissen.

: Bearbeitet durch User
von Pit (Gast)


Lesenswert?

Oh D. schrieb:
> Auf der PC Seite kannst du mit Openfile() und so oder mit
> einer Serialport library arbeiten.

Das heisst aber CreateFile()^^

Und wenn das keine echte RS232 ist sondern USB/VCP, dann ist das RS, TS 
und so weiter auch egal.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Pit schrieb:
> Das heisst aber CreateFile()^^

Das ist nicht wirklich relevant, OpenFile ist nur eine veraltete 
Alternative zu CreateFile, auch ohne die Störzeichen. Ist Deine Tastatur 
kaputt?


> dann ist das RS, TS und so weiter auch egal.

Was magst Du damit meinen? Handshakeleitungen? Woher kommt nur der 
Irrglaube, daß die bei USB-Seriell-Bridges nicht vorhanden wären?

von Pit (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Ist Deine Tastatur
> kaputt?

Ja, die ist schon uralt. Ich hab mich aber seit Jahren dran gewöhnt und 
bleib dabei.

Rufus Τ. F. schrieb:
> Was magst Du damit meinen? Handshakeleitungen? Woher kommt nur der
> Irrglaube, daß die bei USB-Seriell-Bridges nicht vorhanden wären?

Das sagt ja keiner.
Allerdings sind die Leitungen eher altbacken. Wer sowas noch braucht, um 
seine Geräte anzusteuern, der nimmt eine echte RS232 Schnittstelle 
(siehe TO).
Wer sich bereits (Schnittstellentechnisch) in der Modernen befindet und 
USB verwendet, der kann getrost auf die RS-, TS- und sonstwelche 
Leitungen verzichten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Pit schrieb:
> Allerdings sind die Leitungen eher altbacken.

Befreit von Ahnung und Wissen schreibt sich so etwas am einfachsten.

von Purzel H. (hacky)


Lesenswert?

>
Allerdings sind die Leitungen eher altbacken. Wer sowas noch braucht, um
seine Geräte anzusteuern, der nimmt eine echte RS232 Schnittstelle
(siehe TO).
Wer sich bereits (Schnittstellentechnisch) in der Modernen befindet und
USB verwendet, der kann getrost auf die RS-, TS- und sonstwelche
Leitungen verzichten.



USB To Serial ist eine richtge serielle Schnittstelle. Es gibt keine 
Andere, mehr. Ob man die Handshakeleitungen verwendet, oder nicht ist 
eine Sache des Geraetes auf der anderen Seite. Dieses kann aus irgend 
einer Zeit stammen. man kann die Handshake Leitungen auch fuer anderes 
wie Start-Stop verwenden.

von Jim M. (turboj)


Lesenswert?

Pit schrieb:
> Wer sich bereits (Schnittstellentechnisch) in der Modernen befindet und
> USB verwendet, der kann getrost auf die RS-, TS- und sonstwelche
> Leitungen verzichten.

Nö. Windoof kann ohne bei höheren Baudraten schon mal Daten verlieren, 
selbst wenn die Puffer im USB2Serial Chip hunderte Bytes groß sind. Man 
muss die CPU nur genügend auslasten.

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
Noch kein Account? Hier anmelden.