Jump to content

Starthilfe TCP/IP


Tonquader
 Share

Recommended Posts

Hallo,

bin neu hier und Teste das Masterbrick mit Encoder/Motorfader/RGB Button/Joystick -Bricklet.

Mein Ziel ist es mit Max/MSP die Werte der Bricklets auszulesen. Ich kann eine Verbindung aufbauen und es kommen auch Daten rein, z.B. beim Drücken des RGB-Tasters und drücken des Encoder-Taster. Bei anderen Aktionen wie betätigen des Faders oder drehen des Encoders passiert nichts. Auch nicht bei Wireshark oder dem Livelog. Nun vermute ich, dass ich den Bricklets die Befehle aus der TCP/IP API beibringen bzw. aktivieren muss. Ich habe gelesen, dass die Brickletbefehle beim Booten auf das Masterbrick gespielt werden. Werden dann alle verfügbaren Befehle der Bricklets geladen, oder nur welche die per Plugin definiert wurden. Anders gefragt, muss ich mit den Befehlen die ich brauche ein eigenes Plugin erstellen welches ich erstmal auf das Bricklet laden muss? Oder muss ich einfach den benötigten Befehl per Hexdump von MaxMSP aus an das Bricklet senden?

Für Hilfe wäre ich sehr dankbar.

Edited by Tonquader
Link to comment
Share on other sites

Die erste Frage dazu: Hast du die TCP-Verbindung selbst aufgebaut und versuchst das TFP-Protokoll händisch zu sprechen? Höchstwahrscheinlich ist es einfacher, wenn du nicht direkt per TCP/IP mit dem Stapel bzw. mit dem Brick Daemon redest, sondern eins unserer Bindings dafür verwendest. Ich habe kurz danach gesucht, es gibt ein SDK mit dem man eigene C-Erweiterungen schreiben kann: https://cycling74.com/sdk/max-sdk-8.2.0/ (Bitte korrigiere mich falls ich da falsch abgebogen bin, MaxMSP sagte mir soweit nichts.)

Am einfachsten ist es deshalb vermutlich, wenn du mit dem SDK ein Plugin für MaxMSP schreibst, dass unsere C-Bindings benutzt. Sieh dir am besten mal die Beispiele für den RGB-LED-Button an, um ein Gefühl dafür zu bekommen.

12 hours ago, Tonquader said:

Anders gefragt, muss ich mit den Befehlen die ich brauche ein eigenes Plugin erstellen welches ich erstmal auf das Bricklet laden muss?

Du musst nichts auf den Master Brick oder die Bricklets hochladen, das ist kein Arduino, bei dem du eine eigene Firmware schreiben musst. Prinzipiell kannst du das zwar machen, aber das ist ein sehr esoterischer Anwendungsfall.

12 hours ago, Tonquader said:

Oder muss ich einfach den benötigten Befehl per Hexdump von MaxMSP aus an das Bricklet senden?

Das geht prinzipiell auch, du gewinnst aber nichts gegenüber den C-Bindings.

Link to comment
Share on other sites

 Erstmal lieben dank für die flotte Reaktion!

ja, ich hätte erstmal versucht das TFP-Protokoll händisch mittels MaxMSP anzusprechen, da MaxMSP eine grafische Realtime-Programmierumgebung ist mit der ich ganz gut klarkomme ohne coden zu müssen. Und ja die Verbindung habe ich selbst aufgebaut, was recht einfach ist und wie gesagt kommt ja auch schon was an. Das wäre für mich der Gewinn gegenüber den C-Bindings und dem Max-SDK. Da müsste ich mich vermutlich monatelang einarbeiten.

So wie ich die Tinkerforge-Umgebung verstanden habe, kann man die Bindings nutzen, muss es aber nicht, da man mittels TCP/IP die Bricklets ohne große Programmierkentnisse auslesen kann. Das war meine Hoffnung recht schnell zum Ziel zu kommen.

Warum genau rätst du dazu die C-Bindings zu nutzen? Was ist der Vorteil gegenüber TCP/IP bzw. gibt es bei TCP/IP Dinge die so schwer zu händeln sind was eine vermutlich monatelange Einarbeitung in die C-Bindings und das SDK rechtfertigen würde?

Mein Ziel ist es einen Controller zu bauen mit 8 Motorfader und 32 Encoder. Das eigentliche Programm sollte per MaxMsp erstellt werden, damit kann man dann einen Audiomixer, Midi-Controller oder OSC-Controller gleichzeitig und recht einfach realisieren indem man sich das einfach per Module zusammen klickt. 

Ich schau mir jetzt mal die C-Bindings und das Max-SDK an, ich befürchte jedoch, dass ich auf Anhieb hoffnungslos überfordert sein werde 😁

 

Link to comment
Share on other sites

Ah, dass du mit MaxMSP direkt ohne Code und SDK TCP-Pakete schicken/empfangen kannst war mir nicht klar. Das ändert natürlich einiges. Ich bin da beim googlen falsch abgebogen und dachte, dass du mit dem SDK ein C-Modul schreibst.

Wenn du das TFP-Protokoll händisch benutzen willst, musst du im Endeffekt nur die Bricklets dazu bringen, dass sie ihre Callbacks aktivieren, lies: dass sie von sich aus Daten zu dir senden. Das RGB LED Button Bricklet macht das automatisch, deshalb funktioniert das einfach so, bei den anderen müsstest die entsprechende Funktion aufrufen (was heißt, das entsprechende TCP-Paket schicken)

Um an den Payload zu kommen, kannst du also entweder in der TCP/IP-Dokumentation die einzelnen Paketformate nachschlagen (z.B. hier für die Position des Motorized Linear Poti Bricklets) oder du schneidest den Traffic des Brick Viewers oder eines kleinen Testprogramms mit.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...