tex Geschrieben September 18, 2014 at 11:02 Geschrieben September 18, 2014 at 11:02 Hi, ich bin auf der Suche nach Go Bindings für meinen Tinkerforge Stack. Go hat für mich viele Vorteile, die es insb. für den Einsatz auf kleinen Linux-Platformen (RasbPi u.ä.) aufdrängen. Go erzeugt statische Binaries ohne externe Abhängigkeiten, die Ausführung ist extrem effizient und das Nebenläufigkeitskonzept sowie die Speicherverwaltung machen das Programmieren extrem einfach. Es gab früher, mit dem alten Protokoll, mal eine ziemlich verständliche Anleitung zum Schreiben eigener Bindings, aber mit der neuen Protokollversion ist das etwas komplizierter geworden und die bestehenden Bindings sind teilw. sehr sprachspezifisch. Gibts diese Anleitung denn für die aktuelle Protokollversion noch oder sind ggf. sogar Bindings für Go in Arbeit? Zitieren
borg Geschrieben September 18, 2014 at 11:14 Geschrieben September 18, 2014 at 11:14 Es sind aktuell keine Go Bindings in Arbeit. Allerdings steht es bei uns auf der Liste als möglicher Kandidat. Es ist relativ einfach C und Go zu mischen: http://golang.org/cmd/cgo/ Ich könnte mir vorstellen das du ohne riesigen Aufwand die C Bindings in Go nutzen könntest (habe ich nicht getestet). Zitieren
tex Geschrieben September 18, 2014 at 11:57 Autor Geschrieben September 18, 2014 at 11:57 Danke für die schnelle Antwort. cgo möchte ich gerne vermeiden, weil man sich damit einige Probleme aus der C-Welt ins Haus holt vor denen Go einen normalerweise beschützt Gibt es denn das Tutorial zum erstellen eigener Bindings noch irgendwo? Oder ist das mit der neuen Protokollversion nicht mehr sinnvoll möglich? Zitieren
borg Geschrieben September 18, 2014 at 14:45 Geschrieben September 18, 2014 at 14:45 Eine Spezifikation des Protokolls gibt es hier: http://www.tinkerforge.com/de/doc/Low_Level_Protocols/TCPIP.html Für unser Generator-Framework gibt es aktuell leider keine richtige Dokumentation. Ganz grob gibt es zwei Teile: Funktionen/Klassen welche die Kommunikation steuern und Pakete auslesen usw. Diese werden händisch geschrieben.Funktionen/Klassen welche die eigentliche API abbilden. Diese werden generiert. Finden kannst du die Generatoren unter https://github.com/Tinkerforge/generators Ich würde mir eine Programmiersprache aussuchen die ich kenne und die ähnlich zu Go ist. Diese kann man dann solange umändern bis am Ende Go bei rauskommt . Also die Funktionen stück für stück übersetzen. Am besten angefangen bei den Funktionen welche direkt auf dem Socket arbeiten, da kann man dann sofort testen und hat direkt erste Erfolgserlebnisse. Einem Brick eine (handgeschriebene) Nachricht schicken und die Antwort darauf wieder auslesen bekommt man in 15 Minuten hin. Also z.B. für C (https://github.com/Tinkerforge/generators/tree/master/c) ist der erste Teil in der ip_connection.c/h (https://github.com/Tinkerforge/generators/blob/master/c/ip_connection.c) und der zweite Teil wird über die generate_c_bindings.py generiert (https://github.com/Tinkerforge/generators/blob/master/c/generate_c_bindings.py) Das sind die beiden Dinge die du grundsätzlich schreiben musst um Bindings zu generieren. Wenn das veröffentlicht werden soll müssen natürlich auch noch ein Dokumentationsgenerator sowie die Beispiele geschrieben werden. Das ist dann aber nur Fleißarbeit. Zitieren
photron Geschrieben September 18, 2014 at 15:39 Geschrieben September 18, 2014 at 15:39 Wenn du Interesse daran hast Go Bindings zu erstellen, die wir dann nachher auch weiterverwenden können, dann solltest du dich an der Struktur aller bestehenden Bindings orientieren. Wenn die Struktur der API und die Struktur der Implementierung aller Bindings gleich (oder zumindest sehr ähnlich ist) dann sind sie einfacher zu verstehen und zu pflegen. Wenn du Fragen zu den Interna der Bindings und der Generatoren hast, dann immer nur aus damit Zitieren
tex Geschrieben September 28, 2014 at 10:56 Autor Geschrieben September 28, 2014 at 10:56 Danke für die Hinweise. Ich werde mich an den Go Bindings versuchen, aber ich will nichts versprechen, da ich nichts weiß wie viel Zeit ich dafür erübrigen kann. Alles was ich mache, pushe ich zu GitHub: https://github.com/gittex/generators Falls sich jemand für den Fortschritt interessiert. Wenn dann noch Fragen auchtauchen melde ich mich hier. Zitieren
raphael_vogel Geschrieben January 19, 2017 at 14:35 Geschrieben January 19, 2017 at 14:35 Ich hätte auch Interesse an einem Golang Binding. Go hat sich ja inzwischen weiterentwickelt und relativ stark verbreitet. Ist da was in Planung? Zitieren
kuli Geschrieben August 30, 2017 at 10:55 Geschrieben August 30, 2017 at 10:55 Auch ich habe Interesse an einem Go Binding. Gibt es Neuigkeiten dazu? Zitieren
borg Geschrieben August 30, 2017 at 14:56 Geschrieben August 30, 2017 at 14:56 Go steht definitiv recht hoch auf der "sollten-wir-bindings-für-machen" Liste. Einen genauen Termin oder ähnliches hab ich leider noch nicht. Hängt auch davon ab wen wir für die aktuell offenen Stellen bei uns finden (und wann). Zitieren
Parmaster Geschrieben August 1, 2018 at 17:30 Geschrieben August 1, 2018 at 17:30 Gibt es zu den Go Bindings schon Neuigkeiten? Werden die noch veröffentlicht? Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.