DCC++ Comandos y su estructura


Esta entrada es básicamente la traducción al español del manual DCC++ BaseStation “Commands for DCCpp BaseStation” de su web original en gitHub.

Esta es la lista de comandos para la central DCC++ original. Compatible con casi todas las centrales DCC basadas en este sistema.

1-.Introducción:

2-.Comandos de una letra

3-.Comandos de operación del decodificador motor (CAB)

3.1-.Acelerador

3.2-. Funciones CAB

3.2.1-.Como configurar las funciones F0-F4

3.2.2-.Como configurar las funciones F5-F8

3.2.3-.Como configurar las funciones F9-F12

3.2.4-.Como configurar las funciones F13-20

3.2.5-.Como configurar las funciones F21-28

4-.Decodificadores de accesorios fijos y desvíos

4.1-.Definiendo (Configurando) un desvío

4.2-.Elimina un desvío

4.3-.Lista todos los desvíos

4.4-.Controlando un desvío definido

5-.Sensores

5.1-.Crear una ID de sensor

5.2-.Elimina una ID de sensor

5.3-.Lista ID de sensores

5.4-.Almacenar sensores en memoria EEPROM

6-.Pines de salida de Arduino

6.1-. Crear una ID del pin de salida

6.2-.Elimina una ID del pin de salida

6.3-.Lista las ID de los pines de salida

6.4-.Almacenar pines de salida en memoria EEPROM

7-.Comandos de programación en decodificador de locomotora

7.1-.Escribe el BYTE CV en vía principal

7.2-.Escribe el BIT CV en la vía principal

7.3-.Escribe el BYTE CV en la vía de programación

7.4-.Escribe el BIT CV en la vía de programación

7.5-. Lee las variables BYTE de configuración en vía de programación



DCC++ Comandos y su estructura:

1-.Introducción:

DCC++ lee comandos externos desde diferentes fuentes como son la linea de comandos del monitor serial, el software de DCC++ Controller o JMRI. Si estas probando la central o estas escribiendo tu propio software de control los siguientes comandos son los que tendrás que replicar en la mayoría de los casos. Es recomendable tener instalada la ultima versión del software tanto del IDE de Arduino como la del DCC++ Base Station

2-.Comandos de una letra:

DCC++ Base Station esta a la escucha de comandos en los siguientes formatos:

< s > s minúscula: estado de la central DCC++ BaseStation

Respuesta: Estado de la alimentación, estado de la velocidad, estado de los desvíos y el número de versión.

< 0 > Numero 0: Cambia la alimentación a apagado (OFF en ambas vías, principal y Programación).

Respuesta: < p0 > Apaga la alimentación de las vías.

< 1 > Numero 1: Cambia la alimentación a encendido (ON en ambas vías, principal y Programación).

Respuesta: < p1 > Enciende la alimentación de las vías.

< T > T mayúscula: Lista de todos los desvíos definidos..

Respuesta: < H ID DIRECCION SUBDIRECCION ESTADO > para los desvíos definidos o < X > si no hay desvíos definidos.

< S > S mayúscula: Lista de todos los sensores definidos.

Respuesta: < Q ID PIN PULLUP > para los sensores definidos o < X > si no hay sensores definidos.

< Z > Z mayúscula: Lista de todos los pines de salida definidos.

Respuesta: < Y ID PIN IFLAG ESTADO > para los pines de salida definidos < X > si no hay pines de salida definidos.

< Q > Q mayúscula: Lista el estado de todos los sensores.

Respuesta: < Q ID > (activo) o < q ID > (no activo)

< E > E mayúscula: Comando para almacenar definiciones en la memoria EEPROM

Respuesta: < e nTurnouts nSensors >

< e > e minúscula: Comando para Eliminar TODAS (desvíos, sensores y salidas) definidas en la memoria EEPROM

Respuesta: < 0 > EEPROM Empty (EEPROM VACÍA) NOTA: está acción no se puede deshacer.

< L > D mayúscula: Por favor vea el apartado de diagnósticos del comando <- L ->

