mehrere Pic Board an einem Rechner anschliessen (USB-hub) aber getrennt steuern

Gast #4356801
Lesenswert?

Hallo Zusammen,

Ich stehe vor folgenden Problem:

Ich habe einen Board, der einen PIC C18 Mikrocontroller hat.
Die Kommunikation mit dem Booard ist mittels eine USB Kabel.
Die Kommunikation lauft mittels einen vordefinierte protocol.

Um die Kommuniaktion mit dem Board zu vereinfachen(user freundlich), 
wurde einen GUI erstellt.
So kann man mit Button-Click einen Befehl ausführen.

Bis hier ist alles Okay und es lauft auch wie es sein muss.

Nun möchte ich statt nur einen Board 6 Board an gleichen PC anschlissen 
und jeweils getrennt steuern.
Meine Frage: Ist das machbar?
Wie kann ich dann unterscheiden zwischen Board_1 und Board_x?


Danke in voraus
Gast #4357572
Lesenswert?

Hallo Zusammen,


bei mir handelt es sich um eine Human Interfaces Devices.
Wenn es nur einen Board angeschlossen, kann ich Problemlos 
Einschalten/Ausschalten steuern also einwandfrei.

Sobald ich einen zweiten Board anschliesse, könnte ich ihm nicht 
steueren also ob es nicht existiert.
Ich muss die USB Kabel von der erste Board rausstecken, dann kann ich in 
diesem Fall der zweite Board steuern.


Mir ist das ganze Verlauf nicht ganz klar:
Wie soll ich zwischen die Boards unterschieden?
Alle Board haben eigentlich die gleiche Name "USB Descriptor ist gleich 
bei alle Board".
#4357883
Lesenswert?

Okocha schrieb:

> Alle Board haben eigentlich die gleiche Name "USB Descriptor ist gleich
> bei alle Board".

Siehst Du. Das solltest Du ändern.

Siehe 
http://www.beyondlogic.org/usbnutshell/usb5.shtml#DeviceDescriptors
und dort Nummer 16 iSerialNumber.

Die sollte ein Board eindeutig identifizieren.

fchk

PS: Die Seriennummer wird üblicherweise im EEPROM oder der letzten 
Flash-Page gespeichert oder aus einen 1-Wire ROM oder einem I2C-EEPROM 
mit eingebauter UID/MAC gelesen. Das Format ist nicht definiert, der 
String muss halt nur für jedes Devices einzigartig sein.
Gast #4364871
Lesenswert?

Hallo Frank,


ich danke es dir es hat geklappt.
Nun möchte ich die Boards einzeln mit nur einen GUI steuern.

Jetzt wenn ich z.B 3 Board steuern möchte muss ich die SW 3 mal starten.
Das ist nicht unbedingt praktisch.
Ich kann eigentlich alle 3 Board mit nur einen SW steuern, dafür muss 
die Kommunikation
eindeutich sein.

Die Frage ist soll ich bei jedem geschickten Befehl der SerialNummer 
mitübergeben oder wie
soll ich das ambesten tun?


Danke
#4364898
Lesenswert?

Die PC-Software hast du vermutlich nicht selbst geschrieben, sonst 
würdest du wohl nicht fragen.
Die Software muss alle USB-Geräte öffnen, mit denen kommuniziert werden 
soll. Bisher öffnet sie vermutlich einfach das erste passende, das über 
VID/PID gefunden wird.
Höchst wahrscheinlich muss die PC-Software geändert werden...
Gast #4365305
Lesenswert?

Volker S. schrieb:
> Die Software muss alle USB-Geräte öffnen, mit denen kommuniziert werden
> soll. Bisher öffnet sie vermutlich einfach das erste passende, das über
> VID/PID gefunden wird.

Ja das stimmt

Eine Frage habe ich noch: Kann ich mittels 
"HIDClass::MCHPHIDClass::...." die SERIAL " iSerialNumber:" Nummer 
rausfischen?
Gast #4365348
Lesenswert?

Die USB Verbindung wird so intialisiert:
1
HIDClass::MCHPHIDClass::USBHIDClassInit(VID,PID,64);
Ist das getun und die VID bzw. PID wie in die Firmware, dann könnte eine 
USB Verbindug hergestellt und mit der Firmware kommunitiziert.

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