Hallo zusammen, Da der Betreff etwas allgemein ist, muss ich bei der Fragestellung etwas weiter ausholen: Es geht um ein Gerät, welches per USB an ein OWRT Gerät angeschlossen ist. Dieses stellt einen VCP und einen MSD zur Verfügung. Habe OWRT mittlerweile soweit, das der MSD als SDA1 gemounted werden kann und der VCP spricht über ACM mit mir. Damit sind die grundsätzlichen Sachen schon mal geschafft. Jetzt möchte ich 2 Progamme schreiben, eins als deamon und das andere als normales. Der deamon soll einfach nur prüfen, ob das Gerät angeschlossen ist und wenn ja, das 2. starten oder halt beenden wenn abgesteckt. Das 2te soll dann wenn gestartet, mit einem Webserver kommunizieren, aufs Dateisystem ( von Gerät ) zugreifen und mit ttyACM0 sprechen. Ihr seht, es gibt viel zu tun ;) Außerhalb von Linux/OWRT alles kein Problem für mich, aber hier bin ich etwas überfordert. Was brauch ich dafür und was muss ich tun um das umzusetzen? Die OWRT-Wikis hab ich mir angeschaut und soweit auch verstanden, aber mir tun sich da Fragen wie : Was muss ich includieren für fopen,fclose....? Wie Krieg ich die seriellen Daten von ttyACM? Ich hoffe ihr versteht ungefähr was ich meine. Weihnachtliche Grüße Hans
Hoi, die Aufgabenstellung ist ja nun trotz 2er Threads ( Beitrag "Unter Linux/Openwrt Treiber für andere VID/PID" ) nicht wirklich konkret, insbesondere ist unklar, was du auf dem Gerät eigentlich machen willst, aber: 1.) Den Daemon kannst du dir sparen. Da gibt es auch in OpenWRT hotplug/mdev/udev & Co. dazu, die auf "neues Gerät eingesteckt" Ereignisse reagieren. Sprich, durch entsprechende Konfiguration und evt. ein kleines Script zum Start deines Programms/mounten des Dateisystems kannst du dir den Aufwand schenken. 2.) Mit /dev/ttyACM* kannst du im einfachsten Fall via Shellscript kommunizieren, "echo bla > /dev/ttyACMx". Falls das ein Modem oder sowas sein sollte, gibt's dann chatscript oder expect-script für sowas. Du kannst natürlich auch das Gerät wie eine Datei öffnen und rein schreiben/lesen, das ist dann aber ne ganz neue Stufe Aufwand.
Noch ein paar Links zum Thema: 1.) OpenWRT verwendet im Normalfall "hotplug2": http://wiki.openwrt.org/doc/techref/hotplug Das kann man mit /bin/sh-Scripten anpassen, Beispiele siehe Seite. Das mounten macht man am besten via einer eindeutigen Device- oder UUID, da es dann automatisch geht. Innerhalb von eigenen Hotplug-Scripten ist das eher ein schlechter Hack, da die mount-Infrastruktur schon vorhanden ist und auch genutzt werden sollte. 2.) Man kann fast jedem Kernelmodul zur Laufzeit eine neue, nicht in der modulinternen Liste vorhandene Device/Vendor-ID unterschieben: http://www.ha19.no/usb/ ... was deinen anderen Thread beantworten dürfte. HTH
Hans M. schrieb: > Der deamon soll einfach nur prüfen, ob das Gerät angeschlossen ist und > wenn ja, das 2. starten oder halt beenden wenn abgesteckt. Prüfen ob ttyACM0 verfügbar ist: if [ -c /dev/ttyACM0 ]; then echo "Ist da!" <deinebefehlenachwahl> fi
Danke für die Antworten! @ LOL (Gast): Habe die Threads bewusst getrennt! Im ersten ging es um das verfügbar machen von Ressourcen ( VCP und MSD ) in/für OWRT. Im zweiten ( diesem ) geht es nun um die Benutzung. Womit >2.) Man kann fast jedem Kernelmodul zur Laufzeit eine neue, nicht in der >modulinternen Liste vorhandene Device/Vendor-ID unterschieben: > >http://www.ha19.no/usb/ > >... was deinen anderen Thread beantworten dürfte. im anderen Thread besser aufgehoben wäre ;-) >This procedure does not work with 'usbserial', the generic driver. Schau ich mir auch mal an, denn der Treiber, wär aus meiner Sicht besser geeignet als der ACM. Die Sachen mit hotplug und udev werd ich mir gleich ansehen. Es ist kein Modem, aber der ACM treiber hat sich automatisch geladen. Es ist ein virtueller ComPort über den ich mit einem HexProtokoll ( liegt mir vor ) mit dem Gerät kommunizieren kann: GeräteID auslesen, Parameter lesen/schreiben, etc... Und über das mass storage device ( sda1 ) wird auf die im Gerät steckende SD-Karte ( fat16/32 ) zugegrifffen. Da liegen n paar Config- und Logfiles drauf und auf deren Inhalt möchte ich zugreifen und die Daten an einen Webserver senden. Ich hoffe einige Unklarheiten erklärt zu haben. MfG Hans
Huhu, hab mir jetzt ein Image gebastelt, das soweit alles hat was ich brauch. Also USB-Storage, Fat und USB-Serial. Soweit danke für die Tips. Jetzt geht's ums benutzen, SDA1 und ttyUSB sind vorhanden und LUCI ( uHTTPd mit LUA_Interpreter) läuft auch. Hab überlegt, vllt gehts auch mit ner scriptsprache?! Spart Cross-Compiler und IDE und und und. Zu erst dachte ich an Python, aber das wird zu groß. dann bin ich über LUA gestolpert ( ist schon installiert wegen LUCI )! Könnt ich mein Vorhaben auch mit LUA umsetzen? Wenn ja, gibt's gleich Folgefragen ;) : Wie kann ich mit LUA auf Dateien, ttyUSB und HTTP zugreifen? Entschuldigt meine Unbeholfenen Schritte/Fragen, komme eigentlich aus der PC und uC Welt. Lese grad ein LUA-Tut, sieht noch so schlimm aus. Nur die Verbindung zur "Außenwelt" bereitet mir Kopfzerbrechen! Werd die Tage mal ein LUA-LED-Blink Versuch starten ;) LG Hans
Wie sieht es denn aus mit einem Shellscript
1 | #!/bin/sh
|
2 | file="/dev/ttyACM0" |
3 | |
4 | while true; do |
5 | if [ -f "$file" ]; then |
6 | echo "file found" |
7 | fi
|
8 | sleep 1 |
9 | done
|
Hi Ulli, Ja an die Shell hab ich auch schon gedacht, aber damit würde ich nicht alle meine Wünsche abdecken können. Glaub ich zumindest ;) Aktuell hab ich mir jetzt ein Image gebaut, das soweit alles enthält ( LUCI, USB-Sorage/Serial, fat filesystem, nixio, luasocket lib und LUA mysql ) Damit lässt sich schon recht komfortabel arbeiten: in Windows lua schreiben, per scp aufs Gerät und über Terminal testen. Jetzt hab ich fix meine Anforderungen zusammen geschrieben ( sind nur 15 Punkte ) und sammle Infos zusammen, Lib-Referenzen und Codebeispiele. Also rechnet in nächster Zeit mit vielen Fragen zu LUA :-P Bis hier her danke für die Antworten. Hans
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.