TU_Techniker Posted October 21, 2019 at 03:59 PM Share Posted October 21, 2019 at 03:59 PM Guten Abend allerseits! Ich möchte für ein Forschungsprojekt einige Tinkerforgemodule mit einem NI CompactRIO verwenden. Der cRIO hat einen Etherneteingang, den ich mit meinem Stack verbunden hab. Auf meinem cRIO läuft als embedded system, d.h. ich kann dort keine Software wie den Deamon installieren. Alle LabVIEW Funktionen benötigen aber den Deamon um LabVIEW mit den Modulen kommunizieren zu lassen. Hat jemand Erfahrung mit der basic TCP IP Kommunikation mit dem Ethernetmodul? Ich hab die Doku zum Protokoll gefunden, kann aber nicht viel damit anfangen. Hat jemand einen Beispielcode (auch andere Sprachen)? Vielen lieben Dank! Quote Link to comment Share on other sites More sharing options...
rtrbt Posted October 23, 2019 at 01:50 PM Share Posted October 23, 2019 at 01:50 PM Moin, Die Ethernet-Extension ist ein Brick Daemon, d.h. den musst du nicht auf der cRIO installieren, sondern kannst dich mit LabVIEW auf die IP-Adresse der Ethernet-Extension verbinden. Quote Link to comment Share on other sites More sharing options...
TU_Techniker Posted November 7, 2019 at 05:01 PM Author Share Posted November 7, 2019 at 05:01 PM Hey rtrbt! ich habe jetzt eine Verbindung zwischen den beiden Geräten etablieren können. Ich versuche mir jetzt in LabVIEW den Header zusammenzubasteln. Hat jemand einen Beispielcode dafür? Auch für die konvertierung von Base58 bis Hex (in LabVIEW)? Grüße aus Darmstadt! Quote Link to comment Share on other sites More sharing options...
photron Posted November 8, 2019 at 10:55 AM Share Posted November 8, 2019 at 10:55 AM All unsere API Bindings für die verschiedenen Programmiersprachen nutzen intern unser TCP/IP Protokoll. Daher kannst du dir irgendeins unserer API Bindings ansehen als Beispiel dafür wie das TCP/IP Protokoll zu nutzen ist. Aber kannst du auf dem cRIO nicht einfach unsere .NET basierten LabVIEW Bindings einsetzen? Oder unterstützt der cRIO .NET nicht? Quote Link to comment Share on other sites More sharing options...
TU_Techniker Posted November 8, 2019 at 03:52 PM Author Share Posted November 8, 2019 at 03:52 PM nee auf dem cRIO geht aktuell kein .NET! Quote Link to comment Share on other sites More sharing options...
TU_Techniker Posted November 18, 2019 at 01:06 PM Author Share Posted November 18, 2019 at 01:06 PM Servus! Ich habe eine Website verwendet, um die UID von Base58 in HEX umzuwandeln. Site: https://www.mobilefish.com/services/cryptocurrency/brainwallet.html#converter Auf der Dokuseite bei TCP/IP Protocol wird in einem Beispiel die UID b1Q in 98 83 00 00 konvertiert. Wenn ich die UID über die Seite konvertieren lasse, sagt mir zunächst das Eingabefeld, dass das nur 3 byte sind und außerdem kommt da eine andere HEXfolge heraus. Ändere ich nun aber die UID von b1Q auf B1q, sind das dann 2 byte und 83 98. Was ist nun korrekt? Ist die Anwendung falsch programmiert? Könnt ihr mir eine Alternative empfehlen? Die UID meines Masters lautet 6DbKt8, was mir in CC 1A 5A 4D konvertiert wird. Ich möchte erst einmal die erste Funktion ansprechen (getStackVoltage). Dazu schicke ich wie im Anhang die Nachricht. Eine Antwort bekomme ich aber nicht, der String bleibt leer. Was muss ich hier an vorletzter Stelle eintragen? Quote Link to comment Share on other sites More sharing options...
photron Posted November 18, 2019 at 02:18 PM Share Posted November 18, 2019 at 02:18 PM Es gibt zwei Varianten von Base58: https://en.wikipedia.org/wiki/Base58 Wir verwenden die Flickr Variante, die meisten Online Tools scheinen aber die Bitcoin Variante zu verwenden. 6DbKt8 dekodiert zu 0x31 0x10 0xb1 0xdc Ich kann auf Anhieb kein Online Tool finden, dass die Flickr Variante nutzt. Ich habe gerade ein kleines Python Script zusammenkopiert, dass die Flickr Variante dekodiert: $ python3 base58decode.py 6DbKt8 base58: 6DbKt8 decimal: 3702591537 hexadecimal: 0xdcb11031 bytes (little endian): 0x31 0x10 0xb1 0xdc $ python3 base58decode.py b1Q base58: b1Q decimal: 33688 hexadecimal: 0x8398 bytes (little endian): 0x98 0x83 0x0 0x0 base58decode.py 1 Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted November 19, 2019 at 04:47 AM Share Posted November 19, 2019 at 04:47 AM Hallo zusammen, da trage ich zur Vollstaendigkeit noch ein Shellscript bei. Ausgabe in diesem Fall ist "\x31\x10\xb1\xdc". Ich kann mich schwach erinnern, dass es recht muehsam war einen passenden Umrechnealgorithmus zu finden. Weiterhin viel Freude. Der Loetkolben #!/bin/bash # Stand 23.4.2013 # Loetkolbenzauberkiste tUID=6DbKt8 ################################################################################### ALPHABET="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ" BASECOUNT=`expr length $ALPHABET` DECODED=0 MULTI=1 for ((i=`expr length $tUID - 1` ; i > -1 ; i--)) do VALUE=${tUID:$i:1} DECODEDVALUE=`expr index $ALPHABET $VALUE` DECODEDVALUE=`expr $DECODEDVALUE - 1` DECODED=`expr $DECODED + $MULTI \* $DECODEDVALUE` MULTI=`expr $MULTI \* $BASECOUNT` done HEXDECODEDSTR="" HEXDECODED=`printf "%08x" $DECODED` for i in {6,4,2,0} do DIGIT=${HEXDECODED:$i:2} HEXDECODEDSTR=$HEXDECODEDSTR"\x"$DIGIT done ################################################################################### echo "$HEXDECODEDSTR" exit 0 Quote Link to comment Share on other sites More sharing options...
TU_Techniker Posted November 19, 2019 at 11:01 AM Author Share Posted November 19, 2019 at 11:01 AM Hier meine aktuelle Lösung. Die Schleife am Ende verwendet ich um die Callbacks meiner zwei Bricklets zu verarbeiten. Je nach Header sortiere ich die Werte. Zu der TCP Connection: Ich habe den cRIO mit einem Switch verbunden, genauso die Tinkerforge Module. Die IP bei Tinkerforge habe ich statisch festgelegt, beim cRIO hat das mit einer statischen IP nicht funktioniert. Bei beiden Geräten verwende ich die gleiche Subnetzmaske. Vielen Dank für die Hilfe hier im Forum! Quote Link to comment Share on other sites More sharing options...
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.