Jump to content

NI cRIO und Ethernet


TU_Techniker

Recommended Posts

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!

Link zu diesem Kommentar
Share on other sites

  • 3 weeks later...

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?

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

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?

CodeSnippet.JPG

Link zu diesem Kommentar
Share on other sites

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

Link zu diesem Kommentar
Share on other sites

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. ;D

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

 

Link zu diesem Kommentar
Share on other sites

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!

Example.JPG

Link zu diesem Kommentar
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.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...