Rocnet protocol

Rocnet protocol

Postby eporocrail » 19.04.2016, 06:34

Hallo Rocrailer

Ich bin dabei mir mit möglichst viel schon vorhandene Module ein melde und schalt System zusammen zu setzen mit Arduino.
Als Protokoll für die Daten Übertragung zwischen die Komponente habe ich das Rocnet Protokoll genommen. Ich bin jetzt so weit das ich die Slave gründlich auf die Nieren gehe. Da ist bei mir noch eine Sache unklar. Die Slave ist bei mir ein "multiport Stationary Decoder". Da wird "data1" benutzt für "port mask". Wo ich mit Arduino NANO als slave Baustein mit extra PWM Modul, Multiplex Modul und shift register arbeite ist mir diese "port mask" nicht klar. "data2" enthält die Adresse von den Ausgang der benutzt werden soll. Ausgehend von insgesamt 16 Ausgänge pro Modul wie ist dann die "port mask" zu verstehen? Wenn diese "port mask" sich ausdehnt über die letzte Adresse was passiert dann? Werden die einzelne Bits die über die letzte Stifte hinaus gehen verwendet um Stifte am Anfang vom Modul zu steuern oder müssen die ein anderen Slave übermittelt werden?

Ich bin gespannt wie das Ganze zu handhaben ist.
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Rocnet protocol

Postby eporocrail » 20.04.2016, 08:55

Hallo Rocrailer

Ich gehe davon aus das "port mask" benutzt wird um mit LEDs ein gewisses Muster dar zu stellen.
Weil ich sowas nicht vor habe, werde ich data1 benutzen um "ein/aus" bzw "straight/thrown" zu übertragen.

Spart wieder Bandbreite!
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Rocnet protocol

Postby eporocrail » 05.05.2016, 14:10

Hallo Rocrailer

Ich habe mir mal eine kleine Routine gebastelt um ein Byte in HEXA um zu setzen.

Viel Spass!

Code: Select all
/*

   Converts byte into HEXA


*/

byte test = 0;
String result = "";

void setup() {
  Serial.begin(9600);
}

void loop() {
  test = 5;
  result = twoChr(test);
  Serial.println(result);

  // do nothing while true:
  while (true);
}

String twoChr ( byte nmbr) {
  String str = String(nmbr, HEX); // converts nmbr into string with HEX format
  byte len = str.length();        // calculates the length of string str
  if (len < 2) {                  // when str is only one character an "0" is added to the front
    str = "0" + str;
  }
  return str;
}
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 


Return to Arduino (DE)

cron