Hay otros cuantos comandos de depuración en SerialCommand.cpp estos solo tienen que ser usados por usuarios avanzados. AVISO: Potencialmente dañino si no se usa correctamente.

3-. Comandos de operación del decodificador motor (CAB)

3.1-.Acelerador:

El formato de aceleración es < t REGISTRO CAB VELOCIDAD DIRECCION >

Paso a paso para el ejemplo:

<t1 03 20 1>


“<” : Comienza el comando DCC++. (el espacio entre < no es requerido pero aceptable).

“t” : (t minúscula) Este comando es para decoder instalado en la locomotora.

“1” : REGISTRO: Un número de registro desde 1 hasta MAX_MAIN_REGISTERS (por defecto 12) para almacenar el paquete DCC usado para controlar esta configuración de la aceleración (Registro “0” es para programación).

“03”: CAB: La dirección corta (1-127) o larga (128-10293) del decodificador de la locomotora (esta tiene que estar almacenada previamente en el decodificador vea el apartado Comandos de programación para saber más sobre esto.

“20”: VELOCIDAD: Velocidad de aceleración 0-126 o -1 para paradas de emergencias (resetea VELOCIDAD a 0).

“1”: DIRECCION: 1=avance, 0=retroceso. Configura la dirección, cuando VELOCIDAD=0 o VELOCIDAD= -1 solo funcionaran las luces según la dirección con el tren parado.

“>” : Termina el comando DCC++

Si el comando es recibido con éxito el monitor serial nos debería devolver: <T 1 20 1> Que significa:

“<”: Comienza el comando DCC++.

“T”: (T mayúscula) El comando DCC++ ha sido enviado desde DCC++ BaseStation.

“1”: Registro 1 ha cambiado.

“20”: Velocidad establecida 20.

“1”: Dirección retroceso.

“>”: Fin del comando DCC++.

3.2-. Funciones CAB:

El formato de funciones CAB es:

<f CAB BYTE1 [BYTE2]>


Esto cambia de encendido a apagado el decodificador de funciones de la maquina.

F0-F28 (F0 algunas veces llamado FL).

NOTA: Estas funciones son transmitidas directamente al estado de la función de la máquina y no se almacena en el DCC++ BaseStation.

Todos los grupos de funciones se configuran a la vez por los estándares NMRA DCC

3.2.1-.Como configurar las funciones F0-F4

Encendido (1) o apagado (0):

<f CAB BYTE1 [BYTE2]>


“<” = Comienza el comando DCC++.

“f” = (f minuscula) Este comando es para las funciones del CAB: luces, bocina, campana…

“CAB”: La dirección corta (1-127) o larga (128-10293) del decodificador de la locomotora

“BYTE1”: 128 + F11 + F22 + F34 + F48 + F0*16 Agregar 128 a los que se quieran encender

  • Agregar 1 para F1 Encendido
  • Agregar 2 para F2 Encendido
  • Agregar 4 para F3 Encendido
  • Agregar 8 para F4 Encendido
  • Agregar 16 para F0 Encendido
  • 128 solo apaga F0-F4
  • "BYTE2": Omitido.
  • ">" = Fin del comando DCC++.

Para hacer que BYTE1 agregue los valores de las funciones que quieran encender juntas, los que quiere apagados no se agregan al valor base de 128.

F0 (Luces)=16, F1 (Campana)=1, F2 (Bocina)=2, F3=4, F4=8

Todo apagado = 128

Luz encendida: 128 + 16 = 144

Luz y Campana encendida: 128 + 16 + 1 = 145

Luz y Bocina encendida: 128 + 16 + 2 = 146

Solo Bocina: 128 + 2 = 130

Si las luces están encendidas (144) cuando enciendes la Campana con luz, la Campana vuelve a apagarse pero la Luz se queda encendida (144).

Paso a paso para el ejemplo <f 3265 144>:

“<”: Comienza el comando DCC++.

“f”: (minúscula) Este comando es para las funciones del CAB: luces, bocina, campana…

“3265”: CAB: La dirección corta (1-127) o larga (128-10293) del decodificador de la locomotora.

“144”: Enciende las luces centrales.

“>”: Fin del comando DCC++.

3.2.2-.Como configurar las funciones F5-F8

Encendido (1) o apagado (0):

<f CAB BYTE1 [BYTE2]>


“<”: Comienza el comando DCC++.

“f”: (f minúscula) Este comando es para las funciones del CAB: F5, F6, F7, F8

“BYTE1”: 176 + F51 + F62 + F74 + F88

Agregar 176 a los que se quieren encender

Agregar 1 para F5 Encendido

Agregar 2 para F6 Encendido

Agregar 4 para F7 Encendido

Agregar 8 para F8 Encendido

128 solo apaga F5-F8

“BYTE2”: Omitido.

“>”: Fin del comando DCC++.

3.2.3-.Como configurar las funciones F9-F12

Encendido (1) o apagado (0): <f CAB BYTE1 [BYTE2]>

“<”: Comienza el comando DCC++.

“f”: (f minúscula) Este comando es para las funciones del CAB: F9, F10, F11, F12.

BYTE1”: 160 + F91 +F102 + F114 + F128

Agregar 160 a los que se quieren encender .

Agregar 1 para F9 Encendido.

Agregar 2 para F10 Encendido.

Agregar 4 para F11 Encendido.

Agregar 8 para F12 Encendido.

160 solo apaga F9-F12.

“BYTE2”: Omitido.

“>”: Fin del comando DCC++.

3.2.4-.Como configurar las funciones F13-F20

Encendido (1) o apagado (0):

<f CAB BYTE1 [BYTE2]>


“<”: Comienza el comando DCC++.

“f”: (f minúscula) Este comando es para las funciones del CAB: F13, F14, …, F20.

“BYTE1”: 222

“BYTE2”: F131 + F142 + F154 + F168 + F1716 + F1832 + F1964 + F20128

Agregar los que se quieren encender:

Agregar 1 para F13 Encendido.

Agregar 2 para F14 Encendido.

Agregar 4 para F15 Encendido.

Agregar 8 para F16 Encendido.

Agregar 16 para F17 Encendido.

Agregar 32 para F18 Encendido.

Agregar 64 para F19 Encendido.

Agregar 128 para F20 Encendido.

0 solo apaga F13-F20.

“>”: Fin del comando DCC++.

3.2.5-.Como configurar las funciones F21-F28

Encendido (1) o apagado (0):

<f CAB BYTE1 [BYTE2]>


“<”: Comienza el comando DCC++.

“f”: (f minúscula) Este comando es para las funciones del CAB: F21, F22, …, F28.

“BYTE1”: 223

“BYTE2”: F211 + F222 + F234 + F248 + F2516 + F2632 + F2764 + F28128

Agregar los que se quieren encender:

Agregar 1 para F21 Encendido.

Agregar 2 para F22 Encendido.

Agregar 4 para F23 Encendido.

Agregar 8 para F24 Encendido.

Agregar 16 para F25 Encendido.

Agregar 32 para F26 Encendido.

Agregar 64 para F27 Encendido.

Agregar 128 para F28 Encendido.

0 solo apaga F21-F28.

“>”: Fin del comando DCC++.

Devuelve: Sin respuesta.

Las funciones CAB no tienen respuesta. Las funciones CAB no se almacenan en el DCC++ BaseStation.

Cada uno de los grupos no afecta a los otros grupos. Para encender F0 y F22 hacen falta dos comandos DCC++ por separado, uno para F0 y otro para F22.

4-.Decodificadores de accesorios fijos y desvíos.

DCC++ BASE STATION puede realizar un seguimiento de la dirección de cualquier desvío controlado por un decoder fijo de funciones DCC una vez que este esta definido en la central (configurado).

Todos los decodificadores que no están en una maquina son de decodificadores de accesorios incluidos los desvíos.

Además de definir los desvíos y cualquier otro accesorio DCC conectado, con ellos definidos podemos operar con ellos con el siguiente comando de accesorios DCC++:


<a DIRECCION SUBDIRECCION ESTADO>


"a": (a minúscula) Este comando es para decodificador de funciones.

"DIRECCION": Dirección primaria del decodificador que controla el desvío (0-511).

"SUBDIRECCION": La subdirección del decodificador que controla el desvío (0-3).

"ESTADO": (0) (Desactivado, Apagado, Sin cambio) o (1) (Activado, Encendido, Cambiado).

Este simple comando envía la instrucción DCC apropiada a las vías principales para operar los accesorios conectados. No se almacena o retiene ninguna información sobre el estado actual de ese accesorio.

4.1-.Definiendo (Configurando) un desvío.

Para tener almacenados y que retenga la dirección de los desvíos DCC conectados, e invoque automáticamente el comando <a> requerido según sea necesario, primero hay que definir / editar / eliminar dichos desvíos usando las siguientes variaciones del comando "T":

4.1-.Define un desvío:

Comando para definir un desvío:


<T ID ADDRESS SUBADDRESS>


Crear una nueva ID de desvío con DIRECCION y SUBDIRECCION si la dirección ya existe, esta se actualizara (sobrescribiendo) con la nueva DIRECCION y SUBDIRECCION.

Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, fuera de memoria)


