Wie geht Win-COM-Kanal auswahl bei PiPico

OP #8086879
Lesenswert?

Ich handle gerade mit mehren PiPicos herum. Dabei habe ich festgestellt, dass jeder Pico sich einen der Comkanäle 3 bis 9 aussucht. Ich habe in der API nichts gefunden, wo das im jeweiligen Pico festgelegt ist. So muß ich im Windows-Gerätemanager immer erst den aktuellen suchen, zumal bei mehreren Picos keine Indentifikation angezeigt wird. An eine zufällige Vergabe kann ich nicht glauben, da jeder Pico immer den gleichen Kanal wählt.
Wer weiß, wie das funktioniert?

#8086881
Lesenswert?

Windows weist einen freien Platz zu und merkt sich anhand der Geräteseriennummer (wenn denn eine dabei abgeliefert wird) welche.
Wenn die dann noch frei ist gibt's die wieder, sonst wird gewechselt.
Im Gerätemanager kannst du manuell einen zuweisen, das ist der offizielle Weg.
Aber das ist eben PC-spezifisch, d.h. 3 hier ist nicht unbedingt 3 da.

: Bearbeitet durch User
#8086893
Lesenswert?

Rudi schrieb:

Wenn ich nun aber ein Win-Programm schreibe (QT), dann soll ich zum Verbindungsaufbau eine Com-Nr angeben. Aber welche, wenn es von der Pico Intent-nr abhängt, die ich nicht kenne.

Es gibt eine API Funktion, die alle verfügbaren COM Ports mit Name auflistet. Du könntest den Raspi am Namen erkennen.

Bei QT wäre dazu QSerialPortInfo.description() dein Anlaufpunkt.

: Bearbeitet durch User
#8086998
Lesenswert?

Unter Linux sieht die Auswahlliste in einer meiner QT Anwendungen so aus:

1
QStringList getSerialPorts() {
2
    QStringList result;
3
    QString fmt("%1 %2");
4
    foreach(QSerialPortInfo info, QSerialPortInfo::availablePorts()) {
5
        result.append(fmt.arg(info.portName()).arg(info.description()));
6
    }
7
return result;

Das geht auch unter Windows, ich habe nur gerade keinen Screenshot davon parat.

Angehängte Dateien:
: Bearbeitet durch User
#8087057
Lesenswert?

Deine Picos melden sich wahrscheinlich als CDC-ACM an, und Windows vergibt dann COM-Ports.

Kann man auch anders machen. Wenn es nicht um große Datenmengen geht, wäre ein Custom HID eine Möglichkeit. Das ist ein HID, das keine der vordefinierten Klassen (Tastatur, Maus,...) implementiert, sondern eine selbst definierte.

Vorteile:

  • Es muss niemals ein Treiber installiert werden.
  • Der Benutzer muss nie einen COM-Port auswählen, die Software geht alle HIDs durch und sucht sich selber die passenden aus.
  • Kein Fremdprogramm kann versehentlich auf das eigene Gerät zugreifen. Beispiel: Modem als serielle Maus erkennen oder ähnliches.

Nachteile:

  • geringere Datenrate
  • keine einfache Testmöglichkeit
  • eventuell etwas höherer Programmieraufwand.

Codebeispiel: https://github.com/libusb/hidapi

#8087316
Lesenswert?

Niklas G. schrieb:

Frank K. schrieb:

Custom HID

Man kann auch ohne HID ein komplett custom USB-Protokoll umsetzen, das hat alle Vorteile von HID und man kann die volle Datenrate von Bulk-Endpoints nutzen. Mit WinUSB braucht man dann ebenfalls keine Treiber nachinstallieren, d.h. auch keine Admin-Rechte nötig.

Unter Windows ab 8 ja. Bei Linux muss man dann trotzdem noch eine passende libusb nachinstallieren, wenn man die Bibliothek nicht selber nachimplementieren will. Beim Mac weiß ich es nicht, hab ich nie gemacht. HID ist hier einfacher, und oft reicht es auch.

fchk

#8087321
Lesenswert?

Am Einfachsten wäre es allerdings einfach auf das zu antworten was der OP gefragt hat. Denn offensichtlich scheint eine bequeme serielle Verbindung völlig ausreichend zu sein.

Und ich kann mir beim besten Willen nicht vorstellen, dass Windows (vielleicht mit etwas manueller Hilfe) nicht in der Lage ist iSerial zu lesen und zu berücksichtigen.

Persönliche Seite #8087452
Lesenswert?

Frank K. schrieb:

Bei Linux muss man dann trotzdem noch eine passende libusb nachinstallieren, wenn man die Bibliothek nicht selber nachimplementieren will.

Naja die zu installieren ist auch kein Hexenwerk, und oft ist sie sowieso vorinstalliert. Im schlimmsten Fall liefert man sie zusammen mit dem Programm aus. Für HID müsste man auch die hidapi Library mitliefern, also kein Vorteil.

#8087466
Lesenswert?

Niklas G. schrieb:

Frank K. schrieb:

Bei Linux muss man dann trotzdem noch eine passende libusb nachinstallieren, wenn man die Bibliothek nicht selber nachimplementieren will.

Naja die zu installieren ist auch kein Hexenwerk, und oft ist sie sowieso vorinstalliert. Im schlimmsten Fall liefert man sie zusammen mit dem Programm aus. Für HID müsste man auch die hidapi Library mitliefern, also kein Vorteil.

Die hidapi Library habe ich nie benutzt und auch nicht vermisst.

fchk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren