예제 #1
0
 /**
  * Método que permite escribir el valor de un slot.
  *
  * @param slot Dirección de memoria donde se guardan los parámetros de la locomotora.
  * @param stat
  * @param Lok
  * @param speed
  * @param dirf
  * @param trk
  * @param ss2
  * @param addr2
  * @param snd
  * @param id1
  * @param id2
  * @return
  */
 public static byte[] slot_DataWrite(
     int slot,
     int stat,
     int Lok,
     int speed,
     int dirf,
     int trk,
     int ss2,
     int addr2,
     int snd,
     int id1,
     int id2) {
   Message miss = new Message(14);
   miss.setByte(0, (byte) OPC_WR_SL_DATA);
   miss.setByte(1, (byte) 0x0E);
   miss.setByte(2, (byte) slot);
   miss.setByte(3, (byte) stat);
   miss.setByte(4, (byte) Lok);
   miss.setByte(5, (byte) speed);
   miss.setByte(6, (byte) dirf);
   miss.setByte(7, (byte) trk);
   miss.setByte(8, (byte) ss2);
   miss.setByte(9, (byte) addr2);
   miss.setByte(10, (byte) snd);
   miss.setByte(11, (byte) id1);
   miss.setByte(12, (byte) id2);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #2
0
 /**
  * Método que permite cambiar la velocidad de una locomotora.
  *
  * @param slot Dirección de memória del decoder donde se guardan los parámetros de la locomotora.
  * @param speed Nueva velocidad de la locomotora.
  * @return
  */
 public static byte[] lok_Speed(int slot, int speed) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_LOCO_SPD);
   miss.setByte(1, (byte) slot);
   miss.setByte(2, (byte) speed);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #3
0
 /**
  * Método que permite asignar el estado de las funciones consist.
  *
  * @param slot Dirección de memoria del decoder donde se van a modificar los parámtros del
  *     consist.
  * @param dirf Dirección y funciones a modificar.
  * @return Retorna el mensaje que permite modificar las funciones del consist.
  */
 public static byte[] consist_Func(int slot, int dirf) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_CONSIST_FUNC);
   miss.setByte(1, (byte) slot);
   miss.setByte(2, (byte) dirf);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #4
0
 /**
  * Método que permite escribir un estado de Slot.
  *
  * @param slot Dirección del slot en el que se quiere escribir.
  * @param stat Nuevo estado del slot.
  * @return Retorna el mensaje que permite escribir el slot indicado.
  */
 public static byte[] slot_WriteStat(int slot, int stat) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_SLOT_STAT1);
   miss.setByte(1, (byte) slot);
   miss.setByte(2, (byte) stat);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #5
0
 /**
  * Método que permite mover la información de un slot determinado a otro.
  *
  * @param src Dirección del slot que contiene la información de los parámetros que se moverán.
  * @param dst Dirección del slot de destino que recibirá la información movida.
  * @return Retorna el mensaje que permite mover la información de un slot a otro.
  */
 public static byte[] slot_Mov(int src, int dst) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_MOVE_SLOT);
   miss.setByte(1, (byte) src);
   miss.setByte(2, (byte) dst);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #6
0
 /**
  * Método que permite deslincar dos slots.
  *
  * @param slt1 Dirección del primer slot a deslincar.
  * @param slt2 Dirección del segundo slot a deslincar.
  * @return Retorna el mensaje que permite deslincar los dos slots.
  */
 public static byte[] slot_Unlink(int slt1, int slt2) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_UNLINK_SLOTS);
   miss.setByte(1, (byte) slt1);
   miss.setByte(2, (byte) slt2);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #7
0
 /**
  * Método que permite conocer el estado de un slot.
  *
  * @param slot Dirección del slot del que se quiere conocer el estado.
  * @return Retorna el mensaje que permite conocer el estado de un slot.
  */
 public static byte[] slot_State(int slot) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_RQ_SL_DATA);
   miss.setByte(1, (byte) slot);
   miss.setByte(2, (byte) 0x00);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #8
0
 /**
  * Método que permite obtener el estado de un desvio o de un semáforo.
  *
  * @param addr Identificador del desvio o semáforo del que se quiere conocer el estado.
  * @return Retorna el mensaje que permite conocer el estado de un desvio o semáforo.
  */
 public static byte[] trn_State(int addr) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_SW_STATE);
   miss.setByte(1, (byte) (addr & 0x7F));
   miss.setByte(2, (byte) ((addr >> 7 & 0x0F)));
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #9
0
 /**
  * @param lopc
  * @param ack
  * @return
  */
 public static byte[] longAck(int lopc, int ack) {
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_LONG_ACK);
   miss.setByte(1, (byte) lopc);
   miss.setByte(2, (byte) ack);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #10