4.2-.Elimina un desvío:


<T ID>


Comando para eliminar un desvío

Elimina la definición del desvío con ese ID.

Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, ID de sensor no existe)


4.3-.Lista todos los desvíos:

Comando para listar todos los desvíos definidos: < T >:


<T>


Lista todos los desvíos definidos.

Respuesta:

<H ID DIRECCION SUBDIRECCION ESTADO>


Para cualquier desvío definido o


<X>


si no hay desvíos definidos o guardados.

"ID": La identificación numérica (0-32767) del desvío a controlar. Las ID's son compartidas por desvíos, sensores y salidas.

"DIRECCION": Dirección primaria del decodificador que controla el desvío (0-511).

"SUBDIRECCION": La subdirección del decodificador que controla el desvío (0-3).

Una vez que todos los desvíos se hayan definido correctamente, use el comando:


<E>


Para almacenar sus definiciones en EEPROM.

Si después de realizar ediciones / adiciones / eliminaciones a las definiciones, debe invocar el comando:


<E>


Para que esas nuevas definiciones se actualicen en la EEPROM.

También puede BORRAR todo (desvíos, sensores y salidas) almacenado en la EEPROM invocando el comando:


<e>


Esta acción no se puede deshacer.

Ejemplo: Tenemos un desvío en la linea principal hacia los almacenes. El desvío es controlado por un decoder de accesorios con dirección "123" y cableado en la salida 3 (Subdirección) y queremos cambiar la ID a 10. Debemos mandar el siguiente comando DCC++:


