Lupuz.de: Artikel-Portal / Magazin

Zurück   Postpla.net - die Forum Community > PC, Internet und Technik > Coder's Area

WinXp verzögert hid, Win2000 nicht! Warum?

Anzeigen:

Antwort
 
Themen-Optionen
f.degler
Alt 09.11.2007, 10:29   #1
Standard WinXp verzögert hid, Win2000 nicht! Warum?

Hallo,

ich habe eine SPI-USB-Bridge von Maxim, den 3420e, als HID konfiguriert.
Ziel war es das das Gerät auf allen Zielsystemen (Betriebssystemen) ohne
zusätzliche treiberinstallation läuft. Der Angeschlossene µC liefert
Daten, welche von einem in C# geschriebenen Programm ausgelesen und
dargestellt werden. Entwickelt habe ich unter Win2000. Da läuft die
kommunikation sehr gut und ohne Probleme. Das Anmelden auf anderen
Rechnern war wie gewünscht... dranstecken-->geht!. Allerdings nur auf
Win2000 Rechnern....
Unter WinXP meldet sich das HID genau so an. Aber in der Darstellung ist
ein Zeitverzögerung von etwa 250ms zu beobachten. Kann mir da wer
weiterhelfen? Ich habe den ausführenden Descriptor mal angehängt.

Das Problem ist ja auch das es prinzipiell läuft, aber eben mit 250 ms
Verzögerung. Alle gemessenen Werte sind vorhanden. Gibt es denn bei
WinXP einen eingangspuffer? Kann aber eigendlich nicht sein, denn eine
USB-Maus welche ich an einem Win2000 und WinXP System anschließe läuft
ja auch ohne problem. Daher vermute ich eigendlich, daß das Problem
nicht von meiner hardware herrührt und auch nicht aus dem hid.dll,
sondern von der Einbindung in C# zu finden ist. Allerdings finde ich da keine Ansätze
für was XP anders macht als 2000!


Bis dann und vielen Dank,
Florian

Code:
    unsigned char DD[]=  // DEVICE Descriptor
    {
        0x12,             // bLength = 18d
        0x01,      // bDescriptorType = Device (1)
        0x00,0x02,    // bcdUSB(L/H) USB spec rev (BCD)
        0x00,0x00,0x00,   // bDeviceClass, bDeviceSubClass,
bDeviceProtocol
        0x40,      // bMaxPacketSize0 EP0 is 64 bytes
        0xaa,0xaa,    // idVendor(L/H)--Maxim is 0B6A
        0x22,0x22,    // idProduct(L/H)--5346
        0x34,0x12,    // bcdDevice--1234
        1,2,3,      // iManufacturer, iProduct, iSerialNumber
        1      // bNumConfigurations
    };
    unsigned char CD[]=  // CONFIGURATION Descriptor
    {
        0x09,      // bLength
        0x02,      // bDescriptorType = Config
        0x29,0x00,    // wTotalLength(L/H) = 34 bytes
        0x01,      // bNumInterfaces
        0x01,      // bConfigValue
        0x00,      // iConfiguration
        0xe0,      // bmAttributes. b7=1 b6=self-powered b5=RWU
supported
        0x20,      // MaxPower is 2 ma
        // INTERFACE Descriptor
        0x09,      // length = 9
        0x04,      // type = IF
        0x00,      // IF #0
        0x00,      // bAlternate Setting
        0x02,      // bNum Endpoints
        0x03,      // bInterfaceClass = HID
        0x00,0x00,    // bInterfaceSubClass, bInterfaceProtocol
        0x00,      // iInterface
        // HID Descriptor--It's at CD[18]
        0x09,      // bLength
        0x21,      // bDescriptorType = HID
        0x10,0x01,    // bcdHID(L/H) Rev 1.1
        0x00,      // bCountryCode (none)
        0x01,      // bNumDescriptors (one report descriptor)
        0x22,      // bDescriptorType  (report)
        47,0,                   // CD[25]: wDescriptorLength(L/H)
(report descriptor size is 43 bytes)
        // IN-Endpoint Descriptor
        0x07,      // bLength
        0x05,      // bDescriptorType (Endpoint)
        0x83,      // bEndpointAddress (EP3-IN)
        0x03,      // bmAttributes  (interrupt)
        0x40,0,           // wMaxPacketSize (64)
        0x08,          // bInterval (poll every 8 msec)
        // OUT-Endpoint Descriptor
        0x07,      // bLength
        0x05,      // bDescriptorType (Endpoint)
        0x01,      // bEndpointAddress (EP1-OUT)
        0x03,      // bmAttributes  (interrupt)
        0x40,0,           // wMaxPacketSize (64)
        0x08      // bInterval (poll every 8 msec)
    };

    unsigned char RepD[] =
    {
        0x06, 0xA0, 0xff,              // USAGE_PAGE (Vendor Defined
Page 1)
        0x09, 0x01,                    // USAGE (Instance 1)
        0xa1, 0x01,                    // COLLECTION (Application)

        0x09, 0x03,                    //   USAGE (Instance 3) MAX to PC
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x95, cBytesToPc,              //   REPORT_COUNT (2)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x81, 0x02,                    //   INPUT (Data,Var,Abs)

        0x09, 0x04,                    //   USAGE (Instance 4) PC to
