Este documento está diseñado para usuarios y desarrolladores que necesiten crear aplicaciones para comunicarse con el sistema One4All.


Generalidades


El host usa un protocolo basado en texto para comunicarse con el sistema One4All a través de TCP/IP en el puerto 10002. De manera predeterminada, el enfoque para obtener las lecturas (o pasadas) de los chips se basa en la extracción (pull mode), pero puede también elegir enviar las pasadas al host automáticamente mientras van apareciendo (push mode).


Los siguientes símbolos se utilizan para la documentación del protocolo:

comando enviado.
respuesta desde el One4All.
<CrLf> retorno de carro y avance de línea agregado luego de cada comando.


Tabla de asignación de IP


Cada ID del One4All se corresponde con una dirección IP fija dentro de la red:


ID
IP
0
192.168.1.10
1
192.168.1.11
2
192.168.1.12
3
192.168.1.13
4
192.168.1.14
5
192.168.1.15
6
192.168.1.16
7
192.168.1.17
8
192.168.1.18
9
192.168.1.19
10
192.168.1.20
11
192.168.1.21
12
192.168.1.22
13
192.168.1.23
14
192.168.1.24
15
192.168.1.25


Registro de pasadas


Para cada lectura de chip, el sistema generará un registro de pasada que se guarda en el archivo de backup CSV de la sesión o lo envía al servidor o a Internet, según lo solicitado. Desde la versión 3.0 del protocolo, el registro de pasada tiene el siguiente formato:


<PassingNo>;<TimerCode>;<ChipNumber>;<Date>;<Time>;<Antenna>;<SeenCount>;<EPC>;<FREE>;<FREE>;<FREE>;<FREE>;<Checksum><CrLf>


Donde:

<PassingNo> es el número de pasada registrada. Comienza con 1 en cada archivo de sesión nuevo.
<TimerCode> es el código del Timer o del evento.
<ChipNumber> es el número en el chip.
<Date> es la fecha de la detección (formato: yyyy-MM-dd).
<Time> es la hora de la detección (formato: HH:mm:sss.kkk).
<Antenna> es la ID de la antena que realizó la detección.
<SeenCount> es la cantidad de veces que el chip fue detectado.
<EPC> es el dato puro del EPC. Este dato está solo disponible sobre lectura de chips con formato customizado, desde la versión de firmware 1.1.4.
<FREE>;<FREE>;<FREE>;<FREE> es espacio reservado para futuros desarrollos, desde la versión de firmware 1.1.4.
<Checksum> es el Macsha checksum.


Cada registro de pasada finaliza con <CrLf>


Ejemplo:

1234;MC;00001;2017-04-23;13:30:45.492;3;1;;;;;;Z1y39<CrLf>


Comandos


A continuación se listan los principales comandos disponibles.


Get Protocol Version


Para obtener la versión de protocolo en el sistema, el host envía GETPROTOCOL<CrLf>


El One4All responde:
GETPROTOCOL;<Current><Min><Max><CrLf>


Donde:
<Current> es la versión actual del protocolo.
<Min> es la versión mínima del protocolo soportada por el sistema.
<Max> es la versión máxima del protocolo soportada por el sistema.


Ejemplo:
← GETPROTOCOL<CrLf>
 
→ GETPROTOCOL;3.0;1.0;2.0<CrLf>


Set Protocol Version


Para configurar la versión de protocolo en el sistema, el host envía SETPROTOCOL<Version><CrLf>. Esta operación puede ser realizada solamente en Stop mode.


El One4All responde:
SETPROTOCOL;<Response><CrLf>


Donde <Response> es:
<Version>, en el éxito, la versión actual del protocolo.
STARTMODE, si el sistema esta en Start mode.
UNKNOWN, si la versión solicitada no existe o no esta disponible.
ERR, si ocurrió algún error.


Ejemplo:
← SETPROTOCOL;3.0<CrLf>
→ SETPROTOCOL;3.0<CrLf>


Start


Para comenzar la lectura de los chips, el host envía START<CrLf>


El One4All responde:
START;<Response><CrLf>


Donde <Response> es:
En el éxito, la fecha y hora del inicio de la sesión de cronometraje y el nombre del archivo de backup de la sesión con el siguiente formato: yyyyMMdd-HHmmss.csv
STARTMODE, si el sistema ya se encuentra en Start mode.
ERRANTENNAS, si no hay antenas conectadas al sistema.
ERRCONNECT, ERRSTART, ERR, si ocurre algún otro error durante el proceso de inicio.


Ejemplo:
← START<CrLf>
→ START;20171223-153055.csv<CrLf>


Stop


Para finalizar la lectura de los chips, el host envía STOP<CrLf>


El One4All responde:
STOP;<Response><CrLf>


