|
kraflm07
Anmeldungsdatum: Feb. 6, 2012
Beiträge: 4
|

6. Februar 2012 12:11
Hallo! Mein Problem ist folgendes: Wie kann man Treiber mithilfe von C/C++ auslesen?
Das heißt ich möchte die Treiberinformationen so "lesbar" wei bei z.B lsusb haben Vorallem will ich Treiber von USBtoSerial Converter Treiber auslesen. Soll ich da die Kernelmeldungen auslesen? Wenn ja, wie? oder hab ich da einen falschen Ansatz mfg
|
|
Lysander
Anmeldungsdatum: Juli 30, 2008
Beiträge: 2049
Wohnort: Clausthal
|

6. Februar 2012 12:56
Ich denke der beste Weg wäre die libudev zu benutzen. Hier mal ein Einstiegspunkt zu udev.
|
|
diesch
Supporter
Anmeldungsdatum: Feb. 18, 2009
Beiträge: 2677
Wohnort: Freiburg
|

6. Februar 2012 13:04
Ich würde mir im Source-Code von lsusb anschauen, wie das dort gemacht wird.
|
|
Lysander
Anmeldungsdatum: Juli 30, 2008
Beiträge: 2049
Wohnort: Clausthal
|

6. Februar 2012 13:10
diesch schrieb: Ich würde mir im Source-Code von lsusb anschauen, wie das dort gemacht wird.
Hm... sicher eine Option - aber wozu sich durch Code wühlen, wenn man für das andere sogar ein nettes Tutorial hat? 
|
|
track
Anmeldungsdatum: Juni 26, 2008
Beiträge: 3769
Wohnort: Wolfen (S-A)
|

6. Februar 2012 14:16
Hi kraflm07, erstmal willkommen hier auf dem Forum !
Vorallem will ich Treiber von USBtoSerial Converter Treiber auslesen.
Bei diesen externen Adaptern gibt es im Grunde gar nicht so viele Varianten, eigentlich nur 3 - 4 verschiedene Chiptypen, die überhaupt im Frage kommen. Die Chipttypen bekommst Du ja mit lsusb (bzw. dem entsprechenden Systemaufruf). Danach richtet sich dann, welcher Treiber dazu geladen wird (oder werden sollte) und wie Du ggf. den Chip zur Mitarbeit im gewünschten Modus überredest. Jetzt ist es natürlich die Frage: willst Du wissen, welcher Chip da dran hängt, oder ober der richtige Treiber geladen ist, oder in welchem Modus der Chip läuft, oder ...? Kannst Du nicht etwas mehr zum Hintergrund erzählen, was Du genau machen willst ? - eventuell ergibt sich da noch ein einfacherer Ansatz. (dabei dachte ich an ioctl() und ähnliches) LG, track
|
|
kraflm07
(Themenstarter)
Anmeldungsdatum: Feb. 6, 2012
Beiträge: 4
|

6. Februar 2012 14:56
Also ich will wissen welcher Chip dran hängt und welcher Treiber geladen ist. Ziel ist es ein Java-programm zu schreiben das über die Serielle schnittstelle mit Geräte kommuniziert.
Klassen für die Kommunikation sind fertig. Diese zeigen aber nicht an welcher Chip oder Treiber hinter "COM1" oder "/dev/tty" ist. Meine Aufgabe ist es jetzt das zu Lösen. Soll dann so sein das der Benutzer sieht was an zB COM1 ist. Ich glaube mit Java ist das nicht möglich Treiberinformationen auszulesen, deswegen versuche ich das dann mit dem JNI
|
|
track
Anmeldungsdatum: Juni 26, 2008
Beiträge: 3769
Wohnort: Wolfen (S-A)
|

6. Februar 2012 17:47
Mit Java bin ich nun wieder nicht richtig fit ... Welche Schnittstellen benutzt man da üblicherweise ? - kann man C- Prozeduren ansprechen ? (dann wäre alles in der Sektion 2 der man-pages der Ort wo Du suchen müsstest) Oder kannst Du gewöhnliche Konsolenaufrufe absetzen ? - dann könntest Du ja lsusb auslösen oder die Informationen im /proc- bzw. sysfs- System heraussuchen. Mehr als die USB-ID bekommst Du dann allerdings auch nicht, das umschlüsseln in konkrete Chips müsstest Du immer noch machen. (normalerweise hat jeder Treiber dafür seine Liste, für welche USB-IDs er sich zuständig fühlt und geladen wird) Hast Du Dir denn mal den Link von Lysander auf das Sysfs-Tutorial angesehen ? track
|
|
kraflm07
(Themenstarter)
Anmeldungsdatum: Feb. 6, 2012
Beiträge: 4
|

7. Februar 2012 19:49
track schrieb: Mit Java bin ich nun wieder nicht richtig fit ... Welche Schnittstellen benutzt man da üblicherweise ? - kann man C- Prozeduren ansprechen ? (dann wäre alles in der Sektion 2 der man-pages der Ort wo Du suchen müsstest)
Soweit ich weiß kann man da C oder C++ benutzen... Muss aber selber noch recherchieren wie das genau geht^^
Hast Du Dir denn mal den Link von Lysander auf das Sysfs-Tutorial angesehen ?
Den Link arbeite ich gerade durch. Soweit sieht das ganz gut aus^^
|
|
theinlein
Anmeldungsdatum: Dez. 29, 2007
Beiträge: 1078
|

8. Februar 2012 14:10
Hi, du fragst nach C/C++ und dein Ziel ist es, ein Java-Programm zu schreiben ... Wie wäre es mit http://www.oracle.com/technetwork/java/index-jsp-141752.html ? Wie der Chip heißt, musst du dafür gar nicht wissen.
|
|
kraflm07
(Themenstarter)
Anmeldungsdatum: Feb. 6, 2012
Beiträge: 4
|

8. Februar 2012 21:09
theinlein schrieb: Hi, du fragst nach C/C++ und dein Ziel ist es, ein Java-Programm zu schreiben ... Wie wäre es mit http://www.oracle.com/technetwork/java/index-jsp-141752.html ? Wie der Chip heißt, musst du dafür gar nicht wissen.
Mit der API ist die Kommunikation gelöst... hab aber keine Methode, oder ähnliches, gefunden das mir die Infos anzeigen könnte...
(Entweder bin ich zu blöd oder ich finde das einfach nicht^^) mfg
|
|
theinlein
Anmeldungsdatum: Dez. 29, 2007
Beiträge: 1078
|

9. Februar 2012 16:28
evtl. habe ich dich falsch verstanden? Du willst gar kein Kommunikationsproblem lösen, sondern du willst unter allen Umständen den Treiber etc. auslesen ... Dann mach dir ein Script, rufe das von deinem Java-Prozess auf und lies dessen stdout.
Das ist pflegeleichter, als wenn du nun mit C++ JNI nochmal anfängst und etwas selber schreibst und noch mehr Abhängigkeiten erbst (Libraries).
Hardware-/system-abhängig wirst du ohnehin.
|