Forums Neueste Beiträge
 

USB-Device per Shell-Skript steuern/auslesen

14/01/2013 - 19:43 von Paul Muster | Report spam
Hallo,

ich habe hier ein USB-Thermometer, das ich auslesen möchte. (Bzw. zwei
davon, das ist z.T. der springende Punkt.) Es gibt C- und Perl-Code
dafür, die aber beide nicht (komplett) meine Anforderungen erfüllen.

Per udev unterscheide ich die beiden Thermometer und habe dann
/dev/thermometer1 und /dev/thermometer2, die ich als Parameter des
Shell-Skripts angeben möchte. Ausgabe des Skripts soll nur die
Temperatur sein, einfach xx.xx (ob das °C oder °F sind, weiß ich noch
nicht).

Die Thermometer tauchen als USB-HID-Devices auf:



usb 1-2.1.1: new low-speed USB device number 7 using xhci_hcd
usb 1-2.1.1: New USB device found, idVendor=0c45, idProductt01
usb 1-2.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-2.1.1: Product: TEMPer1V1.3
usb 1-2.1.1: Manufacturer: RDing
usb 1-2.1.1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
usb 1-2.1.1: ep 0x82 - rounding interval to 64 microframes, ep desc says 80 microframes
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
input: RDing TEMPer1V1.3 as /devices/pci-0/pci0000:00/0000:00:02.0/usb1/1-2/1-2.1/1-2.1.1/1-2.1.1:1.0/input/input1
hid-generic 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPer1V1.3] on usb-0000:00:02.0-2.1.1/input0
hid-generic 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPer1V1.3] on usb-0000:00:02.0-2.1.1/input1





1) Komme ich von der Shell aus überhaupt an HID-Devices ran? Über
libusb? Gibt es irgendwo Beispielcode dafür?

Wie erwàhnt gibt es C-Code:

https://github.com/bitplane/temper/...r/temper.c und
https://github.com/bitplane/temper/...pcsensor.c

2) Kann ich diesen C-Code irgendwie direkt in einem Shell-Skript
ablaufen lassen, ohne ihn nach jeder Änderung kompilieren zu müssen?


Den C-Code direkt verwenden kann ich nicht, weil ich nicht gezielt ein
bestimmtes der beiden Thermometer ansprechen kann.


Danke & viele Grüße

Paul
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
14/01/2013 - 23:46 | Warnen spam
Paul Muster wrote:
^^^^^^^^^^^
Ist das Dein richtiger Name? Falls nein, bitte den Eintrag àndern.

ich habe hier ein USB-Thermometer, das ich auslesen möchte. (Bzw. zwei
davon, das ist z.T. der springende Punkt.) Es gibt C- und Perl-Code
dafür, die aber beide nicht (komplett) meine Anforderungen erfüllen.



Anpassen, wenn erlaubt.

Per udev unterscheide ich die beiden Thermometer und habe dann
/dev/thermometer1 und /dev/thermometer2, die ich als Parameter des
Shell-Skripts angeben möchte. Ausgabe des Skripts soll nur die
Temperatur sein, einfach xx.xx (ob das °C oder °F sind, weiß ich noch
nicht).

Die Thermometer tauchen als USB-HID-Devices auf:
[…]

1) Komme ich von der Shell aus überhaupt an HID-Devices ran?



Im Prinzip ja. “Everything is a file.”

Über libusb?



Guck erstmal die Geràtedateien an; dafür gibt es /dev. Welche Datei welche
Information in welchem Format beinhaltet, steht hoffentlich in der
Treiberdokumentation; andernfalls ausprobieren oder RTSL.

Möglicherweise musst Du auch Deinen Kernel (um)konfigurieren und (neu)
kompilieren. Darin könnten Treiber für USB-Thermometer enthalten sein;
diese könnten entsprechende Geràtedateien bereitstellen.

Gibt es irgendwo Beispielcode dafür?



Vermutlich ja.

Wie erwàhnt gibt es C-Code:

https://github.com/bitplane/temper/...r/temper.c und



Leider steht da nichts zur Software-Lizenz. Müsste Mann[tm] also beim Autor
nachfragen.

https://github.com/bitplane/temper/...pcsensor.c



| * Redistribution and use in source and binary forms, with or without
| * modification, are permitted provided that the following conditions are
| * met:
| * * Redistributions of source code must retain the above copyright
| * notice, this list of conditions and the following disclaimer.

Sieht gut aus.

2) Kann ich diesen C-Code irgendwie direkt in einem Shell-Skript
ablaufen lassen, ohne ihn nach jeder Änderung kompilieren zu müssen?



Nein.

Den C-Code direkt verwenden kann ich nicht, weil ich nicht gezielt ein
bestimmtes der beiden Thermometer ansprechen kann.



Die Logik verstehe ich nicht. Zumindest eines der Programme ist sowas wie
Freie Software, also darfst Du es bereits an Deine Bedürfnisse anpassen.
Zum Beispiel könnte das Programm einen Parameter akzeptieren, der das
jeweilige Thermometer angibt. Diesen Parameter kann dann das Shell-Skript
an das kompilierte C-Programm weiterreichen.

PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Ähnliche fragen