Donde <Response> es:
OK, en el éxito.
STOPMODE, si el sistema ya esta en Stop mode.
ERRCLOSE, ERRSTOP, ERR, si ocurre algún otro error durante el proceso de parada.


Ejemplo:
← STOP<CrLf>
→ STOP;OK<CrLf>


Push Tags


Con el fin de habilitar/deshabilitar la transmisión en vivo de las pasadas al host, el host envía PUSHTAGS;<Status><CrLf>. Por defecto, el Push mode está deshabilitado. Las pasadas serán enviadas a la última conexión activa solamente.


Donde <Status> es:
true, para habilitar el Push mode.
false, para deshabilitar el Push mode.


El One4All responde:
PUSHTAGS;<Response><CrLf>


Donde <Response> es:
true, false, en el éxito.
ERR, si ocurrió algún error.


Ejemplo:
PUSHTAGS;true<CrLf> 
PUSHTAGS;true<CrLf> 


Set Bounce


Es el tiempo muerto de detección o por cuánto tiempo el sistema debe ignorar un chip después de una detección. Para establecer el tiempo de rebote o el tiempo muerto, el host envía SETBOUNCE;<Seconds><CrLf>. Por defecto, el tiempo de rebote es de 5 segundos.


Donde <Seconds> es desde 1 hasta 3600.


El One4All responde:
SETBOUNCE;<Response><CrLf>


Donde <Response> es:
1 a 3600, en el éxito.
ERR, si ocurrió algún error.


Ejemplo:
← SETBOUNCE;60<CrLf> 
→ SETBOUNCE;60<CrLf>


Set Time


Con el fin de configurar la fecha y hora interna del sistema, el host envía SETTIME;yyyy-MM-dd;HH:mm:ss<CrLf>. Esta operación puede ser realizada solamente en Stop mode.


El One4All responde:
SETTIME;<Response><CrLf>


Donde <Response> es:
En el éxito, la fecha y hora configurada con el siguiente formato: yyyy-MM-dd;HH:mm:ss
 STARTMODE
, si el sistema esta en Start mode.
ERR, si ocurrió algún error.


Ejemplo:
SETTIME;2017-12-23;15:30:55<CrLf> 
→ SETTIME;2017-12-23;15:30:55<CrLf>


Get Time


Con el fin de obtener la fecha y hora interna del sistema, el host envía GETTIME<CrLf>.


El One4All responde:
GETTIME;<Response><CrLf>


Donde <Response> es:
En el éxito, la fecha y hora del sistema con el siguiente formato: yyyy-MM-dd;HH:mm:ss
 
ERR, si ocurrió algún error.


Ejemplo:
GETTIME<CrLf> 
→ GETTIME;2017-12-23;15:30:55<CrLf>


Set Buzzer


Con el fin de habilitar/deshabilitar el buzzer y la señal lumínica, el host envía SETBUZZER;<Status><CrLf>.


Donde <Status> es:
true, para habilitar el buzzer.
false, para deshabilitar el buzzer.


El One4All responde:
SETBUZZER;<Response><CrLf>


Donde <Response> es:
true, false, en el éxito.
ERR, si ocurrió algún error.


Ejemplo:
SETBUZZER;true<CrLf> 
SETBUZZER;true<CrLf> 


New File


Con el fin de crear un nuevo archivo sin parar el Start mode, el host envía NEWFILE<CrLf>. Esta operación puede ser realizada solamente en Start mode.


El One4All responde:
NEWFILE;<Response><CrLf>


Donde <Response> es:
En el éxito, la fecha y hora del nuevo archivo de sesión de cronometraje y el nombre del nuevo archivo de backup de la sesión con el siguiente formato: yyyyMMdd-HHmmss.csv
STOPTMODE, si el sistema se encuentra en Stop mode.
ERRFILE, ERR, si ocurre algún otro error durante el proceso.


Ejemplo:
← NEWFILE<CrLf>
→ NEWFILE;20171223-153055.csv<CrLf>


Passings


Con el fin de recibir el número de pasadas y los últimos ocho chips leídos de la sesión de cronometraje actual, el host envía PASSINGS<CrLf>.


El One4All responde:
PASSINGS;<Number>;<Last eight><CrLf>


Donde:
<Number>, es el número de pasadas actuales de la sesión de cronometraje.
<Last eight>, es:
los últimos ocho chips leídos con el formato: MC00001;MC00002;MC00003;...
ERR, si ocurre algún error durante el proceso.


Ejemplo:
PASSINGS<CrLf> 
PASSINGS;190;MC00001;MC00002;MC00003;MC00017;MC00022;MC00033;MC00012;MC00190<CrLf> 


Get Queue


Con el fin de recibir el número de pasadas que están en la cola de análisis, el host envía GETQUEUE<CrLf>.


El One4All responde:
GETQUEUE;<Number><CrLf>


