Hallo, Ist es möglich per USB einen Interrupt in Windows zu erzeugen? Wenn ja wie? Hintergrund: Ich habe einen Schlüsselschalter, der Windows melden soll ob und welcher Schlüssel gesteckt ist! Sobald dieser aber rausgezogen wird soll Windows eine Meldung bringen...
>...USB einen Interrupt in Windows... Ein USB-Device wird vom USB-Host in zyklischen Zeitabständen gepollt. Daher ist es per Definition nicht möglich, einen "Interrupt" von einem Slave an einen Host zu senden. Der einzige Weg ist, ein USB-Device zu programmieren, das den Schlüsselschalter an das OS meldet, wo wieder ein Stück Software darauf reagiert. >Sobald dieser aber rausgezogen wird soll Windows eine Meldung bringen Windows wird keine Meldung bringen, das ist nicht Aufgabe eines Betriebssystems. Du kannst aber ein Stück Software (aka Programm) schreiben, das eine Meldung anzeigt.
Ja aber da geht doch enorm viel Rechenleistung drauf, wenn ich sagen wir mal alle sekunde nachsehe ob was geschickt worden ist oder nicht... Vor allem wie mach ich das?
Das macht dein Windows doch eh schon, alle x ms beim Device nachfragen, ob was anliegt. Bei USB-2.0 "Gamer"-Mäusen sogar jede ms.... Da fällt einmal zusätzlich Nachfragen pro Sekunde wirklich nicht mehr auf..
Ich verstehe einfach das AVR-USB nicht! Jedesmal wenn ich es builden will kommen hunderte von Fehlern in der usbdrv.h dass ein "=",",",";" oder "asm" erwartet wird?!? Was mach ich denn da falsch? Wie kann ich denn über AVR-USB Daten an Windows schicken ohne vorher etwas an den Atmel geschickt zu haben?
Hatt denn niemand eine Idee? ../usbdrv.h:429: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char' ../usbdrv.h:435: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char' ../usbdrv.h:441: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char' ../usbdrv.h:447: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char' ../usbdrv.h:453: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' ../usbdrv.h:459: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' ../usbdrv.h:465: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' ../Schlüssel.c: In function 'usbFunctionSetup': ../Schlüssel.c:13: error: number of arguments doesn't match prototype ../usbdrv.h:171: error: prototype declaration Hier noch der Code:
1 | /* ------------------ forward declaration of descriptors ------------------- */
|
2 | /* If you use external static descriptors, they must be stored in global
|
3 | * arrays as declared below:
|
4 | */
|
5 | #ifndef __ASSEMBLER__
|
6 | extern
|
7 | #if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
|
8 | PROGMEM
|
9 | #endif
|
10 | char usbDescriptorDevice[]; |
11 | |
12 | extern
|
13 | #if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
|
14 | PROGMEM
|
15 | #endif
|
16 | char usbDescriptorConfiguration[]; |
17 | |
18 | extern
|
19 | #if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
|
20 | PROGMEM
|
21 | #endif
|
22 | char usbDescriptorHidReport[]; |
23 | |
24 | extern
|
25 | #if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
|
26 | PROGMEM
|
27 | #endif
|
28 | char usbDescriptorString0[]; |
29 | |
30 | extern
|
31 | #if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
|
32 | PROGMEM
|
33 | #endif
|
34 | int usbDescriptorStringVendor[]; |
35 | |
36 | extern
|
37 | #if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
|
38 | PROGMEM
|
39 | #endif
|
40 | int usbDescriptorStringDevice[]; |
41 | |
42 | extern
|
43 | #if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
|
44 | PROGMEM
|
45 | #endif
|
46 | int usbDescriptorStringSerialNumber[]; |
47 | |
48 | #endif /* __ASSEMBLER__ */ |
Hallo Thorsten ich war soeben selbst auf der Suche nach einer Problemlösung für diese Fehlermedlung. Das Problem ist gelöst: In einem eingebundenne h File hatte ich ein ";" vergessen. Gruss Franz-Juergen
man kann den Usb-port kurzschließen, das sollte windows sofort anzeigen.
Am Einfachsten wäre wohl ein USB-HID-Device, z.B. Joystick und ein kleines Programm, was den Zustand abfragt. Und eine grobe Vermutung zu Deiner Fehlermeldung: Höchstwahrscheinlich muss jeweils hinter PROGMEM ein Semikolon.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.