| Item-Tag | Beschreibung |
| Usage |
Spezifiziert den Usage Index und ergibt zusammen mit der Usage Page die fertige Gruppe. |
| Usage Minimum |
Definiert den Startwert für eine Gruppe von Anwendungszwecken für mehrere Eingabemethoden. |
| Usage Maximum |
Definiert den Endwert für eine Gruppe von Anwendungszwecken für mehrere Eingabemethoden. |
| Designator Index |
Bezeichner eines entsprechenden Physical-Deskriptors um die Art der Eingabe zu definieren. |
| Designator Minimum |
Definiert den Startwert für eine Gruppe von Bezeichnern für mehrere Eingabemethoden. |
| Designator Maximum |
Definiert den Endwert für eine Gruppe von Bezeichnern für mehrere Eingabemethoden. |
| String Index |
Index des String-Deskriptors um die jeweilige Eingabemethode zu beschreiben. |
| String Minimum | Legt den Startwert für eine Gruppe von Strings fest um mehrere Eingabemethoden zu benennen. |
| String Maximum | Legt den Endwert für eine Gruppe von Strings fest um mehrere Eingabemethoden zu benennen. |
| Delimiter |
Definiert den Angang (1) oder das Ende (0) eines lokalen Elements. |
| Item-Tag | Beschreibung |
| Input | Ausgelesene Daten von einem oder mehreren Steuerungselementen. |
| Output | Daten für die Steuerung von einem oder mehreren Elementen. |
| Feature | Ein- oder Ausgabedaten, die nicht für eine Interaktion mit dem Nutzer verwendet werden. |
| Collection | Eine Gruppierung von Input-, Output- oder Feature-Items. |
| End Collection | Markiert das Ende einer Collection. |
| Item-Tag | Beschreibung |
| Usage Page |
Spezifiziert die Usage Page der verwendeten Elemente. |
| Logical Minimum |
Kleinste logische Einheit die übertragen wird. |
| Logical Maximum |
Größte logische Einheit die übertragen wird. |
| Physical Minimum |
Das Feld Logical Minimum in physikalische Größen umgerechnet. |
| Physical Maximum |
Das Feld Logical Maximum in physikalische Größen umgerechnet. |
| Unit Exponent |
Einheitenexponent zur Basis 10 (z. B. 3 für Kilo) |
| Unit |
Einheiten-ID um die Einheit des Datenfeldes festzulegen (z. B. 2 für Masse). |
| Report Size |
Legt die Größe eines Datenfeldes für ein Element in Bit fest. |
| Report ID |
Report ID für ein Element. Wenn ein Report ID-Element genutzt wird, werden alle Reports um ein 8-bit großes Datenfeld für die ID erweitert. |
| Report Count |
Legt die Anzahl der Datenfelder für ein Element fest. |
| Push |
Platziert eine Kopie der globalen Statustabelle der Elemente auf dem Stack. |
| Pop |
Ersetzt die Statustabelle für die Elemente mit der aktuellen Tabelle vom Stack. |
| bmRequestType | bReqest | wValue | wIndex | wLength | Data |
| 0xA1 | GET_REPORT (1) |
Art des Reports und die Report-ID | Interface | Länge des Reports | Report |
| 0xA1 | GET_IDLE (2) |
0 | Interface | 1 | Idle-Zeit |
| 0xA1 | GET_PROTOCOL (3) |
0 | Interface | 1 |
0 – Boot-Protokoll 1 – Report Protokoll |
| 0x21 | SET_REPORT (9) |
Art des Reports und die Report ID | Interface | Länge des Reports | Report |
| 0x21 | SET_IDLE (10) |
Idle-Zeit und Report-ID | Interface | 0 | – |
| 0x21 | SET_PROTOCOL (11) |
0 – Boot-Protokoll 1 – Report Protokoll |
Interface | 0 | – |
| Offset | Feld | Größe | Beschreibung |
| 0 | bLength | 1 | Größe des Deskriptors in Bytes |
| 1 | bDescriptorType | 1 | HID-Deskriptor (Feld = 0x21) |
| 2 | bcdHID | 2 | Verwendete Version der HID-Spezifikation |
| 4 | bCountryCode | 1 | Ländercode für die verwendeten Hardware |
| 5 | bNumDescriptors | 1 | Anzahl der Klassendeskriptoren (muss mind. 1 betragen). |
| 6 | bDescriptorType | 1 | Typ des nachfolgenden Deskriptors |
| 7 | wDescriptorLength | 2 | Länge des Deskriptors |
| 9 | [bDescriptorType] | 1 | Typ des optional nachfolgenden Deskriptors |
| 10 | [wDescriptorLength]] | 2 | Länge des optionalen Deskriptors |
| Offset | Length | Description |
|---|---|---|
| 0x00 | 3 bytes | Part of the bootstrap program. |
| 0x03 | 8 bytes | Optional manufacturer description. |
| 0x0b | 2 bytes | Number of bytes per block (almost always 512). |
| 0x0d | 1 byte | Number of blocks per allocation unit. |
| 0x0e | 2 bytes | Number of reserved blocks. This is the number of blocks on the disk that are not actually part of the file system; in most cases this is exactly 1, being the allowance for the boot block. |
| 0x10 | 1 byte | Number of File Allocation Tables. |
| 0x11 | 2 bytes | Number of root directory entries (including unused ones). |
| 0x13 | 2 bytes | Total number of blocks in the entire disk. If the disk size is larger than 65535 blocks (and thus will not fit in these two bytes), this value is set to zero, and the true size is stored at offset 0x20. |
| 0x15 | 1 byte | Media Descriptor. This is rarely used, but still exists. . |
| 0x16 | 2 bytes | The number of blocks occupied by one copy of the File Allocation Table. |
| 0x18 | 2 bytes | The number of blocks per track. This information is present primarily for the use of the bootstrap program, and need not concern us further here. |
| 0x1a | 2 bytes | The number of heads (disk surfaces). This information is present primarily for the use of the bootstrap program, and need not concern us further here. |
| 0x1c | 4 bytes | The number of hidden blocks. The use of this is largely historical, and it is nearly always set to 0; thus it can be ignored. |
| 0x20 | 4 bytes | Total number of blocks in the entire disk (see also offset 0x13). |
| 0x24 | 2 bytes | Physical drive number. This information is present primarily for the use of the bootstrap program, and need not concern us further here. |
| 0x26 | 1 byte | Extended Boot Record Signature This information is present primarily for the use of the bootstrap program, and need not concern us further here. |
| 0x27 | 4 bytes | Volume Serial Number. Unique number used for identification of a particular disk. |
| 0x2b | 11 bytes | Volume Label. This is a string of characters for human-readable identification of the disk (padded with spaces if shorter); it is selected when the disk is formatted. |
| 0x36 | 8 bytes | File system identifier (padded at the end with spaces if shorter). |
| 0x3e | 0x1c0 bytes | The remainder of the bootstrap program. |
| 0x1fe | 2 bytes | Boot block ’signature‘ (0x55 followed by 0xaa). |
Spezifiziert die unterstützten Sprachen der Strings
| Offset | Feld | Größe | Beschreibung |
| 0 | bLength | 1 | Größe des Deskriptors in Bytes |
| 1 | bDescriptorType | 1 | STRING-Deskriptor (Feld = 0x03) |
| 2 | wLANGID[0] | 2 | LANGID Code 0 |
| … | … | … | … |
| 2 + x * 2 | wLANGID[x] | 2 | LANGID Code x |
| Offset | Feld | Größe | Beschreibung |
| 0 | bLength | 1 | Größe des Deskriptors in Bytes |
| 1 | bDescriptorType | 1 | STRINGDeskriptor (Feld = 3) |
| 2 | bString | n | n Zeichen langer String im Unicode Format |
| Transferart | Paketgrößen in Bytes | Beschreibung |
| Bulk |
Low Speed: Nicht erlaubt Full Speed: 8, 16, 32, 64 High Speed: Bis zu 512 |
Der Bulk Transfer wird immer dann genutzt, wenn viele Daten fehlerfrei übertragen werden müssen. In diesem Modus wird die Bandbreite auf Grund der Fehlerkontrolle nicht garantiert. |
| Interrupt |
Low Speed: 1 bis 8 Full Speed: 1 bis 64 High Speed: Bis zu 1024 |
Der Interrupt Transfer wird dort eingesetzt, wo normalerweise Interrupts genutzt würden um das Vorhandensein von Daten zu signalisieren. Wird in den meisten Fällen für die Kommunikation vom Device zum Host genutzt. |
| Isochronous |
Low Speed: Nicht erlaubt Full Speed: Bis zu 1023 High Speed: Bis zu 1024 |
Beim Isochronous Transfer wird eine feste Bandbreite im Austausch für die Fehlerfreiheit garantiert. Diese Art der Übertragung wird z. B. im Audio- oder Videobereich genutzt. |
| Control |
Low Speed: 8 Full Speed: 8, 16, 32, 64 High Speed: 64 |
Ein bidirektionaler Transfer, der sowohl eine IN, wie auch eine OUT Transaktion nutzt. Der Control Transfer wird ausschließlich für die Konfiguration des Gerätes genutzt und überträgt Daten nur zum Endpunkt 0. Jeder Control Transfer besteht aus einer SETUP, einer DATA und einer STATUS Stage. Die SETUP Stage beschreibt die Anfrage vom Host und die DATA Stage beinhaltet die Daten vom Gerät, falls notwendig. |
| Offset | Feld | Größe | Beschreibung |
| 0 | bLength | 1 | Größe des Deskriptors in Bytes |
| 1 | bDescriptorType | 1 | INTERFACE-Deskriptor (Feld = 0x04) |
| 2 | bInterfaceNumber | 1 | Interface ID |
| 3 | bAlternateSetting | 1 | Alternative Einstellungen für dieses Interface |
| 4 | bNumEndpoints | 1 | Anzahl der Endpunkte, die für dieses Interface genutzt werden (ohne Endpunkt 0) |
| 5 | bInterfaceClass | 1 | Durch das USB-IF vergebener Klassencode |
| 6 | bInterfaceSubClass | 1 | Durch das USB-IF vergebener Subklassencode |
| 7 | bInterfaceProtocol | 1 | Durch das USB-IF vergebener Protokollcode |
| 8 | iInterface | 1 | Index des Stringdeskriptors, der dieses Interface beschreibt |
| Offset | Feld | Größe | Beschreibung |
|
| 0 | bLength | 1 | Größe des Deskriptors in Bytes | |
| 1 | bDescriptorType | 1 | KONFIGURATIONS-Deskriptor (Feld = 0x02) | |
| 2 | wTotalLength | 2 | Größe dieses und aller anderen Deskriptoren | |
| 4 | bNumInterfaces | 1 | Anzahl der Interfaces, die durch diesen Deskriptor unterstützt werden | |
| 5 | bConfigurationValue | 1 | Index der durch eine SET_CONFIGURATION-Anfrage genutzt werden muss um diese Konfiguration zu laden | |
| 6 | iConfiguration | 1 | Index des Stringdeskriptors, der diese Konfiguration beschreibt | |
| 7 | bmAttributes | 1 | Bit 7 | 1 |
| Bit 6 | Self-powered | |||
| Bit 5 | Remote Wakeup | |||
| Bit 4 – 0 | 0 | |||
| 8 | bMaxPower | 1 | Maximale Stromaufnahme des Gerätes in 2 mA Schritten | |
| Offset | Feld | Größe | Beschreibung |
| 0 | bLength | 1 | Größe des Deskriptors in Bytes |
| 1 | bDescriptorType | 1 | GERÄTE-Deskriptor (Feld = 0x01) |
| 2 | bcdUSB | 2 | Verwendete USB Version |
| 4 | bDeviceClass | 1 | Durch das USB-IF vergebener Klassencode |
| 5 | bDeviceSubClass | 1 | Durch das USB-IF vergebener Subklassencode |
| 6 | bDeviceProtocol | 1 | Durch das USB-IF vergebener Protokolcode |
| 7 | bMaxPacketSize0 | 1 |
Maximale Paketgröße für Endpunkt 0. Muss entweder 8, 16, 32 oder 64 sein |
| 8 | idVendor | 2 | Durch das USB-IF vergebene Vendor-ID |
| 10 | idProduct | 2 | Durch den Hersteller vergebene Produkt-ID |
| 12 | bcdDevice | 2 | Releasenummer des Gerätes |
| 14 | iManufacturer | 1 | Index des Stringdeskriptors, der den Hersteller beschreibt |
| 15 | iProduct | 1 | Index des Stringdeskriptors, der das Produkt beschreibt |
| 16 | iSerialNumber | 1 | Index des Stringdeskriptors, der die Seriennummer beschreibt |
| 17 | bNumConfigurations | 1 | Anzahl der Gerätekonfigurationen |
| Offset | Feld | Größe | Beschreibung |
|
| 0 | bLength | 1 | Größe des Deskriptors in Bytes | |
| 1 | bDescriptorType | 1 | ENDPOINT Deskriptor (Feld = 5) | |
| 2 | bEndpointAddress | 1 | Adresse des Endpunktes | |
| Bit 7: Richtung |
0 = OUT 1 = IN |
|||
| Bit 6 – 4 | 0 | |||
| Bit 3 – 0: Endpunktnummer |
0 – 15 | |||
| 3 | bmAttributes | 1 | Bit 7 – 6 | 0 |
| Bit 5 – 4: Verwendung |
Nur für Isochrone Endpunkte. Andernfalls 0. 0 = Data endpoint |
|||
| Bit 3 – 2: Synchronisation |
Nur für Isochrone Endpunkte. Andernfalls 0. 0 = No Synchronisation |
|||
| Bit 1 – 0: Transfer |
0 = Control 1 = Isochronous 2 = Bulk 3 = Interrupt |
|||
| 4 | wMaxPacketSize | 2 | Maximale Paketgröße, die dieser Endpunkt senden oder empfangen kann | |
| 6 | bInterval | 1 | Polling Intervall für den Endpunkt in ms Schritten für Low und Full Speed Devices oder in 125 us Schritten für High Speed Devices | |
| bmRequestType | bReqest | wValue | wIndex | wLength | Data |
|
0x00 0x01 0x02 |
CLEAR_FEATURE (1) |
Feature |
Null Interface Endpunkt |
0 | – |
| 0x80 | GET_CONFIGURATION (8) |
0 | 0 | 1 | Konfiguration |
| 0x80 | GET_DESCRIPTOR (6) |
Deskriptortyp (H) und Deskriptorindex (L) |
Null oder Sprach ID | Länge des Deskriptors | Deskriptor |
| 0x81 | GET_INTERFACE (10) |
0 | Interface | 1 | Interface |
|
0x80 0x81 0x82 |
GET_STATUS (0) |
0 |
0 Interface Endpunkt |
2 | Gerät-, Interface- oder Endpunktstatus |
| 0x00 | SET_ADDRESS (5) |
Geräteadresse | 0 | 0 | – |
| 0x00 | SET_CONFIGURATION (9) |
Konfiguration | 0 | 0 | – |
| 0x00 | SET_DESCRIPTOR (7) |
Deskriptortyp (H) und Deskriptorindex (L) |
Null oder Sprach ID | Länge des Deskriptors | Deskriptor |
|
0x00 0x01 0x02 |
SET_FEATURE (3) |
Feature |
0 Interface Endpunkt |
0 | – |
| 0x01 | SET_INTERFACE (11) |
Interface | Interface | 0 | – |
| 0x82 | SYNCH_FRAME (12) |
0 | Endpunkt | 2 | Framezähler |
Hallo,
das ist eine sehr umfangreiche tolle Seite. Ich den Webserver lighttpd installiert und getestet – alles läuft wie beschrieben. Beim Testen meiner eigenen PHP Seiten, habe ich festgestellt, dass Links mit Variablen z.B. test.php?var1=3 die Variable nicht übergeben. Mus ich dazu in der Lighttpd.config weitere Änderungen vornehmen?
Über einen Tipp würde ich mich sehr freuen, denn ich kenne mich weder mit Linux noch mit WebServer gut aus.
Grüße
Frank
Hey,
mmmh habe ich noch nicht wirklich ausprobiert. Da kann ich dir selber nichts zu sagen, sorry.
Aber schau mal vielleicht hilft dir das hier weiter:
http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite
Gruß
Daniel
Hallo Daniel,
mit ModRewrite kann die URL umgebaut werden, bevor sie ausgeführt wird. Bei meinem Problem mit PHP und GET hilft das nicht. Derzeit glaube ich noch immer, dass der Lighttpd-Konfiguration etwas fehlt, aber was…
Grüße
Frank
Hallo,
ich habe schon seit einiger Zeit mit Python auf dem Raspberry Pi programmiert. Jetzt würde ich gerne mit Java anfangen. Ich finde aber keine gute Seite im Internet, wo erklärt wird, wie man es installieren kann. Außerdem habe ich meinen Raspberry Pi nicht ans Internet angeschlossen. Kann ich mir Java vielleicht am Windows-PC downloaden und dann mit einem USB-Stick auf den Raspberry Pi laden?
LG
Mathias
Hey Mathias,
mmh da weiß ich jetzt auch nicht weiter.
Besteht nicht eben die Möglichkeit den Pi ans Netz zu hängen und die Java Maschine zu installieren?
Den eigentlichen Java Code kannst du dann ja am Rechner schreiben und aufs Pi kopieren und schließlich da ausführen.
Gruß
Daniel
Hi,
danke für die Antwort! Werde mal sehen ob ich mir noch einen W-LAN Stick für den Raspberry Pi besorge und mir Java runterlade.
Mathias
Hi
Sehr informative Seite.
Da einer meiner Pi repariert werden muß fand ich den Schaltplan sehr hilfreich.
Gibt es eigenlich auch einen Bestückungsplan dazu?
Danke
Hallo Andre,
mmh also ich habe bisher keinen gefunden. Wofür brauchst du den einen Bestückungsplan? Die Kennzeichnung der Bauteile sind doch alle auf dem Board zu finden (oder meinst du vielleicht eine BOM – also Stückliste).
Gruß
Daniel
Da mir vor ein paar Tagen der Raspberry Pi durch Überlastung abgestürzt ist, habe ich jetzt ein kleines Python-Programm entwickelt, dass bei zu großer Hitzte ein kleines GUI-Fenster öffnen soll. Zum auslesen der Prozessor-Temperatur habe ich die Datei
/sys/class/thermal/thermal_zone0/temp verwendet. Aber ich weiß nicht ab welcher Temperatur es „gefährlich“ wird. Außerdem möchte ich noch einen Button zum automatischen shutdown einfügen. Wie kann man das in Python machen? Und als letztes wollte ich das Programm noch bei jedem booten ausführen. Kann ich den Programmstart einfach in die Datei /etc/rc.local schreiben?
Hallo Mathias,
mmh…die kritische Temperatur für Silizium beträgt etwa 125°C. Du musst allerdings etwas Reserve einrechnen etc., weswegen ich so 80-90°C schätzen würde.
Ich nehme an, dass du für die GUI Python-Tk verwendet hast? Dann kannst du so einen Button einfügen:
http://www.python-kurs.eu/tkinter_buttons.php
Den Shutdown machst du dann einfach per „system“ Methode und dem Befehl „shutdown -h now“:
http://www.python-kurs.eu/os_modul_shell.php
Allerdings benötigt das Programm dann root-Rechte (aber braucht es mein ich ohnehin schon um die Datei zu lesen?).
Zum automatischen Ausführen kannst du zwei Dinge nehmen:
– Die „unsaubere“ Methode über rc.local
– Die „saubere“ Methode über ein Startskript (wie hier, nur mit deinem Python Programm statt Tightvnc https://kampis-elektroecke.de/?page_id=2655)
Die zweite Methode hat den Charm, dass du dein Programm jederzeit einfach beenden und neu starten kannst etc.
Gruß
Daniel
Hi,
danke für deine schnelle Antwort. Das mit dem Button einfügen wusste ich sowieso schon.
Mich hatte nur das herunterfahren interessiert. Mit den root-Rechten kenne ich mich leider nicht so gut aus. Immer wenn ich LXTerminal öffne bin ich schon als Benutzer root angemeldet. Keine Ahnung warum. Zum automatischen Start verwende ich lieber die „unsaubere“ Methode. Das jederzeit neu starten ist mir ohnehin nicht so wichtig.
Auf jeden Fall noch mal Danke!
Mathias
Ich habe das Problem jetzt schon selber gelöst. Ich habe, um zum Desktop zu gelangen, immer sudo startx verwendet. Jetzt habe ich bemerkt, dass startx auch genügt. Und kann ich nicht einfach os.system(„sudo shutdown -h now“) für das Programm eingeben? Dann sollte es doch funktionieren, oder?
LG Mathias