Comando EVAL - Avaliador de Expressões
Motor de avaliação de expressões matemáticas, lógicas e de estado do sistema.
V, AIN, IN, GPS, ECU...
→Aritméticos, lógicos, bitwise
→printf style: %d, %f, %X
→Casos de uso práticos
→📋 Sintaxe
EVAL expressão[:formato[:valor_erro]]| Parâmetro | Descrição | Default |
|---|---|---|
expressão | Operação ou consulta a avaliar | (obrigatório) |
formato | Formato de saída estilo printf | %.2f |
valor_erro | Valor se falhar a avaliação | ERR |
Os parênteses depois de EVAL são opcionais. A expressão termina com < ou o primeiro ; encontrado.
Exemplos Básicos
>EVAL 10 + 5<Resultado: 15.00
>EVAL 10 + 5.5 * 2:%.1f:NA<Resultado: 21.0 (se falhar, retorna NA)
📊 Variáveis do Sistema
Sem Parâmetros
| Variável | Descrição | Unidade | Link |
|---|---|---|---|
V | Tensão principal | dV (28.0V = 280) | |
VBU | Tensão bateria backup | dV | |
OT | Odômetro total | metros | |
OP | Odômetro parcial | metros | |
CREG | Estado registro rede | - | |
CSQ | Qualidade sinal celular | 0-31 | |
HO | Horímetro | segundos | |
VEL | Velocidade GPS filtrada | km/h | |
HDG | Rumo GPS (heading) (v1.9.18+) | 0-360° | |
AGE | Idade dado GPS | segundos | |
LAT | Latitude | graus×10⁵ | |
LON | Longitude | graus×10⁵ | |
IGN | Estado ignição | 0/1 | |
CEL | Conexão celular | 0/1 | |
GPS | GPS ativo | 0/1 | |
PWR | Alimentação | 0/1 | |
JMD | Jamming detectado | 0/1 | |
PK | Parking | 0/1 | |
AC | Acelerômetro | 0/1 | |
WIF | WiFi | 0/1 | |
CAN | Bus CAN | 0/1 |
Com Um Parâmetro
| Variável | Descrição | Faixa | Link |
|---|---|---|---|
AIN(n) | Entrada analógica | 0-3 | |
IN(n) | Entrada digital | 0-3 | |
XP(n) | Saída digital | 0-n | |
UV(n) | Variável de usuário | 0-n | |
U(n) | Variável auxiliar | 0-n | |
MXB(n) | Buffer XB | 0-n | |
DC(n) | Ângulo (ANG) | 0-n | |
DV(n) | Frequência (FRE) | 0-n | |
OW(n) | Sensor 1-Wire | 0-n |
Com Dois Parâmetros
| Variável | Descrição | Param 1 | Param 2 |
|---|---|---|---|
ECU(i;t) | Dados ECU | Índice | 0=valor, 2=idade |
MBS(i;t) | Sensores BLE | Índice | 0=temp, 1=umidade |
MTD(i;t) | Timers TD | Índice | 0=estado, 1=timer, 2=dist, 3=timeout |
MTR(i;t) | Trips | Índice | 0=trigger, 1=habilitado, 2=hora |
MNT(i;t) | Contadores | Índice | 0=atual, 1=máximo |
MDL(i;t) | Dados LOG | Índice | 0=quantidade, 1=pendentes |
MPC(i;t) | Contador pulsos | Índice | 0=valor, 1=fator K |
MFC(i;t) | Frequencímetro | Índice | 0=freq, 1=fator Q |
🧮 Operadores
Aritméticos
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
+ | Soma | EVAL 10 + 5 | 15.00 |
- | Subtração | EVAL 20 - 8 | 12.00 |
* | Multiplicação | EVAL 3 * 4 | 12.00 |
/ | Divisão | EVAL 10 / 2 | 5.00 |
Comparadores
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
gt | Maior que | EVAL 5 gt 3 | 1.00 |
lt | Menor que | EVAL 5 lt 7 | 1.00 |
ge | Maior ou igual | EVAL 5 ge 5 | 1.00 |
le | Menor ou igual | EVAL 4 le 5 | 1.00 |
eq | Igual | EVAL 5 eq 5 | 1.00 |
ne | Não igual | EVAL 5 ne 6 | 1.00 |
Lógicos
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
&& | AND lógico | EVAL (5 gt 3) && (2 lt 4) | 1.00 |
|| | OR lógico | EVAL (5 gt 6) || (2 lt 4) | 1.00 |
Bitwise
| Operador | Descrição | Exemplo | Resultado |
|---|---|---|---|
& | AND bit a bit | EVAL 5 & 3 | 1.00 |
| | OR bit a bit | EVAL 5 | 2 | 7.00 |
sl | Shift left | EVAL 2 sl 1 | 4.00 |
sr | Shift right | EVAL 4 sr 1 | 2.00 |
📝 Formato de Saída
Personalize a apresentação do resultado usando sintaxe printf de C:
| Formato | Descrição | Exemplo | Resultado |
|---|---|---|---|
%.2f | Flutuante 2 decimais | EVAL 3.14159:%.2f | 3.14 |
%.3f | Flutuante 3 decimais | EVAL 3.14159:%.3f | 3.142 |
%d | Inteiro | EVAL 5.7:%d | 5 |
%x | Hexadecimal minúsculas | EVAL 15:%x | f |
%X | Hexadecimal maiúsculas | EVAL 15:%X | F |
%b | Binário | EVAL 5:%b | 101 |
%05.2f | Com zeros à esquerda | EVAL 3.14:%05.2f | 03.14 |
%08.2f | Mais zeros à esquerda | EVAL 3.14:%08.2f | 00003.14 |
⚠️ Tratamento de Erros
Valor personalizado por erro
>EVAL toker + 5:%0.2f:NA<Resultado: NA (variável não definida)
Erro por padrão
>EVAL toker + 5<Resultado: ERR
Divisão por zero
>EVAL 10 / 0<Resultado: Inf
💬 Exemplos Práticos
Rumo GPS (HDG)
>EVAL HDG<Retorna o rumo atual em graus (0-360°). Exemplo: 185.00
>EVAL HDG ge 180<Retorna 1.00 se o veículo aponta para sul-oeste-norte (180°-360°).
>EVAL (HDG ge 0) && (HDG lt 90)<Retorna 1.00 se aponta para norte-leste (0°-90°).
Soma de parâmetros ECU
>EVAL ECU(0;0) + ECU(1;0) + ECU(2;0):%0.2f<Soma valores ECU dos índices 0, 1 e 2.
Comparação AIN
>EVAL AIN(0) gt 500<Retorna 1.00 se AIN(0) > 500, senão 0.00.
Lógica composta
>EVAL (V gt 150) && (AIN(0) lt 100)<Verifica condição composta sobre voltagem e entrada analógica.
Cálculo com formato
>EVAL (10 * 5) + 3:%0.3f<Resultado: 53.000
Expressão complexa
>EVAL ((AIN(0) * 10) + (AIN(1) * 5)) / 2:%0.2f:NA<Calcula média ponderada com formato personalizado e erro NA.
Máscara bitwise
>EVAL IN(0) & 0x0F:%X<Aplica máscara à entrada digital e mostra em hexadecimal.
Shift bits
>EVAL 8 sr 2<Resultado: 2.00 (8 >> 2)
Divisão com formato inteiro
>EVAL 25 / 4:%d<Resultado: 6 (divisão inteira)
Conversão de temperatura
>EVAL (AIN(0) * 0.1) - 40:%0.1f:ERR<Converte leitura ADC para temperatura com erro ERR.
🔧 Resolução de Erros
| Erro | Causa | Solução |
|---|---|---|
ERR | Variável não definida ou sintaxe incorreta | Verifique ortografia, use valor_erro |
Inf | Divisão por zero | Valide divisor ou use valor_erro |
| Sintaxe | Parênteses desbalanceados | Revise estrutura da expressão |
| Índice | Fora da faixa (ex: AIN(9)) | Consulte faixas válidas do modelo |
Compatibilidade
Ver também
- Lista de Disparadores - Sinais disponíveis
- Motor de Eventos - Uso em regras
- Reportes de Usuário Ux - Integração com EVAL