Donde <Number>, es el número de pasadas que se encuentran en la cola del sistema.


Ejemplo:
GETQUEUE<CrLf> 
GETQUEUE;17<CrLf> 


Get Passings


Con el fin de recibir los datos completos de las pasadas del archivo de sesión actual, el host envía GETPASSINGS;<StartPassing>;<EndPassing><CrLf>.


Donde:
<StartPassing> es el número inicial de las pasadas a enviar.
<EndPassing> es el número final de las pasadas a enviar.


Ejemplo:
← GETPASSINGS;15;15<CrLf>
→ 15;MC;00001;2017-04-23;13:30:45.492;3;1;Z1y39<CrLf>
16;MC;00002;2017-04-23;13:30:46.543;4;1;O90ut<CrLf>
17;MC;00015;2017-04-23;13:30:46.993;4;1;kle23<CrLf>
 <CrLf>


Read Battery


Con el fin de recibir el estado de la batería interna, el host envía READBATTERY;<CrLf>.


El One4All responde:
READBATTERY;VOLTS<Volts>;PERCENT<Percent>;HASPOWER<HasPower><CrLf>


Donde:
<Volts> es el voltaje actual de la batería. 26,5 Volts es el valor máximo.
<Percent> es la carga actual en porcentaje de la batería. Desde 0% hasta 100%.
<HasPower> es:
true, si el sistema esta conectado a la red eléctrica y cargando.
false, si el sistema no esta conectado a la red eléctrica.


Ejemplo:
← READBATTERY<CrLf>
→ READBATTERY;VOLTS;25.5;PERCENT;90;HASPOWER;false<CrLf>


Ping


Cuando el host envía PING<CrLf> al sistema, el One4All responde con PING;PONG<CrLf>.


Ejemplo:
← PING<CrLf>
→ PING;PONG<CrLf>


List Files


Para listar los archivos de backup CSV (pasadas) disponibles en el sistema, el host envía LISTFILES;<CrLf>.


El One4All responde:
LISTFILES;<FileList><CrLf>


Donde <FileList> es:
En el éxito, los nombres de los archivos de backup disponibles, con el siguiente formato: yyyyMMdd-HHmmss.csv
NOFILES, si no hay archivos en la memoria.
ERR, si ocurre algún error durante el proceso.


Ejemplo:
← LISTFILES<CrLf>
→ LISTFILES;20171222-093055.csv;20171223-183156.csv;20171224-112235.csv;<CrLf>


Get File Info


Para traer la información específica de un cierto archivo de backup, el host envía GETFILEINFO;<FileName><CrLf>, donde <FileName>, es el nombre del archivo de backup, con el formato yyyyMMdd-HHmmss.csv.


El One4All responde:
GETFILEINFO;<Response><CrLf>


Donde <Response> es <FirstPassing>;<LastPassing>;<TotalPassings>:
<FirstPassing> es la fecha y hora de la primer pasada en el archivo con el formato yyyy-MM-dd;HH:mm:ss.kkk.
<LastPassing> es la fecha y hora de la última pasada en el archivo con el formato yyyy-MM-dd;HH:mm:ss.kkk.
<TotalPassings> es la cantidad total de pasadas en el archivo.
FILENOTFOUND, si el archivo no existe.
ERR, si ocurre algún error durante el proceso.


Ejemplo:
← GETFILEINFO;20171222-093055.csv<CrLf>
 → GETFILEINFO;2017-12-22;09:30:58.967;2017-12-22;11:31:38.888;980<CrLf>


Get File


Para obtener las pasadas específicas de un cierto archivo de backup, el host envía GETFILE;<FileName>;<StartPassing>;<EndPassing><CrLf>.


Donde:
<FileName>, es el nombre del archivo de backup, con el formato yyyyMMdd-HHmmss.csv.
<StartPassing>, es el número inicial de las pasadas a enviar.
<EndPassing>, es el número final de las pasadas a enviar.


Ejemplo:
← GETFILE;20171222-093055.csv;15;17<CrLf>
→ 15;MC;00001;2017-04-23;13:30:45.492;3;1;Z1y39<CrLf>
 16;MC;00002;2017-04-23;13:30:46.543;4;1;O90ut<CrLf>
 17;MC;00015;2017-04-23;13:30:46.993;4;1;kle23<CrLf>
 <CrLf>


Clear Files


Para eliminar todos los archivos de backup disponibles en la memoria, el host envía CLEARFILES<CrLf>. Esta operación puede ser realizada solamente en Stop mode.


El One4All responde:
CLEARFILES;<Response><CrLf>


Donde <Response> es:
OK, en el éxito.
ERR, si ocurre algún error durante el proceso.


¡IMPORTANTE!:
Este comando eliminará TODOS los archivos de backup disponibles en la memoria.