<T 10 123 3>


Este comando contiene:

"T": (T mayúscula) Define Desvío.

"10": Número ID que queremos configurar para este desvío.

"123": Dirección del decoder de accesorios.

"3": El desvío esta cableado en la salida 3.

Devuelve:

<O>


Si es correcto.

DCC++ debería devolver:


<O>


Si el comando se ha almacenado correctamentele sigue el siguiente comando DCC++:


<E>


Almacena (guarda) esta definición en la memoria EEPROM.

Debería devolver:

<O>


Si el comando es correcto

4.4-.Controlando un desvío definido.

Establece la posición de un desvío identificado (girado o recto).

El formato para cambiar la posición es:


<T ID ESTADO>


"ID": La identificación numérica (0-32767) del desvío ya definido anteriormente.

"ESTADO": 0 (girado) o 1 (recto).

Devuelve:

<H ID ESTADO>


o


<X>


Si el desvío no existe.

Continuamos el ejemplo por aquí: Para cambiar el desvío diez para que la máquina entre en el almacén tenemos que mandar el siguiente comando:


<T 10 1>


Este comando contiene:

"T": (T mayúscula) Estado del desvío.

"10": La identificación numérica (0-32767) del desvío a controlar.

"1":configura el estado del desvío (1 recto).

DCC++ debería devolver < H 10 1 > indicando que el estado del desvío 10 cambio correctamente. NOTA: Esto puede mostrar todos los desvíos y sus posiciones.

