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?
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.
Zum Testen komm ich damit klar.
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.
da jeder Pico immer den gleichen Kanal wählt.
Ist bei den ATMega32U4 und mit ATMega16U2 Arduinos genauso. Da wird die ChipId verwendet um eine Serialnummer für USB zu generieren.
Bei Anderen würfelt Windows.
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.
Es sollten dir diese Informationen bereit gestellt werden:
- idVendor
- idProduct
- iManufacturer
- iProduct
- iSerial
iSerial ist unique, da diese von der Flash-Chip Serial abgeleitet wird.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.