0
 /**
  * @param addr
  * @param on_off_value
  * @return
  */
 public static byte[] swich_Req(int addr, ON_OFF on_off_value) {
   Message miss = new Message(4);
   addr--;
   miss.setByte(0, (byte) OPC_SW_REQ);
   miss.setByte(1, (byte) (addr & 0x7F));
   miss.setByte(2, (byte) (on_off_value.value | (addr >> 7 & 0x0F)));
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #11
0
 /**
  * Método que permite recibir el estado de una locomotora.
  *
  * @param addr Identificación de una locomotora de la que se quiere obtener el estado.
  * @return Retorna el mensaje que permite recibir como respuesta el estado de la locomotora.
  */
 public static byte[] lok_State(int addr) {
   byte lowLokAddress = (byte) (addr & 0x00FF);
   byte highLokAddress = (byte) (addr >> 8 & 0xFF);
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_LOCO_ADR);
   miss.setByte(1, (byte) highLokAddress);
   miss.setByte(2, (byte) lowLokAddress);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #12
0
 /**
  * Método que permite cambiar el valor de las funciones del slot de dirección.
  *
  * @param slot Dirección de memória del decoder donde se guardan los parámetros de la locomotora.
  * @param dirf Valor de la dirección de locomotora y funciones.
  * @return Retorna el mensaje que permite cambiar el valor de las funciones del slot de dirección.
  */
 public static byte[] lok_DirF(int slot, int dirf) {
   // Dirf = 0 Direction number 1 of locomotive
   // Dirf = 32 dirction number 2 of locomotive
   Message miss = new Message(4);
   miss.setByte(0, (byte) OPC_LOCO_DIRF);
   miss.setByte(1, (byte) slot);
   miss.setByte(2, (byte) dirf);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #13
0
 /**
  * @param src
  * @param dstl
  * @param dsth
  * @param pxct1
  * @param d1
  * @param d2
  * @param d3
  * @param d4
  * @param pxct2
  * @param d5
  * @param d6
  * @param d7
  * @param d8
  * @return
  */
 public static byte[] peerXFer(
     int src,
     int dstl,
     int dsth,
     int pxct1,
     int d1,
     int d2,
     int d3,
     int d4,
     int pxct2,
     int d5,
     int d6,
     int d7,
     int d8) {
   Message miss = new Message(14);
   miss.setByte(0, (byte) 0xE5);
   miss.setByte(1, (byte) 0x0F);
   miss.setByte(2, (byte) src);
   miss.setByte(3, (byte) dstl);
   miss.setByte(4, (byte) dsth);
   miss.setByte(5, (byte) pxct1);
   miss.setByte(6, (byte) d1);
   miss.setByte(7, (byte) d2);
   miss.setByte(8, (byte) d3);
   miss.setByte(9, (byte) d4);
   miss.setByte(10, (byte) pxct2);
   miss.setByte(11, (byte) d5);
   miss.setByte(12, (byte) d6);
   miss.setByte(13, (byte) d7);
   miss.setByte(14, (byte) d8);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #14
0
 /**
  * @param reps
  * @param dhi
  * @param im1
  * @param im2
  * @param im3
  * @param im4
  * @param im5
  * @return
  */
 public static byte[] immPacket(int reps, int dhi, int im1, int im2, int im3, int im4, int im5) {
   Message miss = new Message(14);
   miss.setByte(0, (byte) 0xED);
   miss.setByte(1, (byte) 0x0B);
   miss.setByte(2, (byte) 0x7F);
   miss.setByte(3, (byte) reps);
   miss.setByte(4, (byte) dhi);
   miss.setByte(5, (byte) im1);
   miss.setByte(6, (byte) im2);
   miss.setByte(7, (byte) im3);
   miss.setByte(8, (byte) im4);
   miss.setByte(9, (byte) im5);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #15
0
  /**
   * Método que permite conocer el estado de un desvio o semáforo.
   *
   * @param addr Dirección del sensor.
   * @param IO Por defecto este valor es 1.
   * @param sI Fuente de entrada.
   * @param sL Bit de control.
   * @return Retorna el mensaje que permite conocer el estado de un desvio o un semáforo.
   */
  public static byte[] sensor_State(int addr, boolean IO, boolean sI, boolean sL) {
    int stateIO = 0;
    if (IO) {
      stateIO = 1;
    }
    int stateI = 0;
    if (sI) {
      stateI = 1;
    }
    int stateL = 0;
    if (sL) {
      stateL = 1;
    }

    byte stateIL = (byte) ((byte) (((stateIO << 1) | stateI) << 1) | stateL);
    Message miss = new Message(4);
    addr--;
    miss.setByte(0, (byte) OPC_SW_REP);
    miss.setByte(1, (byte) (addr & 0x7F));
    miss.setByte(2, (byte) ((stateIL << 4) | (addr >> 7 & 0x0F)));
    miss.calculateChecksum();
    return (miss.getMiss());
  }
예제 #16
0
  /**
   * Método que permite escribir los valores de un sensor.
   *
   * @param addr Dirección del sensor.
   * @param sI Fuente de entrada.
   * @param sL Nivel del sensor.
   * @param sX Bit de control.
   * @return Retorna el mensaje que permite escribir los valores de un sensor.
   */
  public static byte[] sensor_Write(int addr, boolean sI, boolean sL, boolean sX) {
    int stateI = 0;
    if (sI) {
      stateI = 1;
    }
    int stateL = 0;
    if (sL) {
      stateL = 1;
    }
    int stateX = 0;
    if (sX) {
      stateX = 1;
    }

    byte stateILX = (byte) ((byte) (((stateI << 1) | stateL) << 1) | stateX);

    Message miss = new Message(4);
    addr--;
    miss.setByte(0, (byte) OPC_INPUT_REP);
    miss.setByte(1, (byte) (addr & 0x7F));
    miss.setByte(2, (byte) ((stateILX << 4) | (addr >> 7 & 0x0F)));
    miss.calculateChecksum();
    return (miss.getMiss());
  }
예제 #17
0
 /**
  * Método que permite forzar idle en el decoder.
  *
  * @return Retorna el mensaje que permite comunicar al decoder que debe forzar idle.
  */
 public static byte[] intelli_idleForce() {
   Message miss = new Message(2);
   miss.setByte(0, OPC_IDLE);
   miss.calculateChecksum();
   return (miss.getMiss());
 }
예제 #18
0
 /**
  * Método que permite mantener el decoder en estado ocupado.
  *
  * @return Retorna el mensaje que permite comunicar al decoder que debe mantenerse en estado
  *     ocupado.
  */
 public static byte[] intelli_Bussy() {
   Message miss = new Message(2);
   miss.setByte(0, OPC_BUSY);
   miss.calculateChecksum();
   return (miss.getMiss());
 }