5-.Sensores.

DCC++ BaseStation puede soportar sensores de entrada conectadas a cualquier pin no usado por este programa. Pueden ser de cualquier tipo (infrarrojos, magnético, mecánico...). El único requerimiento es que cuando el sensor este "activado" el pin de Arduino tiene que estar forzosamente en LOW (ejem. a GND)y cuando este desactivado tiene que estar en HIGH (ejem. 5V) o se le permitirá un float HIGH si se esta usando resistencias pull-up internas especificadas.

Para garantizar los niveles de tensión adecuados, parte de la circuitería del sensor DEBE estar conectada a la misma tierra que la utilizada por el Arduino. Es decir las GND del sensor y la de Arduino tienen que estar compartidas.

El código del sensor utiliza suavizado exponencial para "despejar" picos generados por interruptores mecánicos y transistores. Esto evita la necesidad de crear circuitos de suavizado para cada sensor. Es posible que necesitemos cambiar los parámetros en el archivo Sensor.cpp mediante prueba y error dependiendo de los sensores específicos que tengamos instalados.

Para que este sketch supervise uno o más pines Arduino para sensores, primero defina / edite / elimine el sensor utilizando la siguiente variación del comando "S":

5.1-.Crear una ID de sensor:


<S ID PIN PULLUP>


Crea una nueva ID del sensor con un PIN especifico, si la ID del sensor existe este se actualiza con el pin especificado (Tu eliges el número).

Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, fuera de memoria)


5.2-.Elimina una ID de sensor:

Elimina la definición del ID.


<S ID>


Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, ID de sensor no existe)


5.3-.Lista ID de sensores:


<S>


Muestra una lista todos los sensores definidos.

Devuelve:

<Q ID PIN PULLUP >


Para los sensores definidos o si no hay sensores definidos.

"ID": La identificación numérica (0-32767) del sensor. Las ID's son compartidas por desvíos, sensores y salidas.

"PIN": Número del PIN Arduino donde esta conectado el sensor.

"PULLUP": 1 = Usa la resistencia interna pull-up para el PIN. 0 = No usa la resistencia pull-up del PIN.

5.4-.Almacenar sensores en memoria EEPROM:

Una vez que todos los sensores se hayan definido correctamente, use el comando


<E>


para almacenar sus definiciones en la memoria EEPROM.

Si después de realizar ediciones / adiciones / eliminaciones a las definiciones, debe invocar el comando:


<E>


para que esas nuevas definiciones se actualicen en la EEPROM.

También puede BORRAR todo (desvíos, sensores y salidas) almacenado en la EEPROM invocando el comando:


<e>


Esta acción no se puede deshacer.

Todos los sensores definidos anteriormente se verifican secuencialmente en el loop principal del sketch. Si PIN de un sensor cambia de un estado a otro uno de los siguientes mensajes seriales seran generados:


<Q ID>


Para la transición del sensor de dicha ID de un estado HIGH a un estado LOW (ejem: el sensor se ha activado).


<q ID>


Para la transición del sensor de dicha ID de un estado LOW a un estado HIGH (ejem: el sensor no esta activado).

Dependiendo de si el sensor físico está actuando como un "disparador de evento" o un "sensor de detección", puede decidir ignorar el retorno <q ID> y solo reaccionar ante los disparadores <Q ID>.

6-.Pines de salida de Arduino:

DCC ++ BaseStation admite el control de SALIDA opcional de cualquier pin Arduino no utilizado por el sketch. Los PINES pueden activarse o desactivarse. El valor predeterminado es establecer los pines activos HIGH e inactivo pines LOW. Sin embargo, este comportamiento predeterminado puede invertirse para cualquier pin, en cuyo caso activo = LOW e inactivo = HIGH.

