Jump to content

AuronX

Members
  • Content Count

    884
  • Joined

  • Last visited

Community Reputation

0 Neutral

About AuronX

  • Birthday 01/01/1988
  1. Hallo, habe gerade in der C#-Doku entdeckt, dass es noch immer die Hinweise gibt, dass Parameter seit Version 1.1 zugerückgegeben werden statt als out rauskommen. Ich denke mal, dieser Hinweis ist inzwischen obsolete, weil eh API 2.x aktuell ist (und bei allen neuen Bricklets gab es auch nie die out-Variante ^^) Viele Grüße
  2. Ich habe tatsächlich nciht wirklich viel Ahnung von Treiberentwicklung, aber folgendes scheint für Windows genau das richtige zu sein: https://code.google.com/p/vmulti/ Wenn ich es richtig verstehe ist es ein HID-Treiber, mit dem du alle Geräteklassen emulieren kannst. Der Ordner test (im Quellcode) scheint dann diesen Treiber anzusprechen, um irgendwelche Pseudo-Inputs zu senden. An dieser Stelle müsstest du also deine TF-Interaktion einbinden können. Oder ein C-Interface schaffen und dann aus einer cooleren Sprache darauf zugreifen. Aber wie gesagt, ich habs auch nur überflogen. Unter 64 Bit Windows wirst du allerdings Probleme haben, weil dort (aus Sicherheitsgründen) nur signierte Treiber geladen werden dürfen. Eine schnelle Google Suche nach "Win 64 unsigned drivers" hat aber auch Ergebnisse zu Tage gefördert... Allerdings scheint man nicht selektiv nur einem Treiber vertrauen zu können, du kannst den Signaturcheck dann also unr komplett ausschalten. (Oder viel Geld in die Hand nehmen und deinen Treiber signieren ^^)
  3. Das sieht wirklich stark aus... Ich hoffe am Ende funktioniert alles auch gut ^^
  4. Oh cool, ich wusste nicht, dass es auch ein WinForms-Beispiel in der Doku gibt. Vielen Dank Nic Das muss ich mir merken ^^
  5. Ich gehe gleich schlafen, aber ich versuche in Kürze die wichtigsten Links zu sammeln. Im wesentlichen sieht es wie das obere Beispiel hier aus: http://www.tinkerforge.com/de/doc/Software/IPConnection_CSharp.html#ipcon-csharp ipcon.EnumerateCallback += EnumerateCB; ipcon.Enumerate(); Dieser Teil kann irgendwo rein wo es dir bequem ist, ich würde zum Beispiel das FormLoad-Event empfehlen. Im Callback (hier EnumerateCB) musst du beachten, dass dieser in einem neuen Thread läuft, du kannst also nicht ohne weiteres die GUI verändern. Dazu musst du Code Invoken, etwa so: Invoke(new Action(() => { MyTextBox.Text = "some data from my callback"; })); (dieser Code wurde schnell von mir Zusammenkopiert) Mehr Details zu Invoke: http://msdn.microsoft.com/de-de/library/zyzhdc6b(v=vs.110).aspx Ich hoffe ich konnte dir einige Anhaltspunkte liefern. Ansonsten schreibe einfach was dich derzeit blockiert und am besten auch den Code den du nutzen wolltest um das Problem zu lösen.
  6. Die C# Bindings laufen auch unter Mono, sie werden von TF sogar unter Mono kompiliert.
  7. Plus (wichtiger Hinweis): Wenn du eh schon normalen Webspace bei STRATO hast, dann gibt es auch dort einen DynDNS-Service falls du deine Domain auch über Strato beziehst... Insofern ist das schon "inklusive" ^^
  8. https://de.wikipedia.org/wiki/W3C_Geolocation_API (siehe auch die Referenzen) Ich habe das selsbt noch nie benutzt, aber auf jeden Fall wird es von allen Android-Handys unterstützt.
  9. Zunächst das einfachere Problem: [code]Hallo Welt[/code] wird zu: Hallo Welt Welche Pakete bei Strato installiert sind kannst du bei Strato nachschauen... ich habe das schonmal gemacht, aber natürlich vergessen wo das ist. Vielleicht kann man auch einfach phpinfo() aufrufen...
  10. Ich hätte gehofft die Reihenfolge in deinem Stapel ist falsch, aber wenn sie so ist wie du geschrieben hast sollte das schonmal stimmen. Standardvorgehen ist es jetzt glaube ich noch, die Firmware auf allen Bricks zu aktualisieren (dazu jeweils einzeln ans USB anschließen). Danach bin ich dann auch ratlos ^^
  11. Nimmst du jeweils die nächstgelegene Station als Quelle? Oder mittelst du über alle deine Stationen? (In welchem Abstand voneiinander stehen die eigentlich?...)
  12. Zu Frage 3: Hier ist meine persönliche Meinung, dass Einheiten nicht auf allen Sprachen implementiert werden sollten, weil sie nicht überall Sinn machen. Ich würde sie nur in den Sprachen unterstützen, die es leicht machen sie auch bequem zu benutzen. Damit verzichtet man natürlich auf Einheitlichkeit zwischen den Bindings, aber ich habe die Befürchtung, dass diese Einheitlichkeit mehr kostet, als dass sie etwas nützt. Zu Frage 4: Für mich ja! Frage 2 muss Je nach Einheit diskutiert werden und bei Frage 1 würde ich auch lieber Feedback abwarten bevor ich mich äußere
  13. Ich versuche mal die Diskussion über API-Änderungen zu strukturieren, indem ich für dieses Thema einen eigenen Thread eröffne. Idee Die Tinkerforge-API sollte Einheiten nativ unterstützen, um so die Arbeit zu erleichtern und die Selbstdokumentation des Codes zu verbessern. Beispiel (dient nur dazu die Idee zu verdeutlichen, kann vom Endergebnis abweichen) Distance distance = myBricklet.GetDistance(); if(distance > 20.Millimeters() && distance <= 2.Meters()) { Console.WriteLine("Die Distanz beträgt {0} Zentimeter", distance.InCentimeters); } Überlegungen Um soetwas zu unterstützen müssen verschiedene Dinge getan werden: Die Konfigurationen der Bricklets müssen die Einheiten der Werte kennen (Hat nur etwas mit den Bindings zu tun, keine Auswirkungen auf Speicherplatz o.ä. auf den Bricklets) Die unterstützten Einheiten müssen in allen (vorgesehenen) Sprachen einen eigenen Typ (Klasse/Struct) haben Frage 1: Generieren oder selber bauen? Die erste Frage die ich mir stellen würde: Werden die Typen der Einheiten generiert oder manuell erstellt? Beim Generieren sehe ich den Vorteil darin, dass es vermutlich einfacher umzusetzen ist. TF definiert einmal (ähnlich wie bisher für Bricklets) einen Satz an Einheiten und dann werden dafür Typen erzeugt. Das funktioniert vermutlich deswegen leicht, weil Einheiten immer gleich sind: 1 km = 1000 m 1000 mm = 1 m 1 kV = 1000 V 1000 mV = 1 V Allerdings denke ich, dass man bei händischen Implementierungen Korrelationen zwischen Einheiten besser abbilden kann. Also dass man beispielsweise Volt und Ampere multiplizieren kann. Ich wüsste nicht, wie ich das in eine generische Konfiguration schreiben wollte. Frage 2: Was ist die Basiseinheit? Wie auch immer diese Klasse (z.B. Distance) erzeugt wird, sie muss den aktuellen Wert (etwa die Entfernung) speichern. Ich habe mich dafür entschieden (in meiner Bibliothek), dass ich die Entfernung als Integer speichere und damit die Länge in Millimetern zähle. Die Folgen dieser Entscheidung: Ich werde niemals genauere Auflösungen als mm unterstützen Die maximale Distanz beträgt ca. 2000 km (das Maximum von Int32 in Millimetern) Alle Distanzen (unabhängig von der Sensorauflösung) belegen 4 Byte Arbeitsspeicher (Kritisch bei embedded Anwendungen?) Für mich ist das nicht kritisch, notfalls ändere ich diesen Typ so wie ich es brauche. Wenn TF das in die API einbaut, dann ist das in Stein gemeißelt... Choose wisely! Frage 3: Alle Sprachen unterstützen? Sollen die Bindings für alle Sprachen solche Dinge unterstützen? Ich weiß es nicht... Ich kann mir nicht vorstellen, dass es in den C-Bindings mehr Spaß macht mit solchen nativen Typen zu arbeiten... Andererseits waren bisher alle Bindings möglichst identisch... würden dadurch Unterschiede eingeführt die schlecht sind? Es gibt halt Sprachen, bei denen sich Einheiten wirklich gut lesbar einbauen lassen (C#-Beispiel siehe oben... noch besser: Ruby) und es gibt Sprachen, bei denen ich befürchte, dass es einfach alles nur schlimmer machen würde ©. Frage 4: Besteht überhaupt Bedarf/Nachfrage? Wichtige Frage... Vielleicht will das auch gar keiner... Das sind die Diskussionspunkte die mir unmittelbar eingefallen sind. Bestimmt gibt es noch mehr Diskussionspunkte zu diesem Thema. Meine persönliche Meinung werde ich (sofern es mir gelingt) aus diesem Posting heraushalten und nur in einer Antwort präsentieren.
  14. Soetwas habe ich tatsächlich bisher nur in einer eigenen Bibliothek implementiert. Wäre natürlich eine coole Idee sowas direkt in den Bindings zu haben... Distance dist = myBricklet.GetDistance(); if(dist > 20.Millimeters() && dist <= 2.Meters()) { //do something awesome } Ich denke da mal drüber nach... Aber bevor man sowas überall einbaut gibt es glaube ich verschiedene Einzelpunkte, über die man mit vielen Leuten sprechen möchte Ich versuche mal eine Liste zu machen ^^
  15. Oh nic das tue ich Du hast mich gerade darauf gebracht, dass mein oben verlinktes Diff sogar einen Pull Request hat Habe den direkt mal aktualisiert ^^ https://github.com/Tinkerforge/generators/pull/37
×
×
  • Create New...