Device
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x95, cBytesToDevice,          //   REPORT_COUNT (2)
        0x91, 0x02,                    //   OUTPUT (Data,Var,Abs)

        0x09, 0x05,                    //   USAGE (Instance 4)
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x95, 0x02,                    //   REPORT_COUNT (2)
        0xb1, 0x02,                    //   OUTPUT (Data,Var,Abs)

        0xc0                           //     END_COLLECTION
    };
 
 
Nach oben
OrionX
Alt 09.11.2007, 12:30   #2
Standard

welche version von .NET hast du denn auf beiden systemen? da würde ich nach anhaltspunkten suchen.
 
 
Nach oben
f.degler
Alt 09.11.2007, 13:59   #3
Standard

auf beiden Rechnern läuft das .NET 2.0.
Ist im XP eventuell bereits das .NET enthalten? Mein Win2000 sagt mir unter zuletzt verwendet am... das aktuelle Datum. Der XP zeigt das installationsdatum vom .NET an. Das werde ich jetzt genauer anschauen.

Danke für den Tipp.

Florian
 
 
Nach oben
OrionX
Alt 12.11.2007, 12:50   #4
Standard

ich glaub mit sp2 kommt .NET rein, welche version weiss ich allerdings nicht, vermute aber das es net 1.1 ist, da bei der vc# express installation erstmal 2.0 installiert wird.
 
 
Nach oben
f.degler
Alt 22.11.2007, 09:27   #5
Standard

Richtig. Mit dem SP2 kommt .NET 1.1
Instaliert ist das .NET 2.0 da liegt der unterschied also nicht.

Was allerdings unterschiedlich ist ist die hid.dll. Im Win2000 ist die Version 5.0... installiert unter WinXP läuft hid.dll 5.1....

Hat da wer eine Idee?

Gruß
Florian
 
 
Nach oben
f.degler
Alt 08.01.2008, 08:57   #6
Standard geht immer noch nicht


Hallo,

ich habe mittlerweile herausgefunden, das wenn ich das system neu starte und das device dranhängt KEINE Verzögerung auf dem XP-Rechner ist. Kann es sein, das ein BIOS schon das HID initialisiert und das XP diesen dann einfach nutzt und dabei seinen eigenen Treiber "zurückstellt"? Kann ich das eventuell auch anderweitig herbeiführen?

Gruß
Florian
 
 
Nach oben
f.degler
Alt 23.01.2008, 13:56   #7
Standard Ich habs!!!!!

Hallo,

ich glaube das Problem identifiziert zu haben.
Es scheint wohl daran zu liegen, daß Win2000 keinen Datenpuffer für HIDs verwendet und WIN XP einen hat...
Das Problem ist vermutlich entstanden, weil ich mit 8 ms im Treiber polle aber nur mit 10 ms in C# abrufe....

Egal, hab die Pollingzeit auf 16ms erhöht! Bin mal gespannt ob das dann andere Probeme aufwirft.

Gruß,
Florian
 
 
Nach oben
Ähnliche Themen, die dich vielleicht interessieren
Thema Autor Forum Antworten Letzter Beitrag
Winxp grafikproblem schw. Bildschirm ich bins Betriebssysteme und Software 1 02.06.2005 15:25
2 mal winxp!!! aber nur eins benutzt (funktioniert)! [Auswahlmöglichkeit 1 enfernen] mjooh Betriebssysteme und Software 3 11.03.2004 21:25
BF 1942 und WinXP x-TrAx!oN Betriebssysteme und Software 0 23.08.2003 18:38
winxp --> win98 Comjoe Betriebssysteme und Software 15 30.09.2002 13:04
Wieviel Ram darfs den für WinXP sein? Rons Robert Betriebssysteme und Software 8 29.03.2002 20:25
Anzeigen:
Antwort

Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 17:29 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2008, Lupuz:Information-Network
Powered by vBulletin Version 3.7.1 (Deutsch), Jelsoft Enterprises Ltd.
Grüne Links?

SEO by vBSEO 3.1.0 ©2007, Crawlability, Inc.