Las definiciones y el estado (ACTIVO / INACTIVO) para los pines se retienen en EEPROM y se restauran al encenderse.

6.1-. Crear una ID del pin de salida:

Para que DCC ++ BaseStation utilice uno o más pines Arduino como salidas personalizadas, primero hay que definir / editar / eliminar las definiciones de salida usando la siguiente variación del comando "Z":


<Z ID PIN FLAG>


Crea un nuevo identificador de salida, con un PIN especifico y el valor IFLAG. Si el ID ya existe, este sera actualizado con el PIN e IFLAG especificados. NOTA: El estado de la salida puede ser puesto inmediatamente activo/inactivo y el pin HIGH/LOW de acuerdo con el valor especifico de IFLAG (ver siguiente).

Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, fuera de memoria)


6.2-.Elimina una ID del pin de salida.


<Z ID>


Elimina la definición del ID.

Devuelve:

<O>		// si es correcto
<X>		// incorrecto (ejemplo, fuera de memoria)


6.3-.Lista las ID de los pines de salida.


<Z>


Lista los pines de salida definidos.

Devuelve:

<Y ID PIN IFLAG ESTADO>


Para la salida del pin definido o:


<X>


Si no hay pines de salida definidos.

"ID": La identificación numérica (0-32767) de la salida. Las ID's son compartidas por desvíos, sensores y salidas.

"PIN": Numero de pin de salida en Arduino.

"ESTADO": El estado de la salida (0=INACTIVO / 1=ACTIVO).

IFLAG, bit 0: 0 = operación hacia adelante (ACTIVO = ALTO / INACTIVO = BAJO) bit 0: 1 = operación invertida (ACTIVO = BAJO / INACTIVO = ALTO)

IFLAG, bit 1: 0 = estado del pin restaurado en el encendido a ACTIVO o INACTIVO dependiendo del estado antes del apagado.
bit 1: 1 = estado del pin establecido en el encendido, o cuando se creó por primera vez, a ACTIVO de INACTIVO dependiendo de IFLAG, bit 2

IFLAG, bit 2: 0 = estado del pin establecido en INACTIVO al encenderlo o cuando se creó por primera vez. bit 2: 1 = estado del pin establecido en ACTIVO durante el encendido o cuando se creó por primera vez.

6.4-.Almacenar pines de salida en memoria EEPROM:

Una vez que todas las salidas se hayan definido correctamente, use el comando:


<E>


Para almacenar sus definiciones en la memoria EEPROM.

Si después de realizar ediciones / adiciones / eliminaciones a las definiciones, debe invocar el comando:


<E>


Para que esas nuevas definiciones se actualicen en la memoria EEPROM.

También puede BORRAR todo (desvíos, sensores y salidas) almacenado en la memoria EEPROM invocando el comando:


<e>


Esta acción no se puede deshacer.

Para cambiar el estado de las salidas definidas use:

<Z ID ESTADO>


Establece el estado del ID de salida como Activo o inactivo.

Devuelve:

<Y ID ESTADO> 

o 

<X> // si la ID de la salida no existe.



"ID": La identificación numérica (0-32767) de la salida a controlar.

"ESTADO": Estado de salida 0=INACTIVO / 1=ACTIVO.

Cuando se controla como tal, Arduino actualiza y almacena la dirección de cada salida en EEPROM para que se conserve incluso sin energía. Una lista de los estados actuales de cada salida en la forma:


<Y ID ESTADO>


Es generada por DCC ++ BaseStation cada vez que se invoca el comando de estado < s >. Esto proporciona una forma eficiente de inicializar el estado de cualquier salida monitorizada o controlada por una interfaz separada o programa GUI.

7-.Comandos de programación en decodificador de locomotora.

7.1-.Escribe el BYTE CV en vía principal.

Escribe, sin ninguna verificación, una Variable de Configuración BYTE al decodificador de locomotora en la vía principal. Escribe el BYTE CV en el siguiente formato:

