Jump to content

rtrbt

Administrators
  • Gesamte Inhalte

    1.411
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    130

Alle erstellten Inhalte von rtrbt

  1. Dafür musst du die Teile in dem Datumsstring auch durch Platzhalter ersetzen, die du dann mit String.Format einsetzt, z.B so: myProcess.StartInfo.Arguments = String.Format("/bin/date -s \"{0:00} {1} {2:0000} {3:00}:{4:00}:{5:00}\"", jahr, monat, tag, stunde, minute, sekunde); Den Monat musst du als String reingeben, also z.b. AUG oder SEP. Alternativ kannst du dir mal die anderen Formate ansehen, die date versteht, die sind z.B. hier dokumentiert.
  2. Das sieht schon mal besser aus. Jetzt wäre wieder dmesg interessant. Außerdem kannst du mit lsusb -t nachsehen, ob überhaupt einer und wenn ja, welcher Treiber geladen wird.
  3. Ah, manchmal ist man einfach betriebsblind, sorry dafür. Das Problem ist, dass StartInfo den Namen der ausführbaren Datei und die Argumente getrennt will, da ja auch keine Shell benutzt wird (deshalb optionalerweise UseShellExecute = false). So funktioniert es bei mir: using (Process myProcess = new Process()) { myProcess.StartInfo.FileName = "/usr/bin/sudo"; myProcess.StartInfo.Arguments = String.Format("/bin/date -s \"22 AUG 2019 {0:00}:{1:00}:{2:00}\"", stund, minut, sekund); myProcess.Start(); }
  4. Was für eine Fehlermeldung bekommst du, wenn du myProcess.Start(); aufrufst?
  5. Was gerade noch aufgefallen ist: Datum/Zeit zu setzen geht nur mit Root-Rechten. Du kannst aber dem Standarduser (also tf) erlauben, das ohne Root-Passwort zu tun, in dem du auf der seriellen Konsole des RED-Brick einmalig folgenden Befehl ausführst: echo 'tf ALL=(root) NOPASSWD: /bin/date' | sudo tee -a /etc/sudoers Wenn du dann in deinem Programm /bin/date durch /usr/bin/sudo /bin/date ersetzt, sollte es klappen.
  6. Process kannst du verwenden, wie hier beschrieben. In deinem Fall müsste myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"; stattdessen myProcess.StartInfo.FileName = String.Format("/bin/date -s \"22 AUG 2019 {0:00}:{1:00}:{2:00}\"", stunde, minute, sekunde); (o.Ä.) sein.
  7. Am einfachsten mit Etcher, hier wird erklärt wie das geht. Damit wird allerdings alles auf der Micro-SD-Karte überschrieben, d.h. du solltest ein Backup von Daten, die du auf dem alten Image geändert hast, ziehen, oder alternativ eine andere Micro-SD-Karte benutzen.
  8. Der Befehl heißt lsusb mit kleinem L nicht großem i. Abgesehen davon solltest du dein Image mal auf 1.14 aktualisieren (oder zumindest damit mal testen).
  9. Moin, Wenn du den Stick angeschlossen hast, tauchen die ganzen USB-Resets auf. Du kannst mit lsusb (poste mal die Ausgabe davon) mal nachprüfen ob das wirklich der Stick ist, Bus 0X Device 01 sollte der entsprechende Hub-Chip sein, Bus 0X Device 0Y dann der Stick. In den Resetmeldungen siehst du dann "usb X-1:" das ist der Hub und dahinter "USB device number Y", die sollte der aus lsusb entsprechen. Da die Resets vermutlich an den Stick geschickt werden: Wie ist dein Aufbau insgesamt? Wie versorgst du ihn mit Strom? Welche Image-Version hast du auf dem RED-Brick? Vermutlich ist das (noch) kein Treiberproblem, da das USB-Device ansich ja nicht korrekt auftaucht. Der Treiber würde erst im nächsten Schritt geladen werden.
  10. Moin, Interessant wären die Ausgaben von lsusb und dmesg. Da gerade dmesg auf der seriellen Konsole des RED-Bricks sehr unübersichtlich ist, kannst du die Ausgabe mit dmesg | tail -n 30 filtern.
  11. Die Selbsterwärmung des Sensors kann mit der Funktion set_temperature_offset kompensiert werden.
  12. As there is a brickv folder in /usr/share, did you install the Brick Viewer Debian package or from source? The Debian package typically is installed to /usr/share/brickv. To start the Brick Viewer, you can run brickv from the terminal instead of calling main.py directly. The error message indicates, that Qt can not reach the X server. Are you running your graphical interface as root or as another user? If so, Brick Viewer should work if you run it as the "normal" user.
  13. Moin, das ist vermutlich auf einen Bug im Brick Viewer zurückzuführen, der mit Version 2.4.5 gefixt wurde. /etc/localtime ist ein Symlink auf die gewünschte Zeitzone in /usr/share/zoneinfo/. Vor Version 2.4.5 hat der Brick Viewer aber localtime auf nicht vorhandene Dateien gelinkt, C# gibt dann die FileNotFoundException aus. Wenn du mit dem aktuellen Brick Viewer die Zeitzone des RED-Brick neu setzt, sollte das Problem behoben sein. Um die Zeit des RED-Bricks zu setzen kannst du date auf der Kommandozeile oder mit System.Diagnostics.Process verwenden. Zum Beispiel mit date +%s -u -s @1565681174 (als Unix-Timestamp, so macht es der Brick Viewer) oder mit date -s "13 AUG 2019 09:25:30"
  14. War doch einfacher als gedacht. Habe dir die gefixte Version mal angehangen, bei mir gibt g++ 9.1 die Warnung nicht mehr aus. tinkerforge_c_bindings_2_1_25.zip
  15. Versuch es mal ohne die () hinter cb_enumerate und cb_connected.
  16. Moin, Ich bin dem mal nachgegangen, das Problem ist nicht das Alignment innerhalb der Strukturen, sondern das der Strukturen selbst (also Packet, PacketHeader und den konkreten wie z.B. SpectrumLowLevel_Callback). Da sie als packed markiert sind, geht der Compiler (richtigerweise) davon aus, das sie nicht auf 4 Byte alignt sind und gibt die Warnung aus. Abgesehen davon gibt es tatsächlich Fälle, in denen die Paketstruktur so ist, dass Arrays an "krummen" Adressen liegen, z.B. beim RS232 Bricklet. Das sauber für alle Compiler zu fixen dauert noch etwas, falls du auf x86 oder einer anderen Architektur, die unalignte Zugriffe unterstützt, unterwegs bist, kannst du die Warnung erstmal mit -Wno-address-of-packed-member unterdrücken. Ich melde mich sobald ich das repariert habe.
  17. Prinzipiell funktioniert das, hängt aber natürlich auch von deinem Handy ab. Im Settings-Network-Tab des Brick Viewers taucht es als Wired-Interface usb0 auf.
  18. Moin, Habe ich mal implementiert, kommt mit 2.4.7. Du kannst dann im Flashing-Window auf den Brick Viewer klicken, dann wird je nach Plattform das richtige Paket heruntergeladen. Hm das ist kaputt. Habe ich mal gefixt, kommt auch in der 2.4.7. Erik
  19. rtrbt

    HAT Brick

    Die set_sleep_mode-Funktion fährt den Raspberry nicht von alleine heruntergefahren, sondern sagt nur dem HAT, dass der Strom weggenommen werden muss. Das Runterfahren (z.B. wie du es geschrieben hast mit shutdown) musst du selber machen. PS: Mir ist gerade aufgefallen, dass in den Beispielen die Zeit in Millisekunden mitgegeben wird. Das müssen aber wie dokumentiert Sekunden sein. Habe ich gerade gefixt, sollte in ein paar Minuten aktualisiert werden.
  20. Moin, Versuch es mal mit dieser Version. Ich habe das Zeitzonenhandling insgesamt überarbeitet, jetzt sollten auch echte Zeitzonen (anstatt von UTC-Offsets) angezeigt und gespeichert werden. Erik
  21. Not supported in this case means "works in some cases, but not in enough to support it.": The firmware of bricklets with co-processor sends an enumerate when booting and bricks poll their ports with an exponentional decreasing rate, which in conjunction allows hot plugging. But bricks are not able to tell if a bricklet gets disconnected. So if your use case only requires adding co-processor bricklets and never removing them, you could reasonably expect this to work, but as I've said it is not supported.
  22. You mean threads spawned in the enumerate callback to handle callbacks of the found devices? If you use the thread::spawn(move || { for x in receiver { //[...] } } pattern, then the thread will join, when the corresponding sender is dropped in the IpConnection, e.g. when the IpConnection is dropped. Another way would be to explicitly drop the receiver, but then you can not use the for loop pattern anymore. Dropping the bricklet does not close callback channels. Instead you have to either drop the IpConnection or the receiver. The device object does not hold any information abount the callback channels. Unfortunately, hot plugging devices to already powered stacks is not supported (for electrical reasons as well as in software). The EnumerationType::Disconnected is only sent, if the Brick Daemon on a PC notices that the USB connection to a stack is lost.
  23. Moin, Bei manchen Karten wird angegeben, wie viele Daten geschrieben werden können. Wenn du da auf Nummer sicher gehen willst, kaufst du eine für den industriellen Einsatz geeignete Karte, die haben dann Datenblätter wie dieses hier (keine Werbung, das war das erstbeste Suchergebnis) Die Karte hält laut Datenblatt 600TB aus (unter Terabytes Written (Max.)). D.h. du kannst zwei Jahre lang pro Minute mehrere Hundert Megabyte schreiben, falls meine Schätzung stimmt. Du kannst natürlich immer Pech haben und eine Karte erwischen, die nach zwei Monaten hin ist, aber das Risiko hat man ja immer. Erik
  24. Hi, You've found a design mistake in the bindings. The IpConnectionRequestSender has the purpose to allow multi-threaded calling of IpConnection functions and device creation, but for some reason I've forgot to accept the RequestSender in the [device]::new functions. The attached version (which will probably be released as 2.0.11 soon) fixes this. With this version everything you can do with an IpConnection should also be possible with the RequestSender, that can be cloned for as many threads as needed. Also attached is an example, that shows how to use the RequestSender in an enumerate callback handler. To use the local version of the bindings, extract the src folder and Cargo.toml into a tinkerforge folder inside your project's src folder, remove the tinkerforge=... line in your Cargo.toml and add [dependencies.tinkerforge] path = "src/tinkerforge" instead. Erik tinkerforge_rust_bindings_2_0_11.zip rust_ipcon_fix_example.zip
×
×
  • Neu erstellen...