NEWS
Daten über CAN-Bus senden
-
Hallo zusammen,
ich möchte gerne mit iobroker Daten über einen CAN-Bus kommunizieren.
Das Protokoll ist relativ einfach. PDO und anschließend die Daten in Hex.
Als einzige Möglichkeit sehe ich hier aktuell über node-red. -> existiert vielleicht eine andere Variante?
Der Empfang der Nachrichten funktioniert schon. Das Senden entputte sich leider als etwas komplizierter.
Problem ist, dass über cansend die ankommenden Daten als ASCII interpretiert wird und dies anschließend mit dem ASCII Wert gesendet wird, z.B.
0x5 als 35
0xa als 61
0xc8 als 63 38
Erwarten tue ich jedoch den hex-Wert.
Hat hier jemand vielleicht eine Idee?
Vielen Dank für die Unterstützung,
André
2159_grafik1.jpg -
du könntest zb ein array als payload nehmen zB [0x30,0x78,0x35]
-
Hallo moebius,
vielen Dank für den Tipp. Ich habe die Funktion wie folgt geändert:
var Integer=msg.payload; var hexString = Integer.toString(16); msg.payload = ["0x"+hexString]; msg.canid=0x100; return msg;
Damit ist das Problem gelöst.
André
-
Hallo,
jetzt möchte ich gerne noch einen Schritt weiter und 2Byte senden.
Mein Versuch war
msg.payload = ["0x"+"A1B2"];
oder
msg.payload = ["0x"+hexString+hexString];
Leider wird dabei nur das letzte Byte gesendet.
Hat jemand eine Idee?
-
msg.payload = [0xa1,0xb2]