<w CAB CV VALOR>


"CAB": La dirección corta (1-127) o larga (128-10293) del decodificador de la locomotora.

"CV": El número de la ubicación en la memoria de la variable de configuración para escribir en el decodificador (1-1024).

"VALOR": El valor que se escribirá en la ubicación de la memoria de variable de configuración (0-255)

Devuelve: Sin respuesta.

7.2-.Escribe el BIT CV en la vía principal.

Escribe, sin ninguna verificación, un único bit dentro de un BIT de Variable de Configuración al decodificador de locomotora en la vía principal. Escribe el BIT CV en el siguiente formato:

<b CAB CV BIT VALOR>


"CAB": La dirección corta (1-127) o larga (128-10293) del decodificador de la locomotora.

"CV": El número de la ubicación en la memoria de la variable de configuración para escribir en el decodificador (1-1024).

"BIT": el número de bit del regsitro Variable regsiter para escribir (0-7).

"VALOR": El valor del bit que sera escrito (0-1).

Devuelve: Sin respuesta.

7.3-.Escribe el BYTE CV en la vía de programación.

Escribe, sin ninguna verificación, una Variable de Configuración BYTE al decodificador de locomotora en la vía de programación. Escribe el BYTE CV en el siguiente formato:

<W CV VALOR CALLBACKNUM CALLBACKSUB>


"CV": El número de la ubicación en la memoria de la variable de configuración para escribir en el decodificador (1-1024).

"VALOR": El valor que se escribirá en la ubicación de la memoria de variable de configuración .

"CALLBACKNUM": Un entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos que llaman a esta función.

"CALLBACKSUB": un segundo entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos (por ejemplo, la interfaz DCC ++) que llaman a esta función.

Devuelve:

<r CALLBACKNUM|CALLBACKSUB|CV Valor>


VALOR CV: Es un número de 0-255 leído del CV solicitado, o -1 si la lectura de verificación falla.

7.4-. Escribe el BIT CV en la vía de programación.

Escribe, y luego verifica, un BIT de Variable de Configuración al decodificador de locomotora en la vía de programación. Escribe el BIT CV en el siguiente formato:

<B CV BIT VALOR CALLBACKNUM CALLBACKSUB>


CV”: El número de la ubicación en la memoria de la variable de configuración para escribir en el decodificador (1-1024).

"BIT": el número de bit del registro Variable regsiter para escribir (0-7).

"VALOR": El valor del bit que sera escrito (0-1).

"CALLBACKNUM": Un entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos que llaman a esta función.

"CALLBACKSUB": un segundo entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos (por ejemplo, la interfaz DCC ++) que llaman a esta función. Devuelve: ~~~ <r CALLBACKNUM|CALLBACKSUB|CV BIT VALOR> ~~~

VALOR CV: Es un número de 0-1 leído del bit CV solicitado, o -1 si la lectura de verificación falla.

7.5-. Lee las variables BYTE de configuración en vía de programación.

Lee las variables de configuración de un decoder de locomotora en la vía de programación.
Lee el BYTE CV en el siguiente formato:

<R CV CALLBACKNUM CALLBACKSUB>


“CV”: El número de la ubicación en la memoria de la variable de configuración para leer en el decodificador (1-1024).

"CALLBACKNUM": Un entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos que llaman a esta función.

"CALLBACKSUB": Un segundo entero arbitrario (0-32767) que la estación base ignora y simplemente se repite en la salida, lo que es útil para programas externos (por ejemplo, la interfaz DCC ++) que llaman a esta función.

Devuelve:

<r CALLBACKNUM|CALLBACKSUB|CV VALOR>


CV VALOR es un número de 0 a 255 leída desde la CV requerida,o -1 si la lectura de verificación falla.

All Commands and Formats were taken from the comments in the DCCpp_Uno.ino and Realted *.cpp files created by Gregg E. Berman and the files can be found Here DCC++ Base Station