zwischenbericht: brick läuft erstmal, alle abhängigkeiten sind installiert
negativ: man braucht den sog. brickdemon ... ich lgaub ich versteh was du mit treiber meinst ... aber die installation ist doch eigentlich ganz leicht
positiv: als ich hab jetzt keinen ultra starken magneten hier, aber man sieht wie das magnetsignal rumeiert, aber das stört die ausrichtung nicht im geringsten
Kommst du damit klar den service zu installieren oder ist das schon ein no-go?
Geändert von Ceos (25.07.2017 um 18:41 Uhr)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
hallo,
ich habe bislang Null Erfahrung mit demons und kenne sie nur vom Hörensagen. Ich weiß weder, wie man die installiert noch wie man sie startet, an sich wollte ich eine einfache Treiberlib oder Datentransfer mit einfachen Protokollen, wie sonst auch für i2c-, SPI- oder UART-Sensoren.
Was genau steckt denn aber hinter diesem speziellen demon, wie genau sind die Installations- und Startbefehle?
https://www.tinkerforge.com/en/doc/S...-install-linux
unter windows ist es einfach nur ne exe die man installiert
unter linux lädt man sich das ".deb" file runter und installiert es mit dem packagemanager
für den RaspberryPi mit Debian Lite sind es 3 zeilen
sudo apt-get install pm-utils
wget http://download.tinkerforge.com/tool...test_armhf.deb
sudo dpkg -i brickd_linux_latest_armhf.deb
pm-utils fehlt leider in der standard installation und wird auch nicht im guide erwähnt, aber bei der installation steht es dabei wenn es nicht installiert worden ist!
Konfigurieren musst du glücklicherweise nichts, ansonsten ist ein Demon nichts weiteres als ein "Dienst" also ein Programm dass bei Systemstart mitläuft und Funktionen anbietet
In diesem Fall erkennt der BrickDemon wenn ein Brick per USB angeschlossen wird und stellt ihn als Socketverbindung über localhost bereit
... Daher auch meine falsche Annahme dass der sich als USB Netzwerkkarte anmeldet ... wäre ja auch zu schön gewesen ...
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
hallo,
also das ist ja genau das, was mich von Anfang an abgeschreckt hat - das ist mir eindeutig zu monstermäßig und zu wirr.
Um einen Demon downzuloaden, müsste etwas wie ein
sudo apt-get install brickdemon
reichen,
und um ihn zu starten, ein einfaches
sudo ./brickdemon
bzw
system("sudo ./brickdemon");
aus dem C-programm heraus.
Ansonsten müsste fürs eigene Programm ein einfaches #include ausreichen und einfache Compiler und Linker-Flags, wie ich sie oben beschrieben habe, samt simplem IMU-polling
double yaw = getIMUheading();
oder ähnlich.
Vorbild kann nach wie vor der CMPS11 sein, wie schon erwähnt, da braucht man noch nicht mal eine Lib einzubinden, es reicht i2c-Register auszulesen (z.B. mit wiringPi / wiringI2C), in denen die fusionierten gefilterten Werte ja bereits drinstehen.
ps,
alternativ, statt einer Lib, den erwähnten "10-Zeiler" (von mir aus auch 20-Zeiler) einfach in mein eigenes C-Programm hinein zu copy-and-pasten, wie eine beliebige zusätzliche (komplizierte) C-Funktion, wäre natürlich auch ok, wenn man dann die yaw-Werte ähnlich simpel pollen kann.
sudo /etc/init.d/brickd startsystem("sudo ./brickdemon");
sudo /etc/init.d/brickd stop
sudo /etc/init.d/brickd restart
das package ist leider meines wissens nach in keinem public repository, also musst du es schon mit wget laden, aber das ist standard bei allen linux distrossudo apt-get install brickdemon
Daher hier 2 Varianten, eine nach deinem Wunsch, welche vorraussetzt dass die deb file in einem bestimmten ordner liegt und die alternative variante die ähnlich simpel ist und genau so gut funktioniert
Code:wget -P /var/cache/apt/archives/ http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb sudo apt-get install brickd_linux_latest_armhf ALTERNATIV wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb sudo dpkg -i brickd_linux_latest_armhf.deb sudo apt-get install -f
.... ich lese meinen artikel und frage mich gerade warum ich mich früher immer so blöd angestellt habe .. es ist doch eigebntlich total einfach wenn man erstmal ein wenig in den dokus ließt ....
PS: apt-get benutzt auch nur
sudo dpkg im hintergrund, aber es lädt zusätzlich die abhängigkeiten mit runter
in der alternativen version benutz ich den "wunderbefehl"
sudo apt-get install -f ... den solltest du dir unbedingt merken, der reparieret kaputte package installationen (verbindungsverlust z.B. oder eben ein unvollständig installiertes .deb)
ich spiele gerade auch mit dem gedanken die bridge komponente aus dem brickd source code zu extrahieren, aber das ist ein ganz schönes stück arbeit
Geändert von Ceos (26.07.2017 um 10:15 Uhr)
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
hallo,
das hier einmalig in die Konsole zu copy-and-pasten ist ntl kein Problem:
diese Befehle hier für den Demon allerdings müssen intern von meinem C-Programm aus zugänglich sein, notfalls über den system execute cmd:Code:wget -P /var/cache/apt/archives/ http://download.tinkerforge.com/tool...test_armhf.deb sudo apt-get install brickd_linux_latest_armhf
sudo /etc/init.d/brickd start
sudo /etc/init.d/brickd stop
sudo /etc/init.d/brickd restart
also z.B. bei Programmstart, am Anfang von main() :
und bei Programmende, am Ende von main(), direkt vor exit(0) :Code:system("sudo /etc/init.d/brickd start");
(sicher bin ich mir jetzt natürlich nicht, ob system von einem user Programm aus aufgerufen auch sudo Befehle für demons ausführen kann, das muss selbstverständlich klappen)Code:system("sudo /etc/init.d/brickd stop");
wenn das alles ist und genau so auch sicher funktioniert, kein Problem!
Wie genau pollt man dann die yaw- oder heading-Werte?
Ganz ohne Demon wäre es mir allerdings sympathischer, klarer Fall...![]()
Lesezeichen