Forum: Mikrocontroller und Digitale Elektronik Arduino AVR USB 2 Mäuse über HUB


von Tuncay C. (tuncay1988)


Lesenswert?

Hallo Leute!

Ich habe einen Arduino Zuhause und habe mir das USB Host Shield von Oleg 
gekauft, nun will ich über einen HUB die X und Y Daten beider Mäuse 
abfragen.

Also X1 , X2, Y1, Y2. Ich habe seine Library downgeloadet und habe es 
geschafft eine Maus über den Hub anzusteuern aber sobald ich eine zweite 
dazu anschließe, funkts nicht und wenn ich den Code umschreibe sodass 
beide gehen sollten dann gibt es viele Störungen und ich bekomm nur ab 
und zu irgendwelche Signale wobei ich nicht genau weis was für welche.

Oleg selber meinte es könnte etwas mit der Poll funktion nicht stimmen

Hoffe es kann mir da jemand helfen

Mfg
Tuncay

von lovepeaceandwow (Gast)


Lesenswert?

es wird wohl an der codezeile 42 liegen..

von Tuncay C. (tuncay1988)


Lesenswert?

Kannst du mir das ein wenig erklären? Bin kein Informatiker :/

von PittyJ (Gast)


Lesenswert?

Wer ist eigentlich Oleg?
Und wenn er diese Library verzapft hat, warum kann er sie nicht 
reparieren? Ist er auch kein Informatiker?

von Tuncay C. (tuncay1988)


Lesenswert?

Vl. bin nur ich zu blöd es hinzukriegen, gibt es Alternativen? Oleg ist 
glaub ich der Entwickler vom USB Host shield

von Tuncay C. (tuncay1988)


Lesenswert?

Habe nun gelesen, dass man direkt das Signal vom Chip nehmen kann (SDIO) 
ohne über den USB Bus zu gehn. Wäre das eine Lösung um mehrere 
Mäusedaten zu bekommen? Kann mir wer da weiterhelfen?

Danke
Tuncay

von Kirl (Gast)


Lesenswert?

wie wäre mit Fotos und code zum mitsprechen

von helpi (Gast)


Lesenswert?


von Tuncay C. (tuncay1988)


Lesenswert?

Dies wäre ein etwas umgeschriebener Code, aber er funktioniert nicht :(

[code]#include <avr/pgmspace.h>
#include <avrpins.h>
#include <max3421e.h>
#include <usbhost.h>
#include <usb_ch9.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr/pgmspace.h>
#include <address.h>
#include <hidboot.h>
#include <printhex.h>
#include <message.h>
#include <hexdump.h>
#include <parsetools.h>

class MouseRptParser : public MouseReportParser
{
protected:
  virtual void OnMouseMove  (MOUSEINFO *mi);
  virtual void OnLeftButtonUp  (MOUSEINFO *mi);
  virtual void OnLeftButtonDown  (MOUSEINFO *mi);
  virtual void OnRightButtonUp  (MOUSEINFO *mi);
  virtual void OnRightButtonDown  (MOUSEINFO *mi);
  virtual void OnMiddleButtonUp  (MOUSEINFO *mi);
  virtual void OnMiddleButtonDown  (MOUSEINFO *mi);
};
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
{
    Serial.print("dx=");
    Serial.print(mi->dX, DEC);
    Serial.print(" dy=");
    Serial.println(mi->dY, DEC);
};
void MouseRptParser::OnLeftButtonUp  (MOUSEINFO *mi)
{
    Serial.println("L Butt Up");
};
void MouseRptParser::OnLeftButtonDown  (MOUSEINFO *mi)
{
    Serial.println("L Butt Dn");
};
void MouseRptParser::OnRightButtonUp  (MOUSEINFO *mi)
{
    Serial.println("R Butt Up");
};
void MouseRptParser::OnRightButtonDown  (MOUSEINFO *mi)
{
    Serial.println("R Butt Dn");
};
void MouseRptParser::OnMiddleButtonUp  (MOUSEINFO *mi)
{
    Serial.println("M Butt Up");
};
void MouseRptParser::OnMiddleButtonDown  (MOUSEINFO *mi)
{
    Serial.println("M Butt Dn");
};

USB     Usb;
USBHub     Hub(&Usb);


HIDBoot<HID_PROTOCOL_MOUSE> Mouse1(&Usb);
HIDBoot<HID_PROTOCOL_MOUSE> Mouse2(&Usb);

uint32_t next_time;

MouseRptParser                               Prs1;
MouseRptParser                               Prs2;

void setup()
{
    Serial.begin( 115200 );
    Serial.println("Start");

    if (Usb.Init() == -1)
        Serial.println("OSC did not start.");

    delay( 200 );

    next_time = millis() + 5000;

    Mouse1.SetReportParser(0,(HIDReportParser*)&Prs1);
    Mouse2.SetReportParser(0,(HIDReportParser*)&Prs2);
}

void loop()
{
  Usb.Task();
}[code]

von Tuncay C. (tuncay1988)


Lesenswert?

Hat keiner eine Idee?

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.