manual de programação manual de programação

Transcrição

manual de programação manual de programação
MANUAL
DEDE
PROGRAMAÇÃO
MANUAL
PROGRAMAÇÃO
Versão de software 1.5.x
Versão de firmware 1.5.x
www.quercus.biz
www.quercus-technologies.com
www.quercus.com.br
Quercus Technologies
QuecusVL® Manual do Programação (v 1.5.0)
Março de 2014
© 2014 Quercus Technologies. Direitos reservados.
Este manual, assim como o sistema que ele descreve, são fornecidos mediante licença e só podem ser usados de
acordo com os termos descritos na mencionada licença.
O conteúdo deste manual é oferecido exclusivamente para uso informativo e pode ser alterado sem prévio aviso.
Nenhuma parte desta publicação deve ser reproduzida, localizada num sistema de distribuição ou divulgada de
qualquer forma sem o consentimento prévio de Quercus Technologies.
Quercus Technologies
Index
1. Introdução ...................................................................................14
2. Programação básica.......................................................................16
2.1. C++......................................................................................16
2.1.1. Gerenciamento de memória.................................................19
2.1.2. Criação do executável.........................................................20
2.2. C...........................................................................................20
2.2.1. Gerenciamento de memória.................................................22
2.2.2. Criação do executável.........................................................23
2.3. Outros exemplos......................................................................23
3. Referência de classes.....................................................................24
3.1. Compatibilidade entre os produtos QuercusVL® ..........................24
3.2. Hierarquia...............................................................................26
3.3. Classes...................................................................................27
3.4. Classe System ........................................................................27
3.4.1. Propriedades.....................................................................27
3.4.2. Métodos...........................................................................28
3.4.3. Eventos............................................................................29
3.5. Classe Units............................................................................31
3.5.1. Propriedades.....................................................................31
3.6. Classe Unit.............................................................................31
3.6.1. Propriedades.....................................................................31
3.6.2. Métodos...........................................................................34
3.7. Classe UnitStatus....................................................................39
3.7.1. Propriedades.....................................................................39
3.8. Classe VersionInformation.........................................................39
3.8.1. Propriedades.....................................................................39
3.9. Classe Detectors......................................................................40
3.9.1. Propriedades.....................................................................40
3.10. Classe Detector......................................................................41
Quercus Technologies
3.10.1. Propriedades...................................................................41
3.10.2. Métodos..........................................................................43
3.11. Classe PresenceDetector.........................................................44
3.12. Classe QueueDetector ............................................................45
3.13. Classe SpeedDetector.............................................................45
3.13.1. Propriedades...................................................................46
3.14. Classe RedLightDetector..........................................................46
3.14.1. Propriedades ..................................................................47
3.15. Classe StoppedCarDetector......................................................49
3.15.1. Propriedades...................................................................50
3.16. Classe TrafficLights.................................................................51
3.16.1. Propriedades...................................................................51
3.17. Classe TrafficLight..................................................................52
3.17.1. Propriedades...................................................................52
3.17.2. Métodos..........................................................................53
3.18. Classe HistoricIncidences........................................................54
3.18.1. Propriedades...................................................................54
3.18.2. Métodos..........................................................................54
3.19. Classe HistoricSummaries.......................................................56
3.19.1. Propriedades...................................................................56
3.19.2. Métodos..........................................................................56
3.20. Classe RealTimeInformation.....................................................58
3.20.1. Propriedades...................................................................58
3.20.2. Métodos..........................................................................60
3.21. Classe Regions......................................................................61
3.21.1. Propriedades...................................................................61
3.22. Classe Region........................................................................61
3.22.1. Propriedades...................................................................61
3.22.2. Métodos..........................................................................63
3.23. Classe Lights.........................................................................63
3.23.1. Propriedades...................................................................63
3.24. Classe Light..........................................................................64
Quercus Technologies
3.24.1. Propriedades...................................................................64
3.24.2. Métodos..........................................................................65
3.25. Classe Incidence....................................................................65
3.25.1. Propriedades...................................................................65
3.25.2. Métodos..........................................................................68
3.26. Classe Images.......................................................................69
3.26.1. Propriedades...................................................................69
3.27. Classe Image........................................................................69
3.27.1. Propriedades...................................................................70
3.27.2. Métodos..........................................................................70
3.28. Classe Video .........................................................................71
3.28.1. Propriedades...................................................................71
3.28.2. Métodos..........................................................................73
3.29. Classe resumo.......................................................................74
3.29.1. Propriedades...................................................................74
3.29.2. Métodos..........................................................................78
3.30. Classe SpeedsDistribution.......................................................79
3.30.1. Propriedades...................................................................79
3.31. Classe LengthsDistribution.......................................................79
3.31.1. Propriedades...................................................................80
3.32. Classe OccupationsDistribution.................................................80
3.32.1. Propriedades...................................................................80
3.33. Classe SpeedsUpperLimit........................................................81
3.33.1. Propriedades...................................................................81
3.34. Classe LengthsUpperLimit........................................................82
3.34.1. Propriedades...................................................................82
3.35. Classe OccupationsUpperLimit..................................................82
3.35.1. Propriedades...................................................................82
3.36. Classe Timestamp..................................................................83
3.36.1. Propriedades...................................................................83
3.37. Classe Notification..................................................................84
3.37.1. Propriedades...................................................................84
Quercus Technologies
3.38. Classe Configuration...............................................................84
3.38.1. Métodos..........................................................................84
3.39. Classe ConfigurationDetector...................................................96
3.39.1. Propriedades...................................................................96
3.39.2. Métodos........................................................................100
3.40. Classe ConfigurationPresenceDetector
..................................100
3.41. Classe ConfigurationQueueDetector.........................................100
3.42. Classe ConfigurationSpeedDetector.........................................101
3.42.1. Propriedades..................................................................101
3.43. Classe ConfigurationRedLightDetector ....................................102
3.43.1. Propriedades..................................................................102
3.44. Classe ConfigurationStoppedCarDetector.................................107
3.44.1. Propriedades..................................................................107
3.45. Classe ConfigurationOutputActuator........................................110
3.45.1. Propriedades..................................................................110
3.45.2. Métodos .......................................................................112
3.46. Classe ConfigurationOutputActuatorConditions .........................112
3.46.1. Métodos........................................................................112
3.47. Classe ConfigurationOutputActuatorCondition ..........................113
3.47.1. Propriedades..................................................................113
3.47.2. Métodos .......................................................................115
3.48. Classe ConfigurationTrafficLight..............................................115
3.48.1. Propriedades..................................................................115
3.48.2. Métodos........................................................................117
3.49. Classe ConfigurationLights.....................................................117
3.49.1. Métodos........................................................................117
3.50. Classe ConfigurationLight......................................................118
3.50.1. Propriedades..................................................................118
3.50.2. Métodos.......................................................................120
3.51. Classe SystemInformation ....................................................120
3.51.1. Propriedades..................................................................120
3.51.2. Métodos........................................................................122
Quercus Technologies
3.52. Classe SettingsEntry.............................................................122
3.52.1. Propriedades..................................................................122
3.52.2. Métodos........................................................................123
3.53. Tipo VLDetectorType ............................................................124
3.54. Tipo VLNotificationCode.........................................................124
3.55. Tipo VLIncidenceType...........................................................124
3.56. Tipo VLLightType..................................................................124
3.57. Tipo VLFieldType..................................................................125
3.58. Tipo VLOperatorType............................................................125
3.59. Tipo VLTimestampObject ......................................................125
3.60. Tipo VLLogSystem ...............................................................125
3.61. Tipo VLConfigurationActionType .............................................126
3.62. Tipo VLConditionOperatorType...............................................126
4. Protocolo de comunicações............................................................127
4.1. Formato das mensagens.........................................................128
4.2. Versões das mensagens..........................................................129
4.3. Compatibilidade entre os produtos QuercusVL® ........................131
4.4. Conceitos pré-existentes ........................................................133
4.4.1. Unidades........................................................................133
4.4.2. Booleanos.......................................................................133
4.4.3. Coordenadas...................................................................133
4.5. Estruturas comuns.................................................................133
4.5.1. Timestamp......................................................................133
4.5.2. Region............................................................................134
4.5.3. DetectorHeader...............................................................134
4.5.4. SpeedDetector.................................................................135
4.5.5. QueueDetector................................................................135
4.5.6. PresenceDetector.............................................................136
4.5.7. Light..............................................................................136
4.5.8. TrafficLight......................................................................137
4.5.9. RedLightDetector.............................................................137
4.5.10. StoppedCarDetector........................................................138
Quercus Technologies
4.5.11. VideoInformation............................................................139
4.5.12. OutputActuatorCondition.................................................140
4.5.13. OutputActuator..............................................................140
4.6. Mensagens de eventos............................................................141
4.6.1. InputChanged..................................................................141
4.6.2. Notification......................................................................141
4.6.3. SummaryInformation........................................................141
4.6.4. IncidenceInformation........................................................143
4.6.5. RealTimeInformation........................................................144
4.7. Mensagens de solicitação .......................................................145
4.7.1. VersionQuery...................................................................145
4.7.2. RealTimeQuery................................................................146
4.7.3. StatusQuery....................................................................147
4.7.4. IOQuery.........................................................................147
4.7.5. ImageQuery....................................................................148
4.7.6. SnapshotQuery................................................................149
4.7.7. UnitTasksQuery...............................................................151
4.7.8. DetectorTasksQuery.........................................................151
4.7.9. DetectorsCountQuery........................................................152
4.7.10. DetectorInformationQuery...............................................153
4.7.11. TrafficLightsCountQuery..................................................154
4.7.12. TrafficLightInformationQuery............................................155
4.7.13. SetUnitTasksQuery.........................................................156
4.7.14. SetDetectorTasksQuery...................................................156
4.7.15. OutputQuery..................................................................157
4.7.16. RebootQuery.................................................................157
4.7.17. VideoQuery...................................................................158
4.8. Mensagens de confirmação......................................................159
4.8.1. ACK...............................................................................159
4.8.2. NAK...............................................................................159
4.9. Mensagens de configuração.....................................................161
4.9.1. Ping...............................................................................161
Quercus Technologies
4.9.2. Login..............................................................................162
4.9.3. Logout............................................................................163
4.9.4. PasswordChange..............................................................163
4.9.5. Syntime..........................................................................164
4.9.6. SetTime..........................................................................164
4.9.7. UpdateFirmware...............................................................164
4.9.8. RestoreFirmware..............................................................165
4.9.9. FormatRWPartition...........................................................165
4.9.10. ExportLog.....................................................................166
4.9.11. SystemInfo....................................................................167
4.9.12. ExportStatus..................................................................168
4.9.13. ImportConfiguration.......................................................168
4.9.14. ExportConfiguration........................................................169
4.9.15. ApplyChanges................................................................169
4.9.16. DiscardChanges.............................................................170
4.9.17. Restart.........................................................................170
4.9.18. GetEntriesCount.............................................................171
4.9.19. GetEntry.......................................................................171
4.9.20. SetEntry.......................................................................172
4.9.21. RestoreEntry..................................................................173
4.9.22. GetDetectorsCount.........................................................173
4.9.23. RemoveDetector............................................................174
4.9.24. GetDetector...................................................................174
4.9.25. SetPresenceDetector.......................................................176
4.9.26. SetQueueDetector..........................................................177
4.9.27. SetRedLightDetector.......................................................178
4.9.28. SetSpeedDetector..........................................................178
4.9.29. SetStoppedCarDetector...................................................179
4.9.30. GetTrafficLightsCount......................................................180
4.9.31. RemoveTrafficLight.........................................................180
4.9.32. GetTrafficLight...............................................................181
4.9.33. SetTrafficLight...............................................................182
Quercus Technologies
4.9.34. GetLanguage....................................................................182
4.9.35. SetLanguage.................................................................183
4.9.36. GetOutputActuatorsCount................................................183
4.9.37. RemoveOutputActuator...................................................184
4.9.38. GetOutputActuator.........................................................185
4.9.39. SetOutputActuator..........................................................185
5. Communications protocol (versões antigas).....................................187
5.1. Estruturas comuns.................................................................187
5.1.1. OutputActuator................................................................187
5.1.2. DetectorHeader...............................................................187
5.1.3. SpeedDetector.................................................................188
5.1.4. QueueDetector................................................................189
5.1.5. PresenceDetector.............................................................189
5.1.6. TrafficLight......................................................................190
5.1.7. RedLightDetector.............................................................190
5.1.8. StoppedCarDetector.........................................................192
5.2. Mensagens de eventos............................................................193
5.2.1. IncidenceInformation........................................................193
5.3. Mensagens de solicitação........................................................194
5.3.1. SnapshotQuery................................................................194
5.3.2. DetectorInformationQuery.................................................194
5.3.3. TrafficLightInformationQuery.............................................194
5.4. Mensagens de configuração.....................................................195
5.4.1. SystemInfo.....................................................................195
5.4.2. GetDetector....................................................................195
5.4.3. SetPresenceDetector........................................................195
5.4.4. SetQueueDetector............................................................196
5.4.5. SetRedLightDetector.........................................................196
5.4.6. SetSpeedDetector............................................................196
5.4.7. SetStoppedCarDetector.....................................................196
5.4.8. GetTrafficLight.................................................................196
5.4.9. SetTrafficLight.................................................................197
Quercus Technologies
6. Simulador SmartLoop® TS (TSSimu)..............................................198
6.1. Configuration.........................................................................198
6.1.1. Arquivo de configuração geral............................................198
6.1.2. Arquivo de detectores.......................................................199
6.1.2.1. Seção [Globals]..............................................................................199
6.1.2.2. Sección DetectorX ..........................................................................199
6.2. Configuração da simulação......................................................200
6.2.1.1. Instruções .....................................................................................202
6.2.1.2. Exemplo........................................................................................202
6.3. Simulador.............................................................................203
6.3.1. Interface gráfica..............................................................204
7. Simulador BirdWatch® RL (RLSimu)...............................................205
7.1. Configuration.........................................................................205
7.1.1. Arquivo de configuração geral............................................205
7.1.2. Arquivo de detectores.......................................................206
7.1.2.1. Seção [Globals]..............................................................................206
7.1.2.2. Seção DetectorX............................................................................207
7.1.2.3. Seção TrafficLight_X........................................................................208
7.1.2.4. Seção LightX_Y...............................................................................208
7.2. Configuração da simulação......................................................209
7.2.1. Evento de veículo.............................................................210
7.2.1.1. Estrutura da instrução.....................................................................211
7.2.1.2. Exemplo........................................................................................211
7.2.2. Evento de entrada digital..................................................211
7.2.2.1. Estrutura da instrução.....................................................................212
7.2.2.2. Exemplo........................................................................................212
7.2.3. Evento de semáforo..........................................................212
7.2.3.1. Estrutura da instrução.....................................................................212
7.2.3.2. Exemplo........................................................................................213
7.3. Simulador.............................................................................213
7.3.1. Interface gráfica..............................................................214
7.4. Exemplo de simulação............................................................215
8. Funções adicionais.......................................................................217
8.1. Informações por FTP...............................................................217
Quercus Technologies
8.1.1. Arquivo XML....................................................................218
8.1.1.1. Resumo de presença.......................................................................218
8.1.1.2. Resumo de fila................................................................................218
8.1.1.3. Resumo da velocidade.....................................................................220
8.1.1.4. Incidência de avançar no vermelho...................................................222
8.1.1.5. Incidência de veículo parado............................................................225
8.1.2. Arquivo JPEG...................................................................227
8.1.3. Arquivo AVI.....................................................................227
8.2. Criptografia de protocolo.........................................................228
8.2.1. Formato de encriptação.....................................................228
8.2.2. Servidor de SFTP.............................................................230
9. Apêndice F: suporte.....................................................................231
Quercus Technologies
MANUAL DE PROGRAMAÇÃO
QuercusVL
Esse manual faze referência à família de produtos QuercusVL ®, formada por
SmartLoop® y BirdWatch®. Embora tenham funcionalidades diferentes, ambos
produtos são baseados em a tenológica de laços virtuais.
Portanto, ambos usem o
mesmo protocolo de comunicações, as mesmas bibliotecas e ferramentas software.
Quercus Technologies
13
MANUAL DE PROGRAMAÇÃO
QuercusVL
1. Introdução
O QuercusVL se comunica com a o aplicativo do cliente através do protocolo descrito no
capítulo 4. Protocolo de comunicações. O protocolo encontra-se coberto por bibliotecas C e C+
+, compatíveis com o Microsoft Windows e o GNU/Linux.
A seguir, são expostas as vantagens e inconvenientes de cada método de integração:
●
Bibliotecas de classe em C++: biblioteca de ligação dinâmica para Windows e
GNU/Linux que proporciona uma visão orientada aos objetos do sistema. Juntamente
com a biblioteca de ligação dinâmica, fornece-se o código-fonte de um proxy em código
C++, totalmente portável, para que a biblioteca se possa usar a partir de qualquer
compilador de C++. Administra a comunicação simultânea com várias equipes, de
forma transparente. Implementa uma interface de alto nível que proporciona uma
grande simplicidade de programação a partir de C++. Disponível para sistemas
Windows e GNU/Linux.
●
Biblioteca de funções en C: biblioteca de ligação dinâmica para o Windows e
GNU/Linux, que proporciona uma visão orientada para funções do sistema. Da mesma
forma que na biblioteca em C++, junto com a biblioteca, é fornecido o código fonte de
um proxy em código C totalmente portátil para que a biblioteca possa ser utilizada a
partir de qualquer compilador de C. Administra a comunicação simultânea com várias
vias, de forma transparente. Permite programar em C mantendo a visão de alto nível
que proporciona a biblioteca em C++. Pode-se usar tanto a partir de C como a partir de
C++. Disponível para sistemas Windows e GNU/Linux.
●
Mediante protocolo UDP próprio de QuercusVL®: fornecem-se as definições do
protocolo usado para a comunicação num arquivo de cabeçalho (VL.h), assim como
exemplos de seu uso programados em linguagem ANSI C. Além disso, fornecem-se
rotinas básicas para as comunicações UDP nos arquivos (UDTools.c e UDTools.h). Com
elas, podemos programar um aplicativo do cliente que interaja com o QuercusVL ® a
partir, praticamente, de qualquer dispositivo que tenha capacidade de transmissão por
rede.
Quercus Technologies
14
MANUAL DE PROGRAMAÇÃO
QuercusVL
A relação existente entre as diversas camadas pode-se ver no seguinte esquema
(nele se supõe que o aplicativo cliente está programado em C++).
Client computer
Aplicativo cliente
Proxy C++
Proxy C
Biblioteca de
ligação dinâmica
Protocolo UDP
QuercusLV ®
QuercusLV ®
Unidade
Unidade
Como podemos comprovar, os dois métodos de programação de alto nível (C/C++) não são
nada mais do que camadas sucessivas em torno de uma biblioteca de ligação dinâmica, que é
onde reside toda a funcionalidade do sistema. Deve-se notar que, apesar das diversas
camadas que compõem o sistema, estas não adicionam nenhuma sobrecarga apreciável ao
funcionamento do sistema (inclusive em máquinas de pouco rendimento). Desta forma, é
igualmente eficiente programar sobre a biblioteca em C ou C++.
Quercus Technologies
15
MANUAL DE PROGRAMAÇÃO
QuercusVL
2. Programação básica
A seguir são descritos os passos necessários para desenvolver um programa mínimo capaz de
receber as informações geradas em uma unidade.
Neste capítulo, pressupõem-se alguns conhecimentos básicos de programação (C e C++). Se
você trabalha habitualmente com alguma destas tecnologias não terá nenhum problema em
acompanhar os exemplos.
O código-fonte dos exemplos encontra-se em <pasta instalação>/Samples.
2.1. C++
O método usado na biblioteca C++ para gerar eventos, de forma que a implementação fique a
cargo do aplicativo cliente, é obrigando a esta a implementar uma classe que cumpra uma
determinada interface. Quando ocorrer um evento em um detector (por exemplo, a geração de
um evento em tempo real) a biblioteca chamará a função correspondente (nesse caso, o
OnRealTimeInformation). Deve ter em conta que estas funções se chamarão a partir de linhas
(threads) de execução diferentes da linha principal, pelo que não se poderá usar em sua
implementação um código que não seja seguro com relação a linhas ou que não se possa
executar fora do linha principal.
A seguir, é exibido um programa básico em C++ que é capaz de capturar os eventos.
Corresponde ao exemplo básico de C++, localizado na pasta Samples do diretório de
instalação.
/*------------------------------------------,
| Copyright (C) 2011 Quercus Technologies |
| All rights reserved.
|
`------------------------------------------*/
#include <stdio.h>
#include "VLWrapperCpp"
using namespace VL;
class CEventHandler: public ISystemEH
{
public:
virtual void OnRealTimeInformation(RealTimeInformation info)
{
printf("OnRealTimeInformation (%d,%d)",
info.get_Unit().get_Id(),info.get_DetectorId());
switch(info.get_DetectorType())
{
Quercus Technologies
16
MANUAL DE PROGRAMAÇÃO
case DT_SPEED:
case DT_QUEUE:
case DT_PRESENCE:
default:break;
}
QuercusVL
printf("DT_SPEED\n");
printf("DT_QUEUE\n");
printf("DT_PRESENCE\n");
break;
break;
break;
}
virtual void OnIncidence(Incidence inc)
{
printf("OnIncidence (%d,%d), %d,"
,inc.get_Unit().get_Id(),inc.get_DetectorId(),inc.get_Id());
switch(inc.get_Type())
{
case IT_RED_LIGHT_VIOLATION: printf("IT_RED_LIGHT_VIOLATION\n");
break;
case IT_STOPPED_CAR_VIOLATION:printf("IT_STOPPED_CAR_VIOLATION\n");
break;
}
if(inc.get_Images().Count()>0) printf("Image 0 secs:%d\n",
inc.get_Images().Item(0).get_Timestamp().get_Seconds());
else printf("Image NOT FOUND\n");
}
};
if(inc.get_Video().IsValid()) printf("Video %dx%d duration:%d frameRate:
%d\n",inc.get_Video().get_Width(),inc.get_Video().get_Height(),
inc.get_Video().get_Duration(),inc.get_Video().get_Framerate());
else printf("Video NOT FOUND\n");
virtual void OnSummary(Summary sum)
{
printf("OnSummary (%d ,%d) ",sum.get_Unit().get_Id(),sum.get_DetectorId());
switch(sum.get_DetectorType())
{
case DT_SPEED:
printf("DT_SPEED\n");
break;
case DT_QUEUE:
printf("DT_QUEUE\n");
break;
case DT_PRESENCE:
printf("DT_PRESENCE\n");
break;
default:break;
}
}
CEventHandler EventHandler;
int main(int argc, char *argv[])
{
if(VLLoad()==-1) return -1;
if(!System::Initialize("Central.ini","Central.log",&EventHandler))
{
printf("Can't initialize system.\n");
return -1;
}
printf("Press [RETURN] to exit\n");
getchar();
System::Terminate();
VLUnload();
}
return 0;
Partes que compõem o código do exemplo:
#include "VLWrapperCpp"
Quercus Technologies
17
MANUAL DE PROGRAMAÇÃO
QuercusVL
É o único arquivo de cabeceira necessário para interagir com o QuercusVL ® a partir de C++.
using namespace VL;
Usar o espaço de nomes VL. Todas as classes estão definidas dentro do espaço de nomes “VL”
para evitar colisões de nomes com outros tipos.
class CEventHandler: public ISystemEH
Classe que implementará o código cliente que será executado com os eventos. Ao fazê-la
derivar de ISystemEH, ela é obrigada a implementar seus métodos abstratos (“On...”). Se não
estiver interessado em algum dos eventos, bastará deixar vazia a implementação do método
correspondente.
CEventHandler EventHandler;
Objeto que captará os eventos.
if(VLLoad()==-1) return -1;
Upload da biblioteca VL.
if(!System::Initialize("Central.ini","Central.log",&EventHandler)) return -1;
Inicialização da biblioteca de classes VL. Este deve ser o primeiro método que se invoque.
É o encarregado de inicializar o sistema, inicializar o sistema de eventos e estabelecer
comunicações com as unidades que tiverem sido configurados no arquivo de inicialização
“Central.ini”. No arquivo “Central.log” será encontrado o registro do funcionamento do
sistema. Como se pode verificar, o objeto do tipo CEventHandler, anteriormente criado, é
passado à biblioteca como parâmetro para que esta possa chamar suas rotinas quando for
necessário.
A partir desse ponto, se o simulador “TSSimu” o “TSSimu” for colocado em funcionamento, ou
se o sistema tiver sido configurado para se comunicar com unidades reais, começarão a ser
recebidos os eventos produzidos por esses sistemas.
System::Terminate();
Finalizar a execução da biblioteca de classes do VL.
VLUnload();
Download da biblioteca VL.
Quercus Technologies
18
MANUAL DE PROGRAMAÇÃO
QuercusVL
2.1.1. Gerenciamento de memória
Deve-se notar que toda o gerenciamento de memória da biblioteca C++ está oculto (mediante
o uso de ponteiros "inteligentes") de forma que o programador possa despreocupar-se da
criação e destruição de objetos.
Todos os objetos que compõem a biblioteca podem criar-se na pilha, passar-se como
parâmetros num valor de funções, retornar-se, etc. sem que isso suponha uma perda de
memória nem de rendimento. Por exemplo, a seguinte construção é perfeitamente válida:
Detector EjemploDeUsoDeObjetos(Unit unit)
{
Detector detectorA, detectorB;
detectorA=unit.get_Detectors().Item(0);
detectorB=detectorA;
return detectorB;
}
Embora a função do exemplo não contenha código útil, é possível ver o uso que se faz dos
objetos:
●
Detector ExemploDeUsoDeObjetos(Unit unit);
Podem passar-se tais objetos como parâmetros de funções sem usar ponteiros nem
referências e sem afetar a renda da aplicação.
Num sistema de objetos clássico em C++ esta chamada representaria uma penalização
no rendimento e uma fonte potencial de erros, dado que se chamaria o construtor de
cópia do objeto para passar tal cópia como parâmetro da função. Ao retornar a função
se chamaria o destrutor da cópia com o conseqüente perigo que isto traz se o objeto
contiver internamente ponteiros. Na Biblioteca VL, todos estes problemas foram
ultrapassados, dado que o construtor de cópia somente envolve 4 bytes de memória e
na destruição da cópia o objeto real não se destrói enquanto fique alguma cópia sem
destruir.
●
detectorA=unit.get_Detectors().Item(0);
detectorB=detectorA;
return detectorB;
Todos os métodos do VL devolvem objetos, nunca ponteiros nem referências. O
programador pode manipular o objeto em questão com total liberdade (pode duplicá-lo,
devolvê-lo, etc., e ele continuará válido).
Quercus Technologies
19
MANUAL DE PROGRAMAÇÃO
QuercusVL
2.1.2. Criação do executável
Visual Studio
●
Abra o ambiente "Samples.sln" que se encontra na pasta "Samples".
●
Defina “CppApi_Basic” como projeto ativo.
●
Realize o “Build" do executável.
Linux
●
Abra um console.
●
Acesse a pasta Samples/CppApi_Basic.
●
Execute o comando "make".
2.2. C
O método usado na biblioteca C para gerar eventos, de forma que a implementação fique sob
a responsabilidade do aplicativo do cliente, é obrigar o aplicativo do cliente a implementar uma
série de funções que executem uma interface determinada. Quando ocorrer um evento em um
detector (por exemplo, a geração de um evento em tempo real) a biblioteca chamará a função
correspondente (nesse caso, o OnRealTimeInformation). Deve ter em conta que estas funções
se chamarão a partir de linhas (threads) de execução diferentes da linha principal, pelo que
não se poderá usar em sua implementação um código que não seja seguro com relação a
linhas ou que não se possa executar fora do linha principal.
A seguir, é exibido um programa básico em C que é capaz de capturar os eventos.
Corresponde ao exemplo básico de C, localizado na pasta Samples do diretório de instalação.
/*------------------------------------------,
| Copyright (C) 2011 Quercus Technologies |
| All rights reserved.
|
`------------------------------------------*/
#include <stdio.h>
#include "VLWrapperC.h"
typedef enum
{
DT_ALL=0,
DT_SPEED=1
DT_QUEUE=2
DT_PRESENCE=3
DT_RED_LIGHT=4
DT_STOPPED_CAR=5
} VLDetectorType;
void __stdcall OnRealTimenfo(int info)
{
printf("OnRealTimeInformation (%d ,%d) ",
VL_Unit_get_Id(VL_RealTimeInformation_get_Unit(info)),
VL_RealTimeInformation_get_DetectorId(info));
switch(VL_RealTimeInformation_get_DetectorType(info))
{
case 1: printf("DT_SPEED\n");
break;
Quercus Technologies
20
MANUAL DE PROGRAMAÇÃO
}
case 2: printf("DT_QUEUE\n");
case 3: printf("DT_PRESENCE\n");
default: break;
QuercusVL
break;
break;
}
void __stdcall OnIncidence(int inc)
{
printf("OnIncidence (%d ,%d), %d, ",
VL_Unit_get_Id(VL_Incidence_get_Unit(inc)),
VL_Incidence_get_DetectorId(inc),VL_Incidence_get_Id(inc));
switch(VL_Incidence_get_Type(inc))
{
case 1: printf("IT_RED_LIGHT_VIOLATION\n"); break;
case 2: printf("IT_STOPPED_CAR_VIOLATION\n"); break;
default: break;
}
}
void __stdcall OnSummary(int sum)
{
printf("OnSummary (%d ,%d) ",
V_Unit_get_Id(VL_Summary_get_Unit(sum)),VL_Summary_get_DetectorId(sum));
switch(VL_Summary_get_DetectorType(sum))
{
case 1: printf("DT_SPEED\n");
break;
case 2: printf("DT_QUEUE\n");
break;
case 3: printf("DT_PRESENCE\n");
break;
default:break;
}
}
int main(int argc, char *argv[])
{
if(VLLoad()!=0) return -1;
if(!VL_System_Initialize("Central.ini","Central.log",
OnRealTimeInformation,
OnIncidence,
OnSummary,
NULL,
NULL)) return -1;
printf("Press [RETURN] to exit\n");
getchar();
VL_System_Terminate();
VLUnload();
return 0;
}
Partes que compõem o código do exemplo:
include “VLWrapperC.h”
Arquivos header necessários para interagir com o VL a partir de C.
void __stdcall OnRealTimenfo(int info)
void __stdcall OnIncidence(int inc)
void __stdcall OnSummary(int sum)
Implementação do código cliente que se executará com os eventos. - As funções devem ter
exatamente o mesmo formato que se definiu no arquivo de cabeçalho "VLrapperC.h" caso
Quercus Technologies
21
MANUAL DE PROGRAMAÇÃO
QuercusVL
contrário se produzirão erros em tempo de compilação.
Se não está interessado em algum dos eventos, não é necessário implementá-lo.
if(VLLoad()!=0) return -1;
Upload da biblioteca VL.
if(!VL_System_Initialize("Central.ini","Central.log", OnRealTimeInformation,
OnIncidence, OnSummary, NULL, NULL)) return -1;
Inicialização do sistema. É o encarregado de inicializar o sistema, inicializar o sistema de
eventos e estabelecer comunicações com as unidades que tiverem sido configurados no
arquivo de inicialização “Central.ini”. No arquivo “Central.log” será encontrado o registro do
funcionamento do sistema. Como pode ser comprovado, as funções previamente definidas são
passadas como parâmetros dessa função, para que possam ser chamadas quando ocorrerem
eventos.
A partir desse ponto, se o simulador “TSSimu” o “RLSimu” for colocado em funcionamento, ou
se o sistema tiver sido configurado para se comunicar com unidades reais, começarão a ser
recebidos os eventos produzidos por esses sistemas.
VL_System_Terminate();
Finalizar a execução da biblioteca de classes do VL.
VLUnload();
Download da biblioteca VL.
2.2.1. Gerenciamento de memória
A gestão de memória da biblioteca C deve ser manipulada com os métodos AddRef ( ) e
Release ( ) das classes Detector, TrafficLight, RealTimeInformation, Incidence, Summary,
Image, Video, Configuration, ConfigurationDetector, ConfigurationTrafficLight e SettingsEntry:
●
AddRef
C:
void Class_AddRef ( int h )
A função acrescenta uma referência ao objeto. É necessário ao fazer uma cópia do
objeto. Quando não for mais necessária, deverá ser chamada a função Clase_Release
(ver o método Release). O parâmetro “h” é um manipulador da classe.
Quercus Technologies
22
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Release
C:
void Class_Release ( int h )
A função reduz uma referência do objeto e libera a memória designada, se o número de
referências ficar com o valor zero. Deverá ser chamado quando não se necessitar mais
o objeto ao qual se havia acrescentado uma referência (ver AddRef); ou quando não se
necessitar mais um objeto obtido na chamada de uma função que devolva seu
manipulador (internamente, como se explica em tais métodos, o sistema chama o
método AddRef da classe).
O parâmetro “h” é um manipulador da classe.
Exemplo:
detector = VL_Unit_get_Detectors_Item(unit, 0);
// Obtenção do detector
printf( …, VL_Detector_get_Id(detector));
printf( …, VL_Detector_get_Id(detector));
//
//
VL_Detector_Release(detector);
// Liberação do detector
Trabalho com o detector
Trabalho com o detector
2.2.2. Criação do executável
Visual Studio
●
Abra o ambiente "Samples.sln" que se encontra na pasta "Samples".
●
Defina “CApi_Basic” como projeto ativo.
●
Realize o “Build" do executável.
Linux
●
Abra um console.
●
Vá para a pasta Samples/CApi_Basic.
●
Execute o comando "make".
2.3. Outros exemplos
Na pasta <pasta instalação>/Samples poderá encontrar mais exemplos de programação com a
biblioteca VL. Em tal pasta poderá encontrar um arquivo "Readme.txt" com a descrição dos
exemplos que nela se encontram.
Quercus Technologies
23
MANUAL DE PROGRAMAÇÃO
QuercusVL
3. Referência de classes
Na seguinte referência poderá encontrar a sintaxe dos dois métodos de programação (C e C+
+).
Como
todos
eles
proporcionam
praticamente
a
mesma
funcionalidade,
estão
documentados conjuntamente assinalando-se quando for necessário as possíveis diferenças
entre eles.
3.1. Compatibilidade entre os produtos QuercusVL®
A biblioteca VL é compartilhada por várias famílias de produtos da Quercus Technologies. Por
isso, existem partes (funções, classes, eventos) que não se aplicam ao cada produto. Nessa
tabela, são descritas as classes, eventos e tipos úteis para cada tipo de unidade:
SmartLoop® SmartLoop® BirdWatch® BirdWatch®
TS
TS Plus
●
●
RL
RL Plus
●
●
●
●
●
●
Eventos
OnRealTimeInformation
OnSummary
●
OnIncidence
OnNotification
●
●
OnInputChange
Classes
System.
●
●
●
●
Units
●
●
●
●
Unidade
●
●
●
●
UnitStatus
●
●
●
●
VersionInformation
●
●
●
●
Detectores
●
●
●
●
Detector
●
●
●
●
PresenceDetector
●
●
QueueDetector
●
●
RedLightDetector
●
●
StoppedCarDetector
●
●
TrafficLights
●
●
TrafficLight
●
●
HistoricIncidences
●
●
SpeedDetector
HistoricSummaries
Quercus Technologies
●
●
24
MANUAL DE PROGRAMAÇÃO
QuercusVL
RealTimeInformation
●
●
Regions
●
●
●
●
Region
●
●
●
●
Lights
●
●
Light
●
●
Incidence
●
●
Images
●
●
Imagem
●
●
Video
●
Summary
●
SpeedsDistribution
●
LengthsDistribution
●
OccupationsDistribution
●
SpeedsUpperLimit
●
LengthsUpperLimit
●
OccupationsUpperLimit
●
Notification
●
●
●
●
Timestamp
●
●
●
●
Configuration
●
●
●
●
ConfigurationDetector
●
●
●
●
ConfigurationPresenceDetector
●
●
ConfigurationQueueDetector
●
●
ConfigurationRedLightDetector
●
●
ConfigurationStoppedCarDetector
●
●
ConfigurationTrafficLight
●
●
ConfigurationLights
●
●
ConfigurationLight
●
●
ConfigurationSpeedDetector
●
ConfigurationOutputActuator
●
●
ConfigurationOutputActuatorCondition
●
●
ConfigurationOutputActuatorConditions
●
●
SystemInformation
●
●
●
●
SettingEntry
●
●
●
●
VLDetectorType
●
●
●
●
VLNotificationCode
●
●
●
●
●
●
●
Types
VLIncidenceType
Quercus Technologies
25
MANUAL DE PROGRAMAÇÃO
QuercusVL
VLLightType
●
VLFieldType
●
●
VLOperatorType
●
●
VLConditionOperatorType
●
●
VLTimestampObject
●
●
VLLogSystem
●
●
VLConfigurationActionType
●
●
●
3.2. Hierarquia
O sistema segue esta divisão hierárquica de objetos:
System.
n
Units
Unit
n
Detectors
Detector
●
n
n
n
TrafficLights
TrafficLight
Historic
Sumaries
Summary
Historic
Incidences
Incidence
System: representa a raiz do sistema VL. Proporciona, principalmente, uma coleção de
unidades.
●
Unit: é a representação lógica de uma unidade. Equivale diretamente a uma unidade.
●
Detector: é a representação lógica de um detector. Dela derivam as classes
PresenceDetector,
QueueDetector,
SpeedDetector,
RedLightDetector
e
StoppedCarDetector.
●
TrafficLight: é a representação lógica de um semáforo virtual.
●
Summary: é a representação lógica de um resumo.
●
Incidence: é a representação lógica de uma incidência.
Observar que, em cada modificação da configuração da unidade, a hierarquia de objetos do
tipo Detector e TrafficLight é recomeçada a partir de zero.
Portanto, quando se quiser fazer um uso contínuo de algum desses objetos, deverá ser salva
uma referência dele, para que ele não seja modificado ou destruído.
Quercus Technologies
26
MANUAL DE PROGRAMAÇÃO
QuercusVL
Exemplo de código incorreto (em C++)
printf( …, System::GetUnit(0).Detector(0).Id);
printf( …, System::GetUnit(0).Detector(0).Type);
modificado)
// Primeiro uso do detector
// Segundo uso do detector (poderia ter
.
Exemplo de código correto (em C++)
detector=Unit(0).Detector(0) // Obtenção do detector
printf( …, detector.Id);
printf( …, detector.Type);
// Primeiro uso do detector
// Segundo uso do detector (o detector continua sendo o mesmo)
Exemplo de código correto (em C)
detector = VL_Unit_get_Detectors_Item(unit, 0);
// Obtenção do detector
printf( …, VL_Detector_get_Id(detector));
printf( …, VL_Detector_get_SummariesPeriod(detector));
VL_Detector_Release(detector);
// Primeiro uso do detector
// Segundo uso do detector
(o detector continua sendo o mesmo)
// Liberação do detector
3.3. Classes
Em C e C++ será necessário chamar à função VlLoad() para carregar a biblioteca (antes de
qualquer outra chamada), e VLUnload() ao terminar a execução do programa (depois da
última chamada a funções da biblioteca) para descarregar a biblioteca.
Todos os valores booleanos que se documentam para a biblioteca de C++ se traduzem à
biblioteca de C como:
C++
Verdadeiro
C
Valor inteiro diferente de
zero
Falso
0
3.4. Classe System
Representa a raiz da hierarquia dos objetos que compõem o sistema VL.
3.4.1. Propriedades
●
Status
C++:
static bool get_Status ( )
C:
int VL_System_get_Status ( )
Quercus Technologies
27
MANUAL DE PROGRAMAÇÃO
QuercusVL
Retorna o estado do sistema. Será verdadeiro se todos os componentes do sistema
trabalham corretamente, o falso se existe erro em algum deles.
●
Units
C++:
static Units get_Units( )
C:
Não existe.
Em C++, devolve a coleção de unidades que formam o sistema.
Em C não existe uma representação da coleção “Units”, mas métodos para acessar
diretamente as propriedades dessa coleção:
●
int VL_System_get_Units_Count ( ): número de unidades existentes no sistema.
●
int VL_System_get_Units_Item ( int item ): retorna a unidade existente na
posição indicada dentro da coleção de unidades do sistema (a partir de zero).
Se não existir um Unit para a unidade indicada, retorna nulo.
●
int VL_System_get_Units_Id ( int id ): retorna a unidade com o identificador "id"
dentro da coleção de unidades do sistema.
Se não existir um Unit para o identificador indicado, retorna nulo.
3.4.2. Métodos
●
Initialize
C++:
static bool Initialize ( const char *iniFile, const char *logFile,ISystemEH
*systemEH )
C:
int VL_System_Initialize)(const char * iniFile, const char* logFile,
VL_ISYSTEMEH_ONREALTIMEINFORMATION,
VL_ISYSTEMEH_ONSUMMARY,
VL_ISYSTEMEH_ONINCIDENCE,
VL_ISYSTEMEH_ONNOTIFICATION,
VL_ISYSTEMEH_ONINPUTCHANGE)
Inicia o sistema com os arquivos de configuração e de log indicados. Retorna verdadeiro
se foi iniciado corretamente e falso em caso contrário.
Em C++ se espera o trajeto e o nome do arquivo de configuração e do arquivo de log
nos parâmetros "iniFile" e "logFile" respectivamente.
Em C++ o parâmetro "systemEH" é um ponteiro a um objeto de uma classe derivada
de ISystemEH, necessário para lançar os eventos.
Em C se devem passar os ponteiros às funções a chamar (callbacks) para poder lançar
os eventos. A declaração dessas funções está indicada no subcapítulo de Eventos dessa
classe. Se não necessita de captar algum dos eventos, pode passar NULL em vez do
ponteiro à função de callback.
Quercus Technologies
28
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Terminate
C++:
static void Terminate ( )
C:
void VL_System_Terminate ( )
Fecha o sistema.
3.4.3. Eventos
Em C++, declararou-se uma classe abstrata ISystemEH na qual figura a declaração dos
métodos que tratarão os eventos. Deverá criar-se uma classe derivada de ISystemEH e
implementar os métodos correspondentes aos eventos que se deseje captar.
Em C deverão implementar-se as funções que tratarão os eventos conforme a definição
indicada em cada um.
●
OnRealTimeInformation
C++:
void OnRealTimeInformation(RealTimeInformation info)
C:
void VL_OnRealTimeInformation(int hInfo)
Evento lançado quando ocorre um evento em tempo real. O parâmetro “info” recebe os
dados do evento (consulte a classe “RealTimeInformation”).
Em C, o parâmetro “hInfo” é um manipulador de RealTimeInformation. No caso de ser
necessário ficar com o elemento hInfo fora do âmbito da função, deverá ser chamada a
função VL_RealTimeInformation_AddRef para adicionar uma referência (ver método
AddRef da classe RealTimeInformation), e a função VL_RealTimeInformation_Release
para eliminar a referência e liberar a memória quando não for mais necessário (ver
método Release da classe RealTimeInformation).
●
OnIncidence
C++:
void OnIncidence(Incidence incidence)
C:
void VL_OnIncidence(int hIncidence)
Evento lançado quando se recebe uma incidência de uma unidade. O parâmetro
“incidence” recebe os dados do evento (consulte a classe “Incidence”).
Em C, o parâmetro “hIncidence” é um manipulador da incidência (Incidence). No caso
de ser necessário ficar com o elemento hIncidence fora do âmbito da função, deverá ser
chamada a função VL_Incidence_AddRef para adicionar uma referência (ver método
AddRef da classe Incidence), e a função VL_Incidence_Release para eliminar a
Quercus Technologies
29
MANUAL DE PROGRAMAÇÃO
QuercusVL
referência e liberar a memória quando não for houver mais necessidade (ver método
Release da classe Incidence). .
●
OnSummary
C++:
void OnSummary(Summary summary)
C:
void VL_OnSummary(int hSummary)
Evento lançado quando ocorre um evento em tempo real. O parâmetro “summary”
recebe os dados do evento (consulte a classe “Summary”).
Em C, o parâmetro “hSummary” é um manipulador do resumo (Summary). No caso de
ser necessário ficar com o elemento hSummary fora do âmbito da função, deverá ser
chamada a função VL_Summary_AddRef para adicionar uma referência (ver método
AddRef da classe Summary), e a função VL_Summary_Release para eliminar a
referência e liberar a memória quando não for houver mais necessidade (ver método
Release da classe Summary).
●
OnNotification
C++:
void OnNotification(Notification notification)
C:
void VL_OnNotification(int hNotification)
Evento lançado quando ocorre um evento em tempo real. O parâmetro “hNotification”
recebe os dados do evento (consulte a classe “Notification”).
Em C o parâmetro “hNotification” é um manipulador da notificação (Notification).
Tanto em C como em C++ o parâmetro de notificação somente é valido dentro do
âmbito da função.
●
OnInputChange
C++:
void OnInputChange(Unit unit, int bit, bool value)
C:
void VL_OnInputChange(int unit, int bit, bool value)
Evento lançado quando uma entrada programada (para a qual se estabeleceu, através
de configuração, que devem ser notificadas as mudanças que nela ocorrerem) de um
cartão de E/S mudou de valor. O parâmetro “unit” é a unidade onde o evento ocorreu.
O parâmetro “bit” é o número de bit (a partir de zero) que mudou e “value” é o novo
valor (‘verdadeiro’, se estiver ativo e ‘falso’, se estiver inativo).
Quercus Technologies
30
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.5. Classe Units
Coleção de unidades do sistema.
3.5.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_System_get_Units_Count ( ) de System.
Número de unidades existentes no sistema.
●
Item
C++:
Unit Item ( int item )
C:
Não existe, consultar VL_System_get_Units_Item ( ) de System.
Devolve a unidade existente na posição indicada dentro da coleção de unidades do
sistema. A posição que cada unidade ocupa dentro do sistema é a mesma do índice
definido no arquivo de inicialização do sistema.
Se não existir um Unit para a posição indicada, devolve um não válido (ver IsValid da
classe Unit).
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
●
Id
C++:
Unit Id ( int id )
C:
Não existe, consultar VL_System_get_Units_Id ( ) de System.
Retorna a unidade com o identificador "id" dentro da coleção de unidades.
Se não existir o identificador indicado, retorna um não válido (ver IsValid da classe
Unit).
3.6. Classe Unit
Representa uma unidade.
3.6.1. Propriedades
●
Id
C++:
int get_Id ( )
C:
int VL_Unit_get_Id (int h)
Identificador único da unidade.
Quercus Technologies
31
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
Ip
C++:
void get_IpAddress ( char *buffer, int bufLen )
C:
void VL_Unit_get_IpAddress ( int h, char *buffer, int bufLen )
Devolve o endereço IP da unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
Status
C++:
UnitStatus get_Status ( )
C:
int VL_Unit_get_Status (int h)
Devolve a situação da unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
Configuration
C++:
Configuraton get_Configuration ( )
C:
int VL_Unit_get_Configuration (int h)
Devolve o sistema de configuração da unidade.
Em C++, se não existir um sistema accessível na unidade, devolve um não válido (ver
IsValid da classe Configuration).
Em C++, se não existir um sistema accessível na unidade, devolve nulo.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
Detectors
C++:
Detectors get_Detectors()
C:
Não existe.
Em C++, devolve a coleção de detectores da unidade.
Em C não existe uma representação da coleção “Detectors”, mas métodos para acessar
diretamente as propriedades dessa coleção:
●
int VL_Unit_get_Detectors_Count(int h): devolve o número de detectores
existentes na unidade “h”.
●
int VL_Unit_get_Detectors_Item(int h, int item): devolve o detector existente na
posição indicada dentro da coleção de detectores da unidade “h” (a partir de
Quercus Technologies
32
MANUAL DE PROGRAMAÇÃO
QuercusVL
zero). O parâmetro “h” é um manipulador da unidade (Unit).
Se não existir um Detector para a unidade indicada, retorna nulo.
Quando não se precisar mais do elemento, deverá ser chamada a função
VL_Detector_Release (ver o método Release da classe Detector).
●
int
VL_Unit_get_Detectors_Id(int
h,
int
id):
retorna
o
detector
com
o
identificador "id" dentro da coleção de detectores da unidade "h".
O parâmetro “h” é um manipulador da unidade (Unit).
Se não existir um Detector para o identificador indicado, retorna nulo.
Quando não se precisar mais do elemento, deverá ser chamada a função
VL_Detector_Release (ver o método Release da classe Detector).
●
TrafficLights
C++:
TrafficLights get_TrafficLights()
C:
Não existe.
Em C++, devolve a coleção de semáforos da unidade.
Em C não existe uma representação da coleção “TrafficLights”, mas métodos para
acessar diretamente as propriedades dessa coleção:
●
int VL_Unit_get_TrafficLights_Count(int h): devolve o número de semáforos
existentes na unidade “h”.
●
int
VL_Unit_get_TrafficLights_Item(int
h,
int
item):
devolve
o
semáforo
existente na posição indicada dentro da coleção de detectores da unidade “h” (a
partir de zero).
Se não existir um TrafficLights para a posição indicada, retorna nulo.
O parâmetro “h” é um manipulador da unidade (Unit).
Quando não se precisar mais do elemento, deverá ser chamada a função
VL_TrafficLight_Release (ver o método Release da classe TrafficLight).
●
int VL_Unit_get_TrafficLights_Id(int h, int id): retorna o semáforo com o
identificador "id" dentro da coleção de semáforos da unidade "h".
O parâmetro “h” é um manipulador da unidade (Unit).
Se não existe um TrafficLights com o identificador indicado, retorna nulo.
Quando não se precisar mais do elemento, deverá ser chamada a função
VL_TrafficLight_Release (ver o método Release da classe TrafficLight).
●
HistoricIncidences
C++:
Quercus Technologies
HistoricIncidences get_HistoricIncidences()
33
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_Unit_get_HistoricIncidences(int h)
Devolve o histórico de incidências da unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
HistoricSummaries
C++:
HistoricSummaries get_HistoricSummaries()
C:
int VL_Unit_get_HistoricSummaries(int h)
Devolve o histórico de resumos da unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
3.6.2. Métodos
●
IsValid
C++:
bool IsValid ( )
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre uma unidade, e
devolve falso se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar imagens vazias. Em C, isso é detectado porque seu valor será zero. Em
C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de não
se tratar de um ponteiro, sempre será correto.
●
Reboot
C++:
void Reboot()
C:
void VL_Unit_Reboot ( int h )
Reinicia a unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetSnapshot
C++:
bool GetSnapshot( int roiRight, int roiTop, int roiLeft, int roiBottom, int
exposureTime, bool zoom, int maxSize, unsigned char* pImageData, int *imageLen, int
*focus, int *numDetectors, int *detectors, int *numRedLights, int *redLights, int
*inputValues, int *outputValues);
C:
int VL_Unit_GetSnapshot(int h, int roiRight, int roiTop, int roiLeft, int
roiBottom, int exposureTime, int zoom, int maxSize, unsigned char* pImageData, int*
Quercus Technologies
34
MANUAL DE PROGRAMAÇÃO
imageLen,
int
*focus,
QuercusVL
int
*numDetectors,
int
*detectors,int
*numRedLights,int
*redLights,int *inputValues,int *outputValues)
Realiza uma “radiografia" geral da unidade. Devolve uma captura em branco e preto de
0,3Mp (640 pixels de largura e 480 de altura) em jpeg e uma situação completa dos
detectores, semáforos e entradas e saídas digitais.
Devolve verdadeiro, se foi respondido com sucesso, ou falso, se houve problemas.
O conteúdo da imagem e o valor do focus (coeficiente de foco digital) variarão,
dependendo do valor dos parâmetros de entrada:
•
Zoom em falso, retângulo incorreto: a imagem obtida corresponderá à
totalidade da imagem capturada pela unidade. O valor do focus não será calculado
(-1).
•
Zoom em falso, retângulo correto: a imagem obtida corresponderá à totalidade
da imagem capturada pela unidade. O focus será calculado a partir do retângulo da
imagem.
•
Zoom em certo, retângulo incorreto: combinação incorreta; será devolvido falso.
•
Zoom em certo, retângulo correto: a imagem obtida corresponderá a uma zona
da imagem capturada ampliada.
A posição central do retângulo coincidirá com a
posição central da zona ampliada. O focus será calculado a partir da zona ampliada.
○
Parâmetros de entrada:
int roiRight: posição X (eixo horizontal) do lado direito do retângulo; para não
defini-lo, indicar -1.
int roiTop: posição Y (eixo vertical) do lado superior do retângulo; para não definílo, indicar -1.
int roiLeft: posição X (eixo horizontal) do lado esquerdo do retângulo; para não
defini-lo, indicar -1.
int roiBottom: posição Y (eixo vertical) do lado inferior do retângulo; para não
definí-lo, indicar -1.
int exposureTime: tempo de exposição da câmera para a captura.
bool zoom: indica se a imagem obtida deve ser aquela capturada pela unidade
(falso) ou uma ampliação sua (certo).
int ,maxSize: indica o tamanho do buffer pImageData. Esse é um parâmetro de
segurança; se o tamanho do buffer for insuficiente, não será preenchido e será
devolvido como falso.
Quercus Technologies
35
MANUAL DE PROGRAMAÇÃO
○
QuercusVL
Parâmetros de saída:
unsigned char* pImageData: ponteiro onde será armazenada a imagem capturada.
Esta, terá um tamanho máximo de 524288 bytes.
int* imageLen: tamanho da imagem obtida; em bytes.
int *focus: coeficiente do foco digital calculado; -1, se não tiver sido calculado.
int *numDetectors: Retorna o número de detectores configurados.
int *detectors: tabela com a situação dos laços de cada um dos detectores; embora seu
tamanho deva ser 15, somente estarão escritas as primeiras posições numDetectors.
Os detectores estarão dispostos na mesma ordem em que foram configurados e cada
posição detalhará a situação de seus laços bit a bit. O bit de menor peso corresponderá
ao primeiro laço. Possíveis valores: 1 ocupado, 0 desocupado.
int *numRedLights: número de semáforos configurados.
int *redLights: tabela com a situação de cada um dos semáforos; embora seu tamanho
deva ser 5, somente estarão escritas as primeiras posições numRedLights. Os
semáforos estarão dispostos na mesma ordem em que foram configurados. Possíveis
valores: 0 “em vermelho”, outro valor “em outra situação”.
int *inputValues: situação das 2 entradas digitais. Cada um dos primeiros 2 bits
corresponderá à situação de uma entrada, sendo o bit de menor peso para a entrada
zero. Possíveis valores: 1 ativada, 0 desativada.
int *outputValues: situação das 8 entradas digitais. Cada um dos primeiros 8 bits
corresponderá à situação de uma saída, sendo o bit de menor peso para a saída zero.
Possíveis valores: 1 ativada, 0 desativada.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
ActivateOutput
C++:
bool ActivateOutput(int bit, int time)
C:
int VL_Unit_ActivateOutput(int h, int bit, int time)
Ativa a saída digital “bit” o tempo especificado em milésimos de segundos.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetIOValues
C++:
bool GetIOValues(int &inputValues,int &outputValues)
C:
int VL_Unit_GetIOValues(int h, int *inputValues, int *outputValues)
Informa a situação das entradas e saídas digitais. Cada um dos primeiros 2 bits de
Quercus Technologies
36
MANUAL DE PROGRAMAÇÃO
QuercusVL
inputValues e 8 bits de outputValues corresponderá à situação de uma entrada/saída,
sendo o bit de menor peso para a entrada/saída zero. Possíveis valores: 1 ativada, 0
desativada.
Devolve verdadeiro, se foi respondido com sucesso, ou falso, se houve problemas.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetVersion
C++:
VersionInformation GetVersion()
C:
int Unit_GetVersion(int h)
Devolve a versão do firmware da unidade.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetRealTimeInformation
C++:
RealTimeInfo GetRealTimeInformation(int detectorId)
C:
int VL_Unit_GetRealTimeInformation(int h,int detectorId)
Devolve o último evento em tempo real da unidade especificada.
Em C++, se não existir um evento em tempo real para o detector indicado, devolve um
não válido (ver IsValid da classe RealTimeInformation).
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
Em C, se não existir um evento em tempo real para o detector indicado, devolve nulo.
Em C, quando não precisar mais do elemento, deverá ser chamada a função
VL_RealTimeInformation_Release
(ver
o
método
Release
da
classe
RealTimeInformation).
●
SetUnitTasks
C++:
bool SetUnitTasks(bool *sendInputChanges)
C:
int VL_Unit_SetUnitTasks(int h, int *sendInputChanges)
Configura a situação das tarefas da unidade. Se sendInputChanges for certo, a unidade
notificará o sistema central sobre as mudanças nas entradas digitais, se for falso, não o
fará.
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve como
falso, se houve problemas.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
Quercus Technologies
37
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
SetDetectorTasks
C++:
bool
enableIncidences,
SetDetectorTasks(int
bool
id,
sendSummaries,
bool
enableSummaries,
bool
bool
sendIncidences,
bool
sendRealTimeInformation)
C:
int VL_Unit_SetDetectorTasks(int h, int id, bool enableSummaries, bool
enableIncidences,
bool
sendSummaries,
bool
sendIncidences,
bool
sendRealTimeInformation)
Configura a situação das tarefas do detector indicado (id).
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve como
falso, se houve problemas.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetUnitTasks
C++:
bool GetUnitTasks(bool *sendInputChanges)
C:
int VL_Unit_GetUnitTasks(int h, int *sendInputChanges)
Informa sobre a situação das tarefas da unidade.
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve como
falso, se houve problemas.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
●
GetDetectorTasks
C++:
bool GetDetectorTasks(int id, int id, bool *enableSummaries, bool
*enableIncidences,
bool
*sendSummaries,
bool
*sendIncidences,
bool
*sendRealTimeInformation)
C:
int VL_Unit_GetDetectorTasks(int h, int id, int *enableSummaries, int
*enableIncidences,
int
*sendSummaries,
int
*sendIncidences,
int
*sendRealTimeInformation)
Informa sobre a situação das tarefas do detector indicado (id).
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve como
falso, se houve problemas.
Em C, o parâmetro “h” é um manipulador da unidade (Unit).
Quercus Technologies
38
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.7. Classe UnitStatus
Situação da unidade
3.7.1. Propriedades
●
Global
C++:
bool get_Status()
C:
int VL_UnitStatus_get_Status(int h)
Situação global da unidade. Devolve verdadeiro se a situação do sistema da unidade for
correto, caso contrário, devolve falso.
Em C, o parâmetro “h” é um manipulador do estado do sistema (UnitStatus).
●
Communication
C++:
bool get_Communication( )
C:
int VL_UnitStatus_get_Communication(int h)
Situação da comunicação com a unidade. Verdadeiro se foi possível estabelecer
comunicação, falso caso contrário.
Em C, o parâmetro “h” é um manipulador do estado do sistema (UnitStatus).
3.8. Classe VersionInformation
Versão do firmware o do hardware da unidade.
3.8.1. Propriedades
●
Name
C++:
void get_Name(char *buffer, int bufLen)
C:
void VL_VersionInformation_get_Name(int h, char *buf, int bufLen)
Informa qual é o nome da versão.
Em C, o parâmetro “h” é um manipulador da versão (VersionInformation).
●
Major
C++:
int get_Major()
C:
int VL_VersionInformation_get_Major(int h)
Informa sobre o valor Major da versão.
Quercus Technologies
39
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C, o parâmetro “h” é um manipulador da versão (VersionInformation).
●
Minor
C++:
int get_Minor()
C:
int VL_VersionInformation_get_Minor(int h)
Informa sobre o valor Minor da versão.
Em C, o parâmetro “h” é um manipulador da versão (VersionInformation).
●
Revision
C++:
int get_Revision()
C:
int VL_VersionInfo_get_Revision(int h)
Informa o valor Revision da versão.
Em C, o parâmetro “h” é um manipulador da versão (VersionInformation).
3.9. Classe Detectors
Coleção de detectores existentes na unidade.
3.9.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Unit_get_Detectors_Count(int h) de Unit.
Número detectores existentes na unidade.
●
Item
C++:
Detector Item ( int item )
C:
Não existe, consultar VL_Unit_get_Detectors_Item(int h, int item) de
Unit.
Devolve o detector existente na posição indicada dentro da coleção de detectores da
unidade; estão na mesma ordem em que foram configurados.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um Detector para a posição indicada, devolve um não válido (ver IsValid
da classe Detector).
Quercus Technologies
40
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Id
C++:
Detector Id ( int id )
C:
Não existe, consultar VL_Unit_get_Detectors_Id(int h, int id) de Unit.
Retorna o detector com o identificador "id" dentro da coleção de detectores da unidade.
Se não existir um Detector para o identificador indicado, devolve um não válido (ver
IsValid da classe Detector).
3.10. Classe Detector
Representação lógica de um detector.
Por razões históricas, todas as coordenadas descritas em um detector serão definidas em uma
de 5 megapixels (de 0 a 2559 y de 0 a 1919).
3.10.1. Propriedades
●
Unit
C++:
int get_Unit()
C:
int Detector_get_UnitId(int h)
Devolve a unidade à qual o detector pertence.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
Id
C++:
int get_Id()
C:
int VL_Detector_get_Id(int h)
Devolve o identificador do detector.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
Tipo
C++:
VLDetectorType get_Type()
C:
int VL_Detector_get_Type(int h)
Devolve o tipo de detector.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
Quercus Technologies
41
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
AreIncidencesEnabled
C++:
bool get_AreIncidencesEnabled()
C:
int VL_Detector_get_AreIncidencesEnabled(int h)
Devolve como verdadeiro, se a geração de incidência estiver ativada, e devolve falso se
ela estiver desativada.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
AreSummariesEnabled
C++:
bool get_AreSummariesEnabled()
C:
int VL_Detector_get_AreSummariesEnabled(int h)
Devolve como verdadeiro, se a geração de resumos estiver ativada, e devolve falso se
ela estiver desativada.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
SendRealTimeInformation
C++:
bool get_SendRealTimeInformation()
C:
int VL_Detector_get_SendRealTimeInformation(int h)
Devolve verdadeiro se o envio de eventos em tempo real estiver ativado e devolve falso
se ele não estiver.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
SendIncidences
C++:
bool get_SendIncidences()
C:
int VL_Detector_get_SendIncidences(int h)
Devolve como verdadeiro, se o envio de incidências estiver ativado, e devolve falso se
ele estiver desativado.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
SendSummaries
C++:
bool get_SendSummaries()
C:
int VL_Detector_get_SendSummaries(int h)
Devolve como verdadeiro, se o envio de resumos estiver ativado, e devolve falso se ele
Quercus Technologies
42
MANUAL DE PROGRAMAÇÃO
QuercusVL
estiver desativado.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
SummariesPeriod
C++:
int get_SummariesPeriod()
C:
int VL_Detector_get_SummariesPeriod(int h)
Devolve o período dos resumos configurado; em minutos.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
Coordinates
C++:
Region get_Coordinates()
C:
int VL_Detector_get_Coordinates(int h)
Devolve as coordenadas do detector.
Em C, o parâmetro “h” é um manipulador do detector (Detector).
●
LoopsCoordinates
C++:
Regions get_LoopsCoordinates()
C:
Não existe.
Em C++, devolve a coleção de coordenadas dos laços que formam o detector.
Em C não existe uma representação da coleção “Regions”, mas métodos para acessar
diretamente as propriedades dessa coleção:
●
int
VL_Detector_get_LoopsCoordinates_Count(int
h):
número
de
laços
configurados no detector.
●
int
VL_Detector_get_LoopsCoordinates_Item(int
h,
int
item):
devolve
as
coordenadas da posição indicada dentro da coleção de coordenadas dos laços do
detector (a partir de zero). O parâmetro de retorno é um manipulador dessas
coordenadas (Region).
Se não existir um Region para a unidade indicada, retorna nulo.
O parâmetro “h” é um manipulador do detector (Detector).
3.10.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Quercus Technologies
43
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve verdadeiro se o objeto contém informações válidas sobre um Detector, e
devolve falso se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar detectores vazios. Em C, isso é detectado porque seu valor será zero. Em C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de
não se tratar de um ponteiro, sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_Detector_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_Detector_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.11. Classe PresenceDetector
Representação lógica de um detector do tipo Presence (presença).
Essa classe deriva da classe Detector, o que a leva a herdar todos seus métodos e
propriedades.
Ela tem o operador de designação implementado para usar um detector genérico como
detector de presença.
Exemplo em C++
if(detector.get_Type() == DT_PRESENCE)
{
PresenceDetector detectorDePresença;
myPresenceDetector = detector;
}
// operador de designação
TratarDetectorDePresença(detectorDePresença);
Exemplo em C
if(Detector_get_Type(hDetector) == PRESENCE)
{
if(Detector_get_Type(hDetector) == PRESENCE)
}
Quercus Technologies
44
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.12. Classe QueueDetector
Representação lógica de um detector do tipo Queue (fila).
Essa classe deriva da classe Detector, o que a leva a herdar todos seus métodos e
propriedades.
Ela tem o operador de designação implementado para usar um detector genérico como
detector de fila.
Exemplo em C++
if(detector.get_Type() == DT_QUEUE)
{
QueueDetector detectorDeFila;
myQueueDetector = detector;
}
// operador de designação
ProcessQueueDetector(myQueueDetector);
Exemplo em C
if(Detector_get_Type(hDetector) == DT_QUEUE)
{
if(Detector_get_Type(hDetector) == DT_QUEUE)
}
3.13. Classe SpeedDetector
Representação lógica de um detector do tipo Speed (velocidade).
Essa classe deriva da classe Detector, o que a leva a herdar todos seus métodos e
propriedades.
Ela tem o operador de designação implementado para usar um detector genérico como
detector de velocidade.
Exemplo em C++
if(detector.get_Type() == DT_SPEED)
{
SpeedDetector detectorDeVelocidade;
mySpeedDetector = detector;
}
// operador de designação
TratarDetectorDeVelocidade(detectorDeVelocidade);
Exemplo em C
if(Detector_get_Type(hDetector) == DT_SPEED)
{
TratarDetectorDeVelocidade(hDetector);
Quercus Technologies
45
MANUAL DE PROGRAMAÇÃO
QuercusVL
}
3.13.1. Propriedades
●
CalculateMetrics
C++:
bool get_CalculateMetrics()
C:
int VL_SpeedDetector_get_CalculateMetrics (int h)
Devolve certo, se o detector tiver habilitado a opção de calcular a métrica.
Em C, o parâmetro “h” é um manipulador do detector (SpeedDetector).
●
Distance
C++:
int get_Distance()
C:
int VL_SpeedDetector_get_Distance (int h)
Devolve a distância da câmera até o detector; em milímetros.
Em C, o parâmetro “h” é um manipulador do detector (SpeedDetector).
●
Length
C++:
int get_Length()
C:
int VL_SpeedDetector_get_Length(int h)
Devolve o comprimento do detector; em milímetros.
Em C, o parâmetro “h” é um manipulador do detector (SpeedDetector).
3.14. Classe RedLightDetector
Representação lógica de um detector do tipo avançar sinal vermelho (Red Light).
Essa classe deriva da classe Detector, o que a leva a herdar todos seus métodos e
propriedades.
Ela tem o operador de designação implementado para usar um detector genérico como
detector de avançar sinal vermelho.
Exemplo em C++
if(detector.get_Type() == DT_RED_LIGHT)
{
RedLightDetector detectorDeAvançarSinalVermelho;
myRedLightDetector = detector;
// operador de designação
TratarDetectorDeAvançarSinalVermelho(detectorDeAvançarSinalVermelho);
Quercus Technologies
46
MANUAL DE PROGRAMAÇÃO
QuercusVL
}
Exemplo em C
if(Detector_get_Type(hDetector) == DT_RED_LIGHT)
{
TratarDetectorDeAvançarSinalVermelho(hDetector);
}
3.14.1. Propriedades
●
CalculateMetrics
C++:
bool get_CalculateMetrics()
C:
int VL_RedLightDetector_get_CalculateMetrics (int h)
Devolve certo, se o detector tiver habilitado a opção de calcular a métrica.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
Distance
C++:
int get_Distance()
C:
int VL_RedLightDetector_get_Distance (int h)
Devolve a distância da câmera até o detector; em milímetros.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
Length
C++:
int get_Length()
C:
int VL_RedLightDetector_get_Length(int h)
Devolve o comprimento do detector; em milímetros.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
DelayTime
C++:
int get_DelayTime()
C:
int VL_RedLightDetector_get_DelayTime(int h)
Devolve o tempo mínimo que deve passar, desde a ativação do sinal de proibição de
avançar até a detecção da incidência, para que esta seja considerada válida e seja
gerada. Configurado pelo usuário.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
Quercus Technologies
47
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
TrafficLightId
C++:
int get_TrafficLightId()
C:
int VL_RedLightDetector_get_TrafficLightId(int h)
Devolve o identificador do semáforo utilizado para o sinal de proibição de avançar. Se
não tiver sido configurado um semáforo, mas uma entrada digital (ver Input de
RedLightDetector), devolverá -1. Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
RedInput
C++:
int get_RedInput()
C:
int VL_RedLightDetector_get_RedInput(int h)
Devolve o identificador da entrada digital utilizada para o sinal de proibição de avançar.
Se não tiver sido configurada uma entrada digital, mas um semáforo (ver TrafficLightID
de RedLightDetector), devolverá -1.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
AmberInput
C++:
int get_AmberInput()
C:
int VL_RedLightDetector_get_AmberInput(int h)
Devolve o identificador da entrada digital utilizada para o sinal de âmbar do semáforo.
Se não tiver sido configurada uma entrada digital, mas um semáforo (ver TrafficLightID
de RedLightDetector), devolverá -1.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
IsVideoEnabled
C++:
bool get_IsVideoEnabled()
C:
int VL_RedLightDetector_get_IsVideoEnabled(int h)
Devolve certo, se o detector tiver habilitada a geração de vídeos nas incidências, ou
falso em caso contrário.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
PreVideoTimeMs
C++: int get_PreVideoTimeMs ( )
Quercus Technologies
48
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_RedLightDetector_get_PreVideoTimeMs( int h )
Devolve o tempo que antecipará o início da captura do vídeo nas incidências; em
milésimos de segundo.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
PostVideoTimeMs
C++: int get_PostVideoTimeMs ( )
C:
int VL_RedLightDetector_get_PostVideoTimeMs( int h )
Devolve o tempo que atrasará a finalização da captura do vídeo nas incidências; em
milésimos de segundo.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
●
LastPictureDelayTimeMs
C++: int get_LastPictureDelayTimeMs ( )
C:
int VL_RedLightDetector_get_LastPictureDelayTimeMs( int h )
Devolve o tempo que atrasará a última captura da imagem da incidência; em milésimos
de segundo.
Em C, o parâmetro “h” é um manipulador do detector (RedLightDetector).
3.15. Classe StoppedCarDetector
Representação lógica de um detector do tipo veículo parado.
Essa classe deriva da classe Detector, o que a leva a herdar todos seus métodos e
propriedades.
Ela tem o operador de designação implementado para usar um detector genérico como
detector de veículo parado.
Exemplo em C++
if(detector.get_Type() == DT_STOPPED_CAR)
{
StoppedCarDetector detectorDeVeiculoParado;
myStpoppedCarDetector = detector;
}
// Operador de designação
TratarDetectorDeVeiculoParado (detectorDeVeiculoParado);
Exemplo em C
Quercus Technologies
49
MANUAL DE PROGRAMAÇÃO
QuercusVL
if(Detector_get_Type(hDetector) == DT_STOPPED_CAR)
{
TratarDetectorDeVeiculoParado(hDetector);
}
3.15.1. Propriedades
●
MaxStopTime
C++:
int get_MaxStopTime()
C:
int VL_StoppedCarDetector_get_MaxStopTime(int h)
Devolve o tempo mínimo que deve estar o veículo parado, desde a ativação do sinal de
proibição para que uma infração seja gerada; em milésimos de segundos.
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
●
TrafficLightId
C++:
int get_TrafficLightId()
C:
int VL_StoppedCarDetector_get_TrafficLightId(int h)
Devolve o identificador do semáforo utilizado para o sinal de proibição de avançar. Se
não tiver sido configurado um semáforo, mas uma entrada digital (ver RedInput de
StoppedCarDetector), devolverá -1.
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
●
RedInput
C++:
int get_RedInput()
C:
int VL_StoppedCarDetector_get_RedInput(int h)
Devolve o identificador da entrada digital utilizada para o sinal de proibição de avançar.
Se não tiver sido configurada uma entrada digital, mas um semáforo (ver TrafficLightID
de StoppedCarDetector), devolverá -1.
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
●
IsVideoEnabled
C++:
bool get_IsVideoEnabled()
C:
int VL_StoppedCarDetector_get_IsVideoEnabled(int h)
Devolve certo, se o detector tiver habilitada a geração de vídeos nas incidências, ou
falso em caso contrário.
Quercus Technologies
50
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
●
PreVideoTimeMs
C++: int get_PreVideoTimeMs ( )
C:
int VL_StoppedCarDetector_get_PreVideoTimeMs( int h )
Retorna o tempo que antecipará o início da captura do vídeo nas incidências; em
milésimos de segundo.
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
●
PostVideoTimeMs
C++: int get_PostVideoTimeMs ( )
C:
int VL_StoppedCarDetector_get_PostVideoTimeMs( int h )
Tempo que atrasará a finalização da captura do vídeo nas incidências; em milésimos de
segundo.
Em C, o parâmetro “h” é um manipulador do detector (StoppedCarDetector).
3.16. Classe TrafficLights
Conjunto de semáforos configurados na unidade.
3.16.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Unit_get_TrafficLights_Count(int h) de Unit.
Número de semáforos existentes na unidade.
●
Item
C++:
TrafficLight Item ( int item )
C:
Não existe, consultar VL_Unit_get_TrafficLights_Item(int h, int item) de
Unit.
Devolve o semáforo existente na posição indicada dentro da coleção de semáforos da
unidade; estão na mesma ordem em que foram configurados.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero). Se não
Quercus Technologies
51
MANUAL DE PROGRAMAÇÃO
QuercusVL
existir o semáforo para a posição indicada, devolve um não válido (ver IsValid da classe
TrafficLight).
●
Id
C++:
TrafficLight Id ( int id )
C:
Não existe, consultar VL_Unit_get_TrafficLights_Id(int h, int item) de
Unit.
Devolve o semáforo com o identificador "id" dentro da coleção de detectores da
unidade.
Se não existir o semáforo para o identificador indicado, devolve um não válido (ver
IsValid da classe TrafficLight).
3.17. Classe TrafficLight
Representação lógica de um semáforo.
Por razões históricas, todas as coordenadas descritas em um detector será definido em uma de
5 megapixels (de 0 a 2559 y de 0 a 1919).
3.17.1. Propriedades
●
UnitId
C++:
Unit get_Unit()
C:
int VL_TrafficLight_get_UnitId(int h)
Devolve a unidade à qual o semáforo pertence.
Em C, o parâmetro “h” é um manipulador do semáforo (TrafficLight).
●
Id
C++:
int get_Id()
C:
int VL_TrafficLight_get_Id(int h)
Devolve o identificador do semáforo.
Em C, o parâmetro “h” é um manipulador do semáforo (TrafficLight).
●
NumLights
C++:
int get_NumLights()
C:
int VL_TrafficLight_get_NumLights(int h)
Quercus Technologies
52
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve o número de luzes configuradas no semáforo.
Em C, o parâmetro “h” é um manipulador do semáforo (TrafficLight).
●
Lights
C++:
Lights get_Lights()
C:
Não existe.
Em C++, devolve a coleção de luzes que formam o semáforo.
Em C não existe uma representação da coleção “Lights”, mas métodos para acessar
diretamente as propriedades dessa coleção:
●
int VL_TrafficLight_get_Lights_Count(int h): número de luzes existentes no
semáforo.
●
int VL_TrafficLight_get_Lights_Item(int h, int item): devolve a luz existente na
posição indicada dentro da coleção de luzes do semáforo (a partir de zero).
Se não existir um Light para a luz indicada, retorna nulo.
O parâmetro “h” é um manipulador do semáforo (TrafficLight).
3.17.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro se o objeto contém informações válidas sobre um semáforo, e
devolve falso, se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar semáforos vazios. Em C, isso é detectado porque seu valor será zero.
Em C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de
não se tratar de um ponteiro, sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_TrafficLight_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
Quercus Technologies
53
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++:
Não existe.
C:
void VL_TrafficLight_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.18. Classe HistoricIncidences
Histórico de incidências de uma unidade.
3.18.1. Propriedades
●
Atual
C++:
Incidence get_Current()
C:
int VL_HistoricIncidences_get_Current(int h)
Devolve a incidência selecionada do histórico. Para alterar a incidência selecionada,
existem os métodos MoveFirst, MoveNext, MovePrevious e MoveLast. A incidência
selecionada sempre observará o filtro aplicado (ver o método SetFilter da classe
HistoricIncidences).
Em C++, se não existir nenhuma incidência disponível, devolve uma incidência não
válida (ver IsValid da classe Incidence).
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences). Devolve um manipulador da incidência (Incidence).
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_Incidence_Release (ver o método Release da classe Incidence).
Em C, se não houver uma incidência disponível, devolve nulo.
3.18.2. Métodos
●
MoveFirst
C++:
void MoveFirst()
C:
void VL_HistoricIncidences_MoveFirst(int h)
Designa à propriedade Current as informações sobre a primeira incidência do histórico
que
tiver
observado
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricIncidences).
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences).
Quercus Technologies
54
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
MoveNext
C++:
bool MoveNext()
C:
int VL_HistoricIncidences_MoveNext(int h)
Designa à propriedade Current as informações sobre a incidência seguinte do histórico
que
tiver
observado
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricIncidences).
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences).
●
MovePrevious
C++:
bool MovePrevious()
C:
int HistoricIncidences_MovePrevious(int h)
Designa à propriedade Current as informações sobre a incidência anterior do histórico
que
tiver
observado
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricIncidences).
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences).
●
MoveLast
C++:
void MoveLast()
C:
void VL_HistoricIncidences_MoveLast(int h)
Designa à propriedade Current as informações sobre a última incidência do histórico
que
tiver
observado
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricIncidences).
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences).
●
SetFilter
C++:
void SetFilter(VLDetectorType detectorType,int detectorId)
C:
void VL_HistoricIncidences_SetFilter(int h,int detectorType,int detectorId)
Designa um filtro ao histórico de incidências, de forma que só poderão ser selecionadas
as incidências que observarem os requisitos indicados. O filtro é definido conforme as
variáveis:
Quercus Technologies
55
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
detectorType: tipo de detector.
●
detectorID: identificador do detector.
Usar o valor -1 para os campos que não deverão filtrar.
Em
C,
o
parâmetro
“h”
é
um
manipulador
do
histórico
de
incidências
(HistoricIncidences).
3.19. Classe HistoricSummaries
Histórico de resumos de uma unidade.
3.19.1. Propriedades
●
Atual
C++:
Summary get_Current()
C:
int VL_HistoricSummaries_get_Current(int h)
Devolve o resumo selecionado do histórico. Para alterar o resumo selecionado, existem
os métodos MoveFirst, MoveNext, MovePrevious e MoveLast. O resumo selecionado
sempre
observará
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricSummaries).
Em C++, se não existir nenhum resumo disponível, devolve um resumo não válido (ver
IsValid da classe Summary).
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
Devolve um manipulador do resumo (Summary).
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_Summary_Release (ver o método Release da classe Summary).
Em C, se não houver um resumo disponível, devolve nulo.
3.19.2. Métodos
●
MoveFirst
C++:
void MoveFirst()
C:
void VL_HistoricSummaries_MoveFirst(int h)
Designa à propriedade Current as informações sobre o primer resumo do histórico que
tiver observado o filtro aplicado (ver o método SetFilter da classe HistoricSummaries).
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
●
MoveNext
Quercus Technologies
56
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++:
bool MoveNext()
C:
int VL_HistoricSummaries_MoveNext(int h)
Designa à propriedade Current as informações sobre o resumo seguinte do histórico
que
tiver
observado
o
filtro
aplicado
(ver
o
método
SetFilter
da
classe
HistoricSummaries).
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
●
MovePrevious
C++:
bool MovePrevious()
C:
int VL_HistoricSummaries_MovePrevious(int h)
Designa à propriedade Current as informações sobre o resumo anterior do histórico que
tiver observado o filtro aplicado (ver o método SetFilter da classe HistoricSummaries).
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
●
MoveLast
C++:
void MoveLast()
C:
void VL_HistoricSummaries_MoveLast(int h)
Designa à propriedade Current as informações sobre o último resumo do histórico que
tiver observado o filtro aplicado (ver o método SetFilter da classe HistoricSummaries).
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
●
SetFilter
C++:
void SetFilter(VLDetectorType detectorType,int detectorId)
C:
void
VL_HistoricSummaries_SetFilter(int
h,int
detectorType,int
detectorId)
Designa um filtro ao histórico de resumos, de forma que só poderão ser selecionadas os
resumos que observarem os requisitos indicados. O filtro é definido conforme as
variáveis:
●
detectorType: tipo de detector.
●
detectorID: identificador do detector.
Usar o valor -1 para os campos que não deverão filtrar.
Em C, o parâmetro “h” é um manipulador do histórico de resumos (HistoricSummaries).
Quercus Technologies
57
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.20. Classe RealTimeInformation
Informações sobre um evento em tempo real gerado pela unidade.
Os campos a serem usados dependerão do tipo de evento gerado. Os campos que não
trouxerem informações em um evento têm o valor “-1”.
3.20.1. Propriedades
●
Unit
C++:
Unit get_Unit()
C:
int VL_RealTimeInformation_get_Unit(int h)
Devolve a unidade na qual o evento foi gerado.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
DetectorId:
C++:
int get_DetectorId()
C:
int VL_RealTimeInformation_get_DetectorId(int h)
Devolve o identificador do detector no qual o evento foi gerado.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
DetectorType
C++:
VL_DetectorType get_DetectorType()
C:
int VL_RealTimeInformation_get_DetectorType(int h)
Devolve o tipo de detector no qual o evento foi gerado.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
Timestamp
C++:
Timestamp get_Timestamp()
C:
Não existe.
Em C++, devolve o momento em que a unidade gerou as informações de tempo real.
Em C não existe uma representação da classe “Timestamp”, mas métodos para acessar
Quercus Technologies
58
MANUAL DE PROGRAMAÇÃO
QuercusVL
diretamente as propriedades dessa classe:
●
int VL_RealTimeInformation_get_Timestamp_Seconds(int h): data e hora em
que foram geradas as informações de tempo real, indicando os segundos
transcorridos desde as 00h00 de 1º de janeiro de 1970.
É o mesmo formato
que retorna a chamada à função time_t time (time_t *timer) do standard ANSI
C.
●
int VL_RealTimeInformation_get_Timestamp_USeconds(int h): microssegundo
em que foram geradas as informações de tempo real.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
WrongWay
C++:
bool get_WrongWay()
C:
int VL_RealTimeInformation_get_WrongWay(int h)
Devolve verdadeiro se o sentido de circulação do veículo detectado for incorreto e
devolve como falso se for o sentido correto.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
Velocidade
C++:
int get_Speed()
C:
int VL_RealTimeInformation_get_Speed(int h)
Devolve a velocidade aproximada do veículo detectado; em km/h. Se não for possível
calcular a velocidade, o seu valor será -1.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
Length
C++:
int get_Length()
C:
int VL_RealTimeInformation_get_Length(int h)
Devolve o comprimento do veículo detectado; em milímetros. Se não foi possível
calcular o comprimento seu valor será -1.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
Quercus Technologies
59
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Occupation
C++:
int get_Occupation()
C:
int VL_RealTimeInformation_get_Occupation(int h)
Devolve a ocupação de um detector do tipo fila; em porcentagem.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
●
IsOccupied
C++:
bool get_IsOccupied()
C:
int VL_RealTimeInformation_get_IsOccupied(int h)
Devolve verdadeiro se o detector estiver ocupado e devolve falso se estiver
desocupado.
Em C, o parâmetro “h” é um manipulador das informações em tempo real
(RealTimeInformation).
3.20.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre um evento em
tempo real, e devolve falso se as informações não forem válidas. Em alguns casos,
alguns métodos podem retornar eventos em tempo real vazios. Em C, isso é detectado
porque seu valor será zero. Em C++ em contrapartida, é necessário este método dado
que o objeto, pelo fato de não se tratar de um ponteiro, sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_RealTimeInformation_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Quercus Technologies
Não existe.
60
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
void VL_RealTimeInformation_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.21. Classe Regions
Coleção de coordenadas; estas definem cada um dos laços de um detector.
3.21.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Detector_get_LoopsCoordinates_Count(int h) de
Unit.
Número de coordenadas existentes na coleção.
●
Item
C++:
Region Item ( int item )
C:
Não existe, consultar VL_Detector_get_LoopsCoordinates_Item(int h, int
item) de Unit.
Devolve as coordenadas (Region) existentes na posição indicada dentro da coleção de
coordenadas. A posição que as coordenadas de um laço ocupam dentro da coleção
corresponde ao identificador interno do laço, designado e utilizado unicamente pela
biblioteca.
Em C++, no parâmetro “item” é preciso indicar a posição (a primeira posição é zero).
Em C++, se não existir uma Region para a posição indicada, devolve uma não válida
(ver IsValid da classe Region).
3.22. Classe Region
Define as coordenadas de cada um dos vértices de um quadrilátero.
3.22.1. Propriedades
●
X1
C++:
int get_X1()
C:
int VL_Region_get_X1(int h)
Quercus Technologies
61
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve o valor X (eixo horizontal) do vértice 1.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
Y1
C++:
int get_Y1()
C:
int VL_Region_get_Y1(int h)
Devolve o valor Y (eixo vertical) do vértice 1.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
X2
C++:
int get_X2()
C:
int VL_Region_get_X2(int h)
Devolve o valor X (eixo horizontal) do vértice 2.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
Y2
C++:
int get_Y2()
C:
int VL_Region_get_Y2(int h)
Devolve o valor Y (eixo vertical) do vértice 2.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
X3
C++:
int get_X3()
C:
int VL_Region_get_X3(int h)
Devolve o valor X (eixo horizontal) do vértice 3.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
Y3
C++:
int get_Y3()
C:
int VL_Region_get_Y3(int h)
Devolve o valor Y (eixo vertical) do vértice 3.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
X4
Quercus Technologies
62
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++:
int get_X4()
C:
int VL_Region_get_X4(int h)
Devolve o valor X (eixo horizontal) do vértice 4.
Em C, o parâmetro “h" é um manipulador da região (Region).
●
Y4
C++:
int get_Y4()
C:
int VL_Region_get_Y4(int h)
Devolve o valor Y (eixo vertical) do vértice 4.
Em C, o parâmetro “h" é um manipulador da região (Region).
3.22.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre umas coordenadas,
e devolve falso se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar coordenadas vazias. Em C, isso é detectado porque seu valor será zero.
Em C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de
não se tratar de um ponteiro, sempre será correto.
3.23. Classe Lights
Coleção de luzes de um semáforo.
3.23.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não
existe,
consultar
VL_TrafficLight_get_Lights_Count(int
TrafficLight.
Número de luzes existentes no semáforo.
Quercus Technologies
63
h)
de
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Item
C++:
Light Item ( int item )
C:
Não existe, consultar VL_TrafficLight_get_Lights_Item(int h, int item) de
TrafficLight.
Devolve a luz existente na posição indicada dentro da coleção de luzes de um semáforo.
A posição ocupada por cada luz dentro da coleção é a mesma posição da ordem
configurada.
Em C++, no parâmetro “item” é preciso indicar a posição (a primeira posição é zero).
Se não existir um Light para a posição indicada, devolve um não válido (ver IsValid da
classe Light).
3.24. Classe Light
Representação lógica da luz de um semáforo.
3.24.1. Propriedades
●
Tipo
C++:
VLLightType get_Type()
C:
int VL_Light_get_Type(int h)
Devolve o tipo de luz (VLLightType).
Em C, o parâmetro “h” é um manipulador da luz (Light).
●
X
C++:
int get_X()
C:
int VL_Light_get_X(int h)
Devolve a posição X (eixo horizontal) da luz.
Em C, o parâmetro “h” é um manipulador da luz (Light).
●
Y
C++:
int get_Y()
C:
int VL_Light_get_Y(int h)
Devolve a posição Y (eixo vertical) da luz.
Em C, o parâmetro “h” é um manipulador da luz (Light).
●
Radius
Quercus Technologies
64
MANUAL DE PROGRAMAÇÃO
C++:
int get_Radius()
C:
int VL_Light_get_Radius(int h)
QuercusVL
Devolve o raio da luz do semáforo na imagem; em pixels.
Em C, o parâmetro “h” é um manipulador da luz (Light).
3.24.2. Métodos
●
IsValid
C++:
bool IsValid ( )
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre uma luz, e devolve
falso se as informações não forem válidas. . Em alguns casos, alguns métodos podem
retornar imagens vazias. Em C, isso é detectado porque seu valor será zero. Em C++
em contrapartida, é necessário este método dado que o objeto, pelo fato de não se
tratar de um ponteiro, sempre será correto.
3.25. Classe Incidence
Representação lógica de uma incidência.
3.25.1. Propriedades
●
Unit
C++:
Unit get_Unit()
C:
int VL_Incidence_get_Unit(int h)
Devolve a unidade que gerou a incidência.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
DetectorId
C++:
int get_DetectorId()
C:
int VL_Incidence_get_DetectorId(int h)
Devolve o identificador do detector que gerou a incidência.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
DetectorType
Quercus Technologies
65
MANUAL DE PROGRAMAÇÃO
C++:
VLDetectorType get_DetectorType()
C:
int VL_Incidence_get_DetectorType(int h)
QuercusVL
Devolve o tipo de detector que gerou a incidência.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
Id
C++:
int get_Id()
C:
int Incidence_get_Id(int h)
Devolve o identificador da incidência.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
Tipo
C++:
VLIncidenceType get_Type()
C:
int VL_Incidence_get_Type(int h)
Devolve o tipo de incidência.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
Velocidade
C++:
int get_Speed()
C:
int VL_Incidence_get_Speed(int h)
Devolve a velocidade registrada; em km/h. Se não foi possível calcular a velocidade
devolve -1.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
DelayTime
C++:
int get_DelayTime()
C:
int VL_Incidence_get_DelayTime(int h)
Devolve o tempo mínimo que deve passar, desde a ativação do sinal de proibição de
avançar até a detecção da incidência, para que esta seja considerada válida e seja
gerada.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
ElapsedTime
C++:
Quercus Technologies
int get_ElapsedTime()
66
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_Incidence_get_ElapsedTime(int h)
Devolve o tempo transcorrido com o sinal de proibição de avançar ativo; em milésimos
de segundos.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
AmberLightTime
Devolve o tempo transcorrido com o sinal amarelo ativo antes da ativação de proibição
de avanço em vermelho.
C++:
int get_AmbertLightTime()
C:
int VL_Incidence_get_AmbertLightTime(int h)
Devolve o tempo transcorrido com o sinal amarelo ativo antes da ativação de proibição
de avanço em vermelho que gerou a incidência; em milésimos de segundo.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
MaxStopTime
C++:
int get_MaxStopTime()
C:
int VL_Incidence_get_MaxStopTime(int h)
Devolve o tempo mínimo que deve estar o veículo parado, desde a ativação do sinal de
proibição para que uma infração seja gerada; em milésimos de segundos.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
TotalStoppedTime
C++:
int get_TotalStoppedTime()
C:
int VL_Incidence_get_TotalStoppedTime(int h)
Devolve o tempo total transcorrido com o veículo parado, incluindo o tempo prévio a
ativação do sinal de proibição de avanço; em milissegundos.
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
Imagens
C++:
Images get_Images()
C:
Não existe.
Em C++ devolve a coleção de imagens que formam a incidência.
Quercus Technologies
67
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C não existe uma representação da coleção “Images”, mas métodos para acessar
diretamente as propriedades dessa coleção:
●
int VL_Incidence_get_Images_Count(int h): número de imagens da incidência.
●
int VL_Incidence_get_Images_Item(int h, int item): devolve a imagem existente
na posição indicada dentro da coleção de imagens da incidência (a partir de
zero).
Se não existir uma Imagem para a posição indicada, retorna nulo.
Quando não precisar mais do elemento, deverá ser chamada a função
VL_Image_Release (ver o método Release da classe Image).
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
●
Video
C++:
Video get_Video()
C:
int VL_Incidence_get_Video(int h)
Devolve o vídeo gerado na incidência.
Em C++, se não existir um vídeo na incidência, devolve umo não válido (ver IsValid da
classe Video).
Em C, se não existir um vídeo na incidência, devolve nulo.
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_Video_Release (ver o método Release da classe Video).
Em C, o parâmetro “h” é um manipulador da incidência (Incidence).
3.25.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre uma incidência, e
devolve falso, se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar incidências vazias. Em C, isso é detectado porque seu valor será zero.
Em C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de
não se tratar de um ponteiro, sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_Incidence_AddRef ( int h )
Quercus Technologies
68
MANUAL DE PROGRAMAÇÃO
QuercusVL
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_Incidence_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.26. Classe Images
Coleção de imagens relacionadas com a incidência.
3.26.1. Propriedades
●
Count
C++:
int Count()
C:
Não
existe,
consultar
VL_Incidence_get_Images_Count(int
h)
de
Incidence.
Número de imagens existentes na coleção.
●
Item
C++:
Image Item(int item)
C:
Não existe, consultar VL_Incidence_get_Images_Item(int h, int item)
Devolve a imagem existente na posição indicada dentro da coleção de imagens de uma
incidência.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir uma imagem para a posição indicada, devolve uma imagem não válida
(ver IsValid da classe Image).
As imagens estão ordenadas cronologicamente na coleção.
3.27. Classe Image
Representação lógica de uma imagem que faz parte de uma incidência.
Quercus Technologies
69
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.27.1. Propriedades
●
GetBuffer
C++:
int GetBuffer(unsigned char* pBuffer, int maxSize)
C:
int VL_Image_GetBuffer(int h, unsigned char* pBuffer, int maxSize)
Copia a imagem jpeg no buffer pBuffer e devolve seu tamanho em bytes. O tamanho
máximo da imagem será de 5242880 bytes.
O parâmetro maxSize indica o tamanho do buffer pBuffer. Esse é um parâmetro de
segurança; se o tamanho do buffer for insuficiente, não será preenchido e será
devolvido -1.
Em C, o parâmetro “h” é um manipulador da imagem (Image).
●
Timestamp
C++:
Timestamp get_Timestamp()
C:
Não existe.
Em C++, devolve o momento em que a unidade capturou a fotografia.
Em C não existe uma representação da classe “Timestamp”, mas métodos para acessar
diretamente as propriedades dessa classe:
●
int VL_Image_get_Timestamp_Seconds(int h): data e hora em que foram
geradas as informações de tempo real, indicando os segundos transcorridos
desde as 00h00 de 1º de janeiro de 1970. É o mesmo formato que retorna a
chamada à função time_t time (time_t *timer) do standard ANSI C.
●
int VL_Incidence_get_Timestamp_USeconds(int h): microsegundo da captura de
imagem.
3.27.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre uma imagem, e
devolve falso se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar imagens vazias. Em C, isso é detectado porque seu valor será zero. Em
C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de não
se tratar de um ponteiro, sempre será correto.
Quercus Technologies
70
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
AddRef
C++:
Não existe.
C:
void VL_Image_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_Image_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.28. Classe Video
Representação lógica de um vídeo que faz parte de uma incidência.
3.28.1. Propriedades
●
Location
C++:
int Location(char* pBuffer, int bufferLen)
C:
int VL_Video_get_Location(int h, char* pBuffer, int maxSize)
Indica a rota absoluta do vídeo na unidade mediante a cadeia de texto
“pBuffer”
finalizada pelo caractere \0. É necessário indicar o tamanho do Buffer mediante “maxSize”.
Retorna o número de caracteres encontrados na cadeia.
Em C, o parâmetro “h” é um manipulador do vídeo (Video).
●
IniTimestamp
C++:
Timestamp get_IniTimestamp()
C:
Não existe.
Em C++, devolve o momento em que a unidade iniciou a captura o vídeo.
Em C não existe uma representação da classe “Timestamp”, mas métodos para acessar
diretamente as propriedades dessa classe:
●
int VL_Video_get_IniTimestamp_Seconds(int h): data e hora em que a captura
foi iniciada, indicando os segundos transcorridos desde as 00h00 de 1º de
janeiro de 1970. É o mesmo formato que retorna a chamada à função time_t
time (time_t *timer) do standard ANSI C.
Quercus Technologies
71
MANUAL DE PROGRAMAÇÃO
QuercusVL
O parâmetro “h” é um manipulador do vídeo (Video).
●
int VL_Video_get_IniTimestamp_USeconds(int h): microsegundo da captura de
imagem.
O parâmetro “h” é um manipulador do vídeo (Video).
●
EndTimestamp
C++:
Timestamp get_EndTimestamp()
C:
Não existe.
Em C++, devolve o momento em que a unidade finalizou a captura do vídeo.
Em C não existe uma representação da classe “Timestamp”, mas métodos para acessar
diretamente as propriedades dessa classe:
●
int VL_Video_get_EndTimestamp_Seconds(int h): data e hora em que a captura
foi finalizada, indicando os segundos transcorridos desde as 00h00 de 1º de
janeiro de 1970. É o mesmo formato que retorna a chamada à função time_t
time (time_t *timer) do standard ANSI C.
O parâmetro “h” é um manipulador do vídeo (Video).
●
int VL_Video_get_EndTimestamp_USeconds(int h): microsegundo da captura de
imagem.
O parâmetro “h” é um manipulador do vídeo (Video).
●
Duration
C++:
int get_Duration()
C:
int VL_Video_get_Duration ( int h )
Devolve a duração do vídeo; em milésimos de segundos..
Em C, o parâmetro “h” é um manipulador do vídeo (Video).
●
Framerate
C++:
int get_Framerate()
C:
int VL_Video_get_Framerate( int h )
Devolve o número de imagens por segundo do vídeo.
Em C, o parâmetro “h” é um manipulador do vídeo (Video).
●
Width
Quercus Technologies
72
MANUAL DE PROGRAMAÇÃO
C++:
int get_Width()
C:
int VL_Video_get_Width ( int h )
QuercusVL
Devolve o largo da imagem do vídeo; em pixels.
Em C, o parâmetro “h” é um manipulador do vídeo (Video).
●
Height
C++:
int get_Height()
C:
int VL_Video_get_Height ( int h )
Devolve o alto da imagem do vídeo; em pixels.
Em C, o parâmetro “h” é um manipulador do vídeo (Video).
3.28.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida sobre um vídeo, e falso se as
informações não é válida. Em alguns casos, alguns métodos podem retornar vídeos
vazios. Em C, isso é detectado porque seu valor será zero. Em C++ em contrapartida, é
necessário este método dado que o objeto, pelo fato de não se tratar de um ponteiro,
sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_Video_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_Video_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.29. Classe resumo
Representação lógica de um resumo.
Quercus Technologies
73
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.29.1. Propriedades
●
Unit
C++:
Unit get_UnitId()
C:
int VL_Summary_get_Unit(int h)
Devolve a unidade que gerou o resumo.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
DetectorId
C++:
int get_DetectorId()
C:
int VL_Summary_get_DetectorId(int h)
Devolve o identificador do detector que gerou o resumo.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
DetectorType
C++:
VLDetectorType get_DetectorType()
C:
int VL_Summary_get_DetectorType(int h)
Devolve o tipo de detector que gerou o resumo.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
Begin
C++:
int get_Begin()
C:
int VL_Summary_get_Begin(int h)
Devolve o momento em que se iniciou a coleta de dados para o resumo; em segundos
desde 1º de janeiro de 1970, às 00h00.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
End
C++:
int get_End()
C:
int VL_Summary_get_End(int h)
Devolve o momento em que se finalizou a coleta de dados para o resumo; em segundos
desde 1º de janeiro de 1970, às 00h00.
Quercus Technologies
74
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
Volume
C++:
int get_Volume()
C:
int VL_Summary_get_Volume(int h)
Devolve o volume de veículos do resumo.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
AvgSpeed
C++:
int get_AvgSpeed()
C:
int VL_Summary_get_AvgSpeed(int h)
Devolve a velocidade média dos veículos do resumo; em km/h. Se não foi possível
calcular a velocidade devolve -1.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
AvgLength
C++:
int get_AvgLength()
C:
int VL_Summary_get_AvgLength(int h)
Devolve o comprimento médio dos veículos do resumo; em milímetros. Se não for
possível calcular o comprimento médio, retorna -1.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
AvgHeadway
C++:
int get_AvgHeadway()
C:
int VL_Summary_get_AvgHeadway(int h)
Devolve o período médio entre veículos do resumo; em segundos.
Em C, o parâmetro “h” é um manipulador do resumo (Summary).
●
SpeedsDistribution
C++:
SpeedsDistribution get_SpeedsDistribution()
C:
Não existe.
Em C++, devolve a coleção de valores que formam a distribuição de velocidades do
Quercus Technologies
75
MANUAL DE PROGRAMAÇÃO
QuercusVL
resumo.
Em C não existe uma representação da coleção “SpeedsDistribution”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_SpeedsDistribution_Count(int h): número de valores que
formam a distribuição de velocidades do resumo.
●
int VL_Summary_get_SpeedsDistribution_Item(int h, int item): devolve o valor
existente na posição indicada dentro da coleção de valores da distribuição de
velocidades do resumo (a partir de zero).
Se não existir um SpeedsDistribution para a posição indicada, retorna nulo.
O parâmetro “h” é um manipulador do resumo (Summary).
●
LengthsDistribution
C++:
LengthsDistribution get_LengthsDistribution()
C:
Não existe.
Em C++, devolve a coleção de valores que formam a distribuição de comprimentos do
resumo.
Em C não existe uma representação da coleção “LenghtsDistribution”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_LengthsDistribution_Count(int h): o número de valores
que formam a distribuição de comprimentos do resumo.
●
int VL_Summary_get_LengthsDistribution_Item(int h, int item): devolve o valor
existente na posição indicada dentro da coleção de valores que formam a
distribuição de comprimentos do resumo (a partir de zero).
Se não existir um LengthsDistribution para a posição indicada, retorna nulo.
O parâmetro “h” é um manipulador do resumo (Summary).
●
OccupationsDistribution
C++:
OccupationsDistribution get_OccupationsDistribution()
C:
Não existe.
Em C++, devolve a coleção de valores que formam a distribuição de ocupações do
resumo.
Em C não existe uma representação da coleção “OccupationsDistribution”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_OccupationsDistribution_Count(int h):
o número de
valores que formam a distribuição de ocupações do resumo.
Quercus Technologies
76
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Int VL_Summary_get_OccupationsDistribution_Item(int h, int item): devolve o
valor existente na posição indicada dentro da coleção de valores da distribuição
de ocupações do resumo (a partir de zero).
Se não existir um OccupationsDistribution para a posição indicada, retorna nulo.
O parâmetro “h” é um manipulador do resumo (Summary).
●
SpeedsUpperLimit
C++:
SpeedsUpperLimit get_SpeedsUpperLimit()
C:
Não existe.
Em C++, devolve a coleção de valores que formam as variações de distribuição de
velocidades do resumo.
Em C não existe uma representação da coleção “SpeedsUpperLimit”, mas métodos para
acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_SpeedsUpperLimit_Count(int h): número de valores que
formam as variações de distribuição de velocidades do resumo.
●
int
VL_Summary_get_SpeedsUpperLimit_Count(int
h):
devolve
o
valor
existente na posição indicada dentro da coleção de valores que formam as
variações de distribuição de velocidades do resumo (a partir de zero).
Se não existir um SpeedsUpperLimit válido para a posição indicada, retorna
nulo.
O parâmetro “h” é um manipulador do resumo (Summary).
●
LengthsUpperLimit
C++:
LengthsUpperLimit get_LengthsUpperLimit()
C:
Não existe.
Em C++, devolve a coleção de valores que formam as variações de distribuição de
comprimentos do resumo.
Em C não existe uma representação da coleção “LengthsUpperLimit”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_LengthsUpperLimit_Count(int h): número de valores que
formam as variações de distribuição de comprimentos do resumo.
●
int VL_Summary_get_LengthsUpperLimit_Item(int h, int item): devolve o valor
existente na posição indicada dentro da coleção de valores que formam a
distribuição de comprimentos do resumo (a partir de zero).
Se não existir um LengthsUpperLimit para a posição indicada, retorna nulo.
Quercus Technologies
77
MANUAL DE PROGRAMAÇÃO
QuercusVL
O parâmetro “h” é um manipulador do resumo (Summary).
●
OccupationsUpperLimit
C++:
OccupationsUpperLimit get_OccupationsUpperLimit()
C:
Não existe.
Em C++, devolve a coleção de valores que formam as variações de distribuição de
ocupações do resumo.
Em C não existe uma representação da coleção “OccupationsUpperLimit”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_Summary_get_OccupationsUpperLimit_Count(int h): número de valores
que formam as variações de distribuição de ocupações do resumo.
●
int VL_Summary_get_OccupationsUpperLimit_Item(int h, int item): devolve o
valor existente na posição indicada dentro da coleção de valores da distribuição
de ocupações do resumo (a partir de zero).
Se não existir um OccupationsUpperLimit para a posição indicada, retorna nulo.
O parâmetro “h” é um manipulador do resumo (Summary).
3.29.2. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre um resumo, e
devolve falso, se as informações não forem válidas. Em alguns casos, alguns métodos
podem retornar resumos vazios. Em C, isso é detectado porque seu valor será zero. Em
C++ em contrapartida, é necessário este método dado que o objeto, pelo fato de não
se tratar de um ponteiro, sempre será correto.
●
AddRef
C++:
Não existe.
C:
void VL_Summary_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_Summary_Release ( int h )
Quercus Technologies
78
MANUAL DE PROGRAMAÇÃO
QuercusVL
Ver 2.2.1. Gerenciamento de memória.
3.30. Classe SpeedsDistribution
Coleção de porcentagens de veículos que circularam por um detector para uma determinada
variação de velocidade. Estas variações são definidas na coleção SpeedsUpperLimit. Para mais
informações sobre a distribuição de velocidades, consultar o manual do usuário de
SmartLoop®.
3.30.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Summary_get_SpeedsDistribution_Count(int h)
de Summary.
Número de valores existentes na coleção.
●
Item
C++:
int Item ( int item )
C:
Não existe, consultar VL_Summary_get_SpeedsDistribution_Item(int h,
int item) de Summary.
Devolve
a
porcentagem
existente
na
posição
indicada
dentro
da
coleção
de
porcentagens de veículos que circularam por um detector para uma determinada
variação de velocidade. A posição que cada contador ocupa dentro da coleção é a
mesma da ordem das variações na coleção SpeedsUpperLimit do detector.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um SpeedsDistribution válido para a posição indicada, devolve um não
válido (ver IsValid da classe SpeedsDistribution).
3.31. Classe LengthsDistribution
Coleção de porcentagens de veículos que circularam por um detector para uma determinada
variação de comprimento; estas variações são definidas na coleção LengthsUpperLimit. Para
mais informações sobre a distribuição de comprimentos, consultar o manual do usuário de
SmartLoop®.
Quercus Technologies
79
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.31.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Summary_get_LengthsDistribution_Count(int h)
de Summary.
Número de valores existentes na coleção.
●
Item
C++:
int Item ( int item )
C:
Não existe, consultar VL_Summary_get_LengthsDistribution_Item(int h,
int item) de TrafficLight.
Devolve
a
porcentagem
existente
na
posição
indicada
dentro
da
coleção
de
porcentagens de veículos que circularam por um detector para uma determinada
variação de comprimento. A posição que cada valor ocupa dentro da coleção é a mesma
da ordem das variações na coleção LengthsUpperLimit do detector.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um LengthsDistribution válido para a posição indicada, devolve um não
válido (ver IsValid da classe LengthsDistribution).
3.32. Classe OccupationsDistribution
Coleção de porcentagens de tempo que um detector ocupou para uma determinada variação
de ocupação; estas variações são definidas na coleção OccupationsUpperLimit. Para mais
informações sobre a distribuição de ocupações, consultar o manual do usuário de SmartLoop ®.
3.32.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não
existe,
consultar
VL_Summary_get_OccupationsDistribution_Count(int h) de Summary.
Número de valores existentes na coleção.
●
Item
C++:
Quercus Technologies
int Item ( int item )
80
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
Não existe, consultar VL_Summary_get_OccupationsDistribution_Item(int
h, int item) de Summary.
Devolve o porcentagem que há na posição indicada dentro da coleção de de
porcentagem de tempo para uma determinada coleção de ocupação. A posição que
cada porcentagem de tempo ocupa dentro da coleção é a mesma da ordem das
variações na coleção OccupationsUpperLimit do detector.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um OccupationsDistribution válido para a posição indicada, devolve um
não válido (ver IsValid da classe OccupationsDistribution).
3.33. Classe SpeedsUpperLimit
Coleção de valores que compõem as variações de velocidade de um detector. Para mais
informações sobre a distribuição de velocidades, consultar o manual do usuário de
SmartLoop®.
3.33.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Summary_get_SpeedsUpperLimit_Count(int h)
de Summary.
Número de valores existentes na coleção.
●
Item
C++:
int Item ( int item )
C:
Não existe, consultar VL_Summary_get_SpeedsUpperLimit_Item(int h,
int item) de Summary.
Devolve o valor existente na posição indicada dentro da coleção de valores que formam
as variações de velocidades de um detector. Os valores estão ordenados do menor para
o maior, situando o valor menor na primeira posição da coleção.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um SpeedsUpperLimit válido para a posição indicada, devolve um não
válido (ver IsValid da classe SpeedsUpperLimit).
Quercus Technologies
81
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.34. Classe LengthsUpperLimit
Coleção de valores que compõem as variações de comprimento de um detector. Para mais
informações sobre a distribuição de comprimentos, consultar o manual do usuário de
SmartLoop®. .
3.34.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_Summary_get_LengthsUpperLimit_Count(int h)
de Summary.
Número de valores existentes na coleção.
●
Item
C++:
int Item ( int item )
C:
Não existe, consultar VL_Summary_get_LengthsUpperLimit_Item(int h,
int item) de Summary.
Devolve o valor existente na posição indicada dentro da coleção de valores que formam
as variações de comprimento de um detector. Os valores estão ordenados do menor
para o maior, situando o valor menor na primeira posição da coleção.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um LengthsUpperLimit válido para a posição indicada, devolve um não
válido (ver IsValid da classe LengthsUpperLimit).
3.35. Classe OccupationsUpperLimit
Coleção de valores que compõem as variações de porcentagem de ocupação de um detector.
Para mais informações sobre a distribuição de ocupações, consultar o manual do usuário de
SmartLoop®.
3.35.1. Propriedades
●
Count
C++:
int Count ( )
C:
Não
existe,
consultar
VL_Summary_get_OccupationsUpperLimit_Count(int h) de Summary.
Quercus Technologies
82
MANUAL DE PROGRAMAÇÃO
QuercusVL
Número de porcentagens de tempo existentes na coleção.
●
Item
C++:
int Item ( int item )
C:
Não existe, consultar VL_Summary_get_OccupationsUpperLimit_Item(int
h, int item) de Summary.
Devolve o valor existente na posição indicada dentro da coleção de valores que formam
as variações de porcentagem de ocupação de um detector. Os valores estão ordenados
do menor para o maior, situando o valor menor na primeira posição da coleção.
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
Se não existir um OccupationsUpperLimit válido para a posição indicada, devolve um
não válido (ver IsValid da classe OccupationsUpperLimit).
3.36. Classe Timestamp
Definição de momento.
3.36.1. Propriedades
●
Seconds
C++:
int get_Seconds()
C:
Não existe. Ver classe_get_Timestamp_Seconds(int h), onde classe é a
classe que referencia Timestamp.
Data e hora do momento; em segundos desde o 1 de janeiro de 1970, à 00.00 horas.
É o mesmo formato que retorna a chamada à função time_t time (time_t *timer) do
standard ANSI C.
●
USeconds
C++:
int get_USeconds()
C:
Não existe. Ver classe_get_Timestamp_Seconds(int h), onde classe é a
classe que referencia Timestamp.
Microssegundo do momento.
3.37. Classe Notification
Representação lógica de uma notificação da unidade.
Quercus Technologies
83
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.37.1. Propriedades
●
Code
C++:
VLNotificationCode get_Code()
C:
int VL_Notification_get_Code(int h)
Devolve o código de notificação.
Em C o parâmetro “h” é um manipulador da notificação (Notification).
●
Unit
C++:
Unit get_Unit()
C:
int VL_Notification_get_Unit(int h)
Devolve a unidade que gerou a notificação.
Em C o parâmetro “h” é um manipulador da notificação (Notification).
3.38. Classe Configuration
Classe que dá acesso ao sistema de configuração da unidade.
3.38.1. Métodos
●
IsValid
C++:
bool IsValid()
C:
Não existe.
Devolve verdadeiro, se o objeto contém informações válidas sobre o sistema de
configuração, e devolve falso se as informações não forem válidas.
●
Login
C++: bool Login ( const char* password )
C:
int VL_Configuration_Login ( int h, const char* password )
Dá acesso ao sistema de configuração da unidade. No parâmetro "password" se deve
indicar a password da unidade. Retorna verdadeiro se foi possível efetuar a operação,
falso caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
Quercus Technologies
84
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Logout
C++: bool Logout()
C:
int VL_Configuration_Logout ( int h )
Perde o acesso ao sistema de configuração da unidade. Retorna verdadeiro se foi
possível efetuar a operação, falso caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
●
IsLoggedIn
C++: bool IsLoggedIn()
C:
int VL_Configuration_IsLoggedIn ( int h )
Verifica se atualmente se tem permissão de acesso ao sistema de configuração da
unidade. Retorna verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ChangePassword
C++: bool ChangePassword ( const char* newPassword )
C:
int VL_Configuration_ChangePassword ( int h, const char* newPassword )
Altera a password de acesso à unidade. A alteração não será persistente enquanto não
se apliquem alterações. "newPassword" deve ser uma cadeia de texto acabada em "\0".
Retorna verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
Syntime
C++: bool SyncTime ( )
C:
int VL_Configuration_SyncTime ( int h )
Sincroniza a data e hora com o servidor e protocolo que se tenha especificado na
configuração. Retorna verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
SetTime
C++: bool SetTime ( long dateTime )
C:
int VL_Configuration_SetTime ( int h, long dateTime )
Quercus Technologies
85
MANUAL DE PROGRAMAÇÃO
QuercusVL
Estabelece a data e hora indicada em "dateTime". - Esta data e hora está especificada
em segundos decorridos desde 1 de janeiro de 1970 às 00:00:00 h. Retorna verdadeiro
se foi possível efetuar a operação, falso caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
●
UpdateFirmware
C++: bool UpdateFirmware ( const char* fileName )
C:
int VL_Configuration_UpdateFirmware ( int h, const char* fileName )
Atualiza a unidade usando o arquivo de atualização indicado em "fileName". O arquivo
deve ter sido previamente depositado na raiz do servidor de FTP da unidade. Retorna
verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
RestoreFirmware
C++: bool RestoreFirmware ( )
C:
int VL_Configuration_RestoreFirmware ( int h )
Restaura o firmware da unidade a sua versão original. Retorna verdadeiro em caso
afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ExportLog
C++: bool ExportLog ( VLLogSystem logType, const char* fileName )
C:
int VL_Configuration_ExportLog ( int h, int logType, const char* fileName )
Exporta o arquivo de registro de log indicado em "logType" (ver 3.60. Tipo
VLLogSystem ) e o deposita na raiz do servidor de FTP com o nome "fileName". Retorna
verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetSystemInformation
C++: SystemInformation GetSystemInformation()
C:
int VL_Configuration_GetSystemInformation (int h )
Retorna um objeto do tipo SystemInformation que contém as informações da unidade.
Em C o parâmetro "h" é um manipulador de Configuration. Retorna um manipulador de
Quercus Technologies
86
MANUAL DE PROGRAMAÇÃO
QuercusVL
SystemInformation.
●
ExportStatus
C++: bool ExportStatus ( const char* fileName )
C:
int VL_Configuration_ExportStatus ( int h, const char* fileName )
Gera um relatório do estado do sistema e o deposita na raiz do servidor de FTP com o
nome "fileName". Retorna verdadeiro em caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetEntriesCount
C++: int GetEntriesCount()
C:
int VL_Configuration_GetEntriesCount ( int h )
Retorna o número de variáveis que contém o sistema de configuração da unidade ou -1
em caso de erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetEntry
C++: SettingsEntry GetEntry (int n)
C:
int VL_Configuration_GetEntryByIndex ( int h, int n )
Retorna a variável "n"-ésima do sistema de configuração da unidade.
Em C++, se não existir o SettingsEntry indicado, retorna um não válido; em C retorna
nulo.
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_SettingsEntry_Release (ver o método Release da classe SettingsEntry).
Em C o parâmetro "h" é um manipulador de Configuration e retorna um manipulador a
SettingsEntry.
●
GetEntry
C++: SettingsEntry GetEntry (const char* name)
C:
int VL_Configuration_GetEntryByName ( int h, const char* name )
Retorna a variável com nome "name" do sistema de configuração da unidade.
Em C++, se não existir o SettingsEntry indicado, retorna um não válido; em C retorna
nulo.
Quercus Technologies
87
MANUAL DE PROGRAMAÇÃO
QuercusVL
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_SettingsEntry_Release (ver o método Release da classe SettingsEntry).
Em C o parâmetro "h" é um manipulador de Configuration e retorna um manipulador a
SettingsEntry.
●
SetEntry
C++: bool SetEntry ( const char* name, const char* value )
C:
int VL_Configuration_SetEntry ( int h, const char* name, const char* value )
Estabelece o valor da variável "name" ao valor "value". Retorna verdadeiro em caso
afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
RestoreEntry
C++: bool RestoreEntry ( const char* name )
C:
int VL_Configuration_RestoreEntry ( int h, const char* name )
Restaura o valor predefinido da variável "name". Retorna verdadeiro em caso
afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ApplyChanges
C++: bool ApplyChanges()
C:
int VL_Configuration_ApplyChanges ( int h )
Aplica as alterações efetuadas e reinicia a unidade. Retorna verdadeiro em caso
afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
DiscardChanges
C++: bool DiscardChanges()
C:
int VL_Configuration_DiscardChanges ( int h )
Descarta as alterações efetuadas na configuração da unidade. Retorna verdadeiro em
caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
Quercus Technologies
88
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
ImportConfiguration
C++: bool ImportConfiguration ( const char* fileName )
C:
int VL_Configuration_ImportConfiguration ( int h, const char* fileName )
Importa a configuração do arquivo indicado em "fileName". O arquivo deve ter sido
previamente depositado na raiz do servidor de FTP da unidade. Retorna verdadeiro em
caso afirmativo, falso caso contrário ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ExportConfiguration
C++: bool ExportConfiguration ( const char* fileName )
C:
int VL_Configuration_ExportConfiguration ( int h, const char* fileName )
Exporta a configuração ao arquivo indicado em "fileName" e o deposita na raiz do
servidor de FTP da unidade. Retorna verdadeiro em caso afirmativo, falso caso contrário
ou erro.
Em C o parâmetro "h" é um manipulador de Configuration.
●
NewPresenceDetector
C++: ConfigurationPresenceDetector NewPresenceDetector()
C:
int VL_Configuration_New_PresenceDetector( int h )
Cria um detector de presença vazio (valores por falta).
Para adicionar um novo detector de presença na unidade deve utilizar essa função, para
logo modificar o detector e adicioná-lo ao sistema mediante a função ApplyDetector da
classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
NewQueueDetector
C++: ConfigurationQueueDetector NewQueueDetector()
C:
int VL_Configuration_New_QueueDetector( int h )
Cria um detector de fila vazio (valores por falta).
Para adicionar um novo detector de fila na unidade deve utilizar essa função, para logo
modificar o detector e adicioná-lo ao sistema mediante a função ApplyDetector da
classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
Quercus Technologies
89
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
NewSpeedDetector
C++: ConfigurationSpeedDetector NewSpeedDetector()
C:
int VL_Configuration_New_SpeedDetector( int h )
Cria um detector de velocidade vazio (valores por falta).
Para adicionar um novo detector de velocidade na unidade deve utilizar essa função,
para logo
modificar
o detector
e
adicioná-lo
ao
sistema
mediante
a função
ApplyDetector da classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
NewRedLightDetector
C++: ConfigurationRedLightDetector NewRedLightDetector()
C:
int VL_Configuration_New_RedLightDetector( int h )
Criar um detector de avanço em vermelho vazio (valores padrões).
Para adicionar um novo detector de avanço em vermelho na unidade deve utilizar essa
função, para logo modificar o detector e adicioná-lo ao sistema mediante a função
ApplyDetector da classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
NewStoppedCarDetector
C++: ConfigurationStoppedCarDetector NewStoppedCarDetector()
C:
int VL_Configuration_New_StoppedCarDetector( int h )
Cria um detector de veículo parado vazio (valores por falta).
Para adicionar um novo detector de veículo parado na unidade deve utilizar essa
função, para logo modificar o detector e adicioná-lo ao sistema mediante a função
ApplyDetector da classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetDetectorCount
C++: int GetDetectorCount()
C:
int VL_Configuration_Get_DetectorCount ( int h )
Retorna o número de detectores configurados.
Em C o parâmetro "h" é um manipulador de Configuration.
Quercus Technologies
90
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
GetDetector
C++: ConfigurationDetector GetDetector( int index, int id )
C:
int VL_Configuration_Get_Detector( int h, int index, int id )
Devolve um detector da lista de detectores da unidade. Esse é definido por um dos
parâmetros:
○
Index: posição do detector na lista de detectores da unidade.
○
Id: identificador do detector.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Em C++, se não existir um ConfigurationDetector com o índice/posição indicada,
retorna um não válido; em C retorna nulo.
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_ConfigurationDetector_Release
(ver
o
método
Release
da
classe
ConfigurationDetector).
Em C o parâmetro "h" é um manipulador de Configuration.
●
DeleteDetector
C++: bool DeleteDetector( int index, int id )
C:
int VL_Configuration_Delete_Detector( int h, int index, int id )
Elimina um detector da lista de detectores da unidade. Esse é definido por um dos
parâmetros: ○
Index: posição do detector na lista de detectores da unidade.
○
Id: identificador do detector.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve falso
caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ApplyDetector
C++: bool ApplyDetector( ConfigurationDetector detector, VLConfigurationActionType
action, int previousId )
C:
int
VL_Configuration_Apply_Detector( int h, int hDetector, int action, int
previousId )
Incorpora um novo detector à lista de detectores da unidade ou modifica umo
Quercus Technologies
91
MANUAL DE PROGRAMAÇÃO
QuercusVL
existente. A ação realizada dependerá do parâmetro “action” (ver 3.61. Tipo
VLConfigurationActionType ).Se modificar um detector já existente deve indicar seu antigo identificador (pode ter
modificado) mediante o parâmetro “previousId”. Se, ao contrário, um novo detector é
adicionado, indicar -1.
Devolve verdadeiro se a ação tiver sido realizada com sucesso, ou devolve como falso,
se houve problemas.
Em C o parâmetro "h" é um manipulador de Configuration e hDetector um manipulador
de ConfigurationDetector.
●
NewTrafficLight
C++: ConfigurationTrafficLight NewTrafficLight()
C:
int VL_Configuration_New_TrafficLight( int h )
Cria um semáforo vazio (valores por falta). Para adicionar um novo detector de presença na unidade deve utilizar essa função, para
logo modificar o detector e adicioná-lo ao sistema mediante a função ApplyTrafficLight
da classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetTrafficLightsCount
C++: int GetTrafficLightsCount()
C:
int VL_Configuration_Get_TrafficLightsCount ( int h )
Retorna o número de semáforos configurados.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetTrafficLight
C++: ConfigurationTrafficLight GetTrafficLight( int index, int id )
C:
int VL_Configuration_Get_TrafficLight( int h, int index, int id )
Devolve um semáforo da lista de semáforos da unidade. Esse é definido por um dos
parâmetros:
○
Index: posição do semáforo na lista de semáforos da unidade.
○
Id: identificador do semáforo.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Em C++, se não existir um ConfigurationTrafficLight com o índice/posição indicada,
Quercus Technologies
92
MANUAL DE PROGRAMAÇÃO
QuercusVL
retorna um não válido; em C retorna nulo.
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_ConfigurationTrafficLight_Release
(ver
o
método
Release
da
classe
ConfigurationTrafficLight).
Em C o parâmetro "h" é um manipulador de Configuration.
●
DeleteTrafficLight
C++: bool DeleteTrafficLight( int index, int id )
C:
int VL_Configuration_Delete_TrafficLight( int h, int index, int id )
Elimina um semáforo da lista de semáforos da unidade. Esse é definido por um dos
parâmetros:
○
Index: posição do semáforo na lista de semáforos da unidade.
○
Id: identificador do semáforo.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve falso
caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ApplyTrafficLight
C++: bool
ApplyTrafficLight(
ConfigurationTrafficLight
trafficLight,
VLConfigurationActionType action, int previousId )
C:
int
VL_Configuration_Apply_TrafficLight( int h, int hTrafficLight, int action, int
previousID )
Incorpora um novo semáforo à lista de semáforos da unidade ou modifica umo
existente. A ação realizada dependerá do parâmetro “action” (ver 3.61. Tipo
VLConfigurationActionType ).
Se modificar um semáforo já existente deve indicar seu antigo identificador (pode ter
modificado) mediante o parâmetro “previousId”. Se, ao contrário, um novo semáforo é
adicionado, indicar -1.
Devolve verdadeiro se a ação tiver sido realizada com sucesso, ou devolve como falso,
se houve problemas.
Em C o parâmetro "h" é um manipulador de Configuration e hTrafficLight um
manipulador de ConfigurationTrafficLight.
●
NewOutputActuator
Quercus Technologies
93
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++: ConfigurationOutputActuator NewOutputActuator()
C:
int VL_Configuration_New_OutputActuator( int h )
Cria um atuador de saída vazio (valores por padrão). Para adicionar um novo atuador de saída na unidade deve utilizar essa função, para
logo
modificar
o
atuador
e
adicioná-lo
ao
sistema
mediante
a
função
Retorna um atuador de saída da lista de atuadores de saída da unidade.
Esse é
ApplyOutputActuator da classe Configuration.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetOutputActuatorsCount
C++: int GetOutputActuatorsCount()
C:
int VL_Configuration_Get_OutputActuatorsCount ( int h )
Retorna o número de atuadores de saída configurados.
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetOutputActuator
C++: ConfigurationOutputActuator GetOutputActuator( int index, int id )
C:
int VL_Configuration_Get_OutputActuator( int h, int index, int id )
definido por um dos parâmetros:
○
Index: posição do atuador de saída da lista de atuadores de saída da unidade.
○
Id: identificador do atuador de saída.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Em C++, se não existir um ConfigurationOutputActuator com o índice/posição indicada,
retorna um não válido; em C retorna nulo.
Em C, quando não se necessitar mais o elemento, deverá ser chamada a função
VL_ConfigurationOutputActuator_Release(ver
o
método
Release
da
classe
ConfigurationOutputActuator).
Em C o parâmetro "h" é um manipulador de Configuration.
●
DeleteOutputActuator
C++: bool DeleteOutputActuator( int index, int id )
C:
int VL_Configuration_Delete_OutputActuator( int h, int index, int id )
Elimina um atuador de saída da lista de atuadores de saída da unidade. Esse é definido
Quercus Technologies
94
MANUAL DE PROGRAMAÇÃO
QuercusVL
por um dos parâmetros:
○
Index: posição do atuador de saída da lista de atuadores de saída da unidade.
○
Id: identificador do atuador de saída.
Somente pode utilizar um; no parâmetro não utilizado deve indicar -1.
Devolve verdadeiro se a solicitação tiver sido realizada com sucesso, ou devolve falso
caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
●
ApplyOutputActuator
C++: bool
ApplyOutputActuator(
ConfigurationOutputActuator
outputActuator,
VLConfigurationActionType action, int previousId )
C:
int
VL_Configuration_Apply_OutputActuator( int h, int hOutputActuator, int
action, int previousID )
Incorpora um novo atuador de saída à lista de atuadores de saída da unidade ou
modifica umo existente. A ação realizada dependerá do parâmetro “action” (ver 3.61.
Tipo VLConfigurationActionType ).
Se modificar um atuador de saída já existente deve indicar seu antigo identificador
(pode ter modificado) mediante o parâmetro “previousId”. Se, ao contrário, um novo
atuador de saída é adicionado, indicar -1.
Devolve verdadeiro se a ação tiver sido realizada com sucesso, ou devolve como falso,
se houve problemas.
Em C o parâmetro "h" é um manipulador de Configuration e hOutputActuator um
manipulador de ConfigurationOutputActuator.
●
SetLanguage
C++: bool SetLanguage( const char* languageId )
C:
int Configuration_SetLanguage ( int h, const char* languageId)
Estabelece o idioma do sistema de configuração, indicado como um código de 2
caráteres (ISO 639-1) acabado com o caráter \0.
Retorna verdadeiro se foi possível efetuar a operação e falso caso contrário.
Os parâmetros C
Em C o parâmetro "h" é um manipulador de Configuration.
●
GetLanguage
C++: bool GetLanguage( char *buf, int bufLen)
Quercus Technologies
95
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int Configuration_GetLanguage ( int h, char* buf, int bufLen )
Obtém o idioma configurado atualmente no sistema de configuração, indicado como um
código de 2 caráteres (ISO 639-1) acabado com o caráter \0. El parâmetro "buf" é um
ponteiro a um buffer onde se escreverá o código e no parâmetro "bufLem" se deverá
indicar o tamanho máximo em bytes deste buffer.
Retorna verdadeiro se foi possível efetuar a operação e falso caso contrário.
Em C o parâmetro "h" é um manipulador de Configuration.
3.39. Classe ConfigurationDetector
Representa um detector genérico do sistema de configuração. Dessa classe se derivam cada
um dos diferentes tipos de detectores.
Por razões históricas, todas as coordenadas descritas num detector serão definidas uma
imagem de 5 megapixels (de 0 a 2559 y de 0 a 1919).
3.39.1. Propriedades
●
Id
Identificador do detector. Este deve ser único na lista de detectores da unidade.
C++: int get_Id ( )
C:
int VL_ConfigurationDetector_get_Id ( int h )
Devolve o identificador.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Id ( int id )
C:
void VL_ConfigurationDetector_put_Id ( int h, int id )
Modifica o identificador. O novo valor é indicado por o parâmetro "id".
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Tipo
C++: VLDetectorType get_Type ( )
C:
int VL_ConfigurationDetector_get_Type ( int h )
Quercus Technologies
96
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve o tipo de detector. Ver 3.56. Tipo VLLightType.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
AreIncidencesEnabled
Indica se o detector tem habilitada a geração de incidências. Em caso negativo não
serão geradas incidências no detector.
C++: bool get_AreIncidencesEnabled ( )
C:
int VL_ConfigurationDetector_get_AreIncidencesEnabled( int h )
Retorna o estado da geração de incidências.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_AreIncidencesEnabled ( bool value )
C:
void VL_ConfigurationDetector_put_AreIncidencesEnabled ( int h, int n )
Certo para habilitar a geração de incidências no detector; falso caso contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
AreSummariesEnabled
Indica se o detector tem habilitada a geração de resumos. Em caso negativo não serão
gerados sumários no detector.
C++: bool get_AreSummariesEnabled ( )
C:
int VL_ConfigurationDetector_get_AreSummariesEnabled( int h )
Retorna o estado da geração de resumos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_AreSummariesEnabled ( bool value )
C:
void VL_ConfigurationDetector_put_AreSummariesEnabled ( int h, int n )
Retorna verdadeiro para habilitar a geração de resumos do detector, falso caso
contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
SendRealTimeInformation
Quercus Technologies
97
MANUAL DE PROGRAMAÇÃO
QuercusVL
Indica se o envio de informações em tempo real está habilitado. Caso negativo, a
unidade não informará ao sistema central dos eventos de este detector.
C++: bool get_SendRealTimeInformation ( )
C:
int VL_ConfigurationDetector_get_SendRealTimeInformation( int h )
Devolve a situação do envio de informações em tempo real.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_SendRealTimeInformation ( bool value )
C:
void VL_ConfigurationDetector_put_SendRealTimeInformation ( int h, int n )
Certo para habilitar o envio de informações em tempo real do detector; falso caso
contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
SendIncidences
Indica se o envio de incidências geradas está habilitado. Caso negativo, a unidade não
enviará as incidências geradas no detector ao sistema central.
C++: bool get_SendIncidences ( )
C:
int VL_ConfigurationDetector_get_SendIncidences( int h )
Devolve a situação do envio de incidências geradas.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_SendIncidences ( bool value )
C:
void VL_ConfigurationDetector_put_SendIncidences ( int h, int n )
Certo para habilitar o envio de incidências geradas no detector; falso caso contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
SendSummaries
Indica se o envio de resumos gerados está habilitado. Caso negativo, a unidade não
enviará os resumos gerados no detector ao sistema central.
C++: bool get_SendSummaries ( )
Quercus Technologies
98
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_ConfigurationDetector_get_SendSummaries( int h )
Devolve a situação do envio de resumos gerados.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_SendSummaries ( bool value )
C:
void VL_ConfigurationDetector_put_SendSummaries ( int h, int n )
Certo para habilitar o envio de resumos gerados no detector; falso caso contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
SummariesPeriod
Período de tempo dos resumos; em minutos.
C++: int get_SummariesPeriod ( )
C:
int VL_ConfigurationDetector_get_SummariesPeriod( int h )
Devolve o período de tempo dos sumários configurados.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_SummariesPeriod ( int value )
C:
void VL_ConfigurationDetector_put_SummariesPeriod ( int h, int n )
Modifica o período de tempo dos resumos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Coordinates
Coordenadas do detector.
C++: Region get_Coordinates ( )
C:
int VL_ConfigurationDetector_get_Coordinates( int h )
Devolve as coordenadas do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Coordinates ( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 )
Quercus Technologies
99
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
void ConfigurationDetector_put_Coordinates ( int h, int x1, int y1, int x2, int y2,
int x3, int y3, int x4, int y4 )
Modifica as coordenadas do detector. Consulta o manual de usuário de SmartLoop ® ou
o de BirdWatch® para saber como as coordenadas do detector são definidas.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.39.2. Métodos
●
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
●
AddRef
C++:
Não existe.
C:
void VL_ConfigurationDetector_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_ConfigurationDetector_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.40. Classe ConfigurationPresenceDetector
Representa um detector de presença do sistema de configuração. Esta classe deriva de
ConfigurationDetector; ver 3.39. Classe ConfigurationDetector.
3.41. Classe ConfigurationQueueDetector
Representa um detector de fila do sistema de configuração. Esta classe deriva de
ConfigurationDetector; ver 3.39. Classe ConfigurationDetector.
Quercus Technologies
100
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.42. Classe ConfigurationSpeedDetector
Representa um detector de velocidade do sistema de configuração. Esta classe deriva de
ConfigurationDetector; ver 3.39. Classe ConfigurationDetector.
3.42.1. Propriedades
●
CalculateMetrics
Indica se o cálculo de velocidades e comprimentos dos veículos está habilitado. Em
caso negativo a unidade não calculará os valores para o detector.
C++: bool get_CalculateMetrics ( )
C:
int VL_ConfigurationSpeedDetector_get_CalculateMetrics ( int h )
Devolve o estado do cálculo de velocidades e comprimentos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_CalculateMetrics ( bool value )
C:
void VL_ConfigurationSpeedDetector_put_CalculateMetrics ( int h, int n )
Verdadeiro para habilitar o cálculo de velocidades e comprimentos; falso caso contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Distance
Distância de a unidade ao detector; em milímetros.
C++: int get_Distance ( )
C:
int VL_ConfigurationSpeedDetector_get_Distance( int h )
Devolve a distância da unidade até o detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Distance ( bool value )
C:
void VL_ConfigurationSpeedDetector_put_Distance ( int h, int n )
Devolve a distância da unidade até o detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
Quercus Technologies
101
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Length
Comprimento do detector; em milímetros.
C++: int get_Length ( )
C:
int VL_ConfigurationSpeedDetector_get_Length( int h )
Devolve o comprimento do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Length ( bool value )
C:
void VL_ConfigurationSpeedDetector_put_Length ( int h, int n )
Modifica o comprimento do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.43. Classe ConfigurationRedLightDetector
Representa um detector de avanço em vermelho do sistema de configuração. Esta classe
deriva de ConfigurationDetector; ver 3.39. Classe ConfigurationDetector.
3.43.1. Propriedades
●
CalculateMetrics
Indica se o cálculo de velocidades e comprimentos dos veículos está habilitado. Em
caso negativo a unidade não calculará os valores para o detector.
C++: bool get_CalculateMetrics ( )
C:
int VL_ConfigurationRedLightDetector_get_CalculateMetrics( int h )
Devolve o estado do cálculo de velocidades e comprimentos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_CalculateMetrics ( bool value )
C:
void VL_ConfigurationRedLightDetector_put_CalculateMetrics ( int h, int n )
Verdadeiro para habilitar o cálculo de velocidades e comprimentos; falso caso contrário.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
Quercus Technologies
102
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Distance
Distância de a unidade ao detector; em milímetros.
C++: int get_Distance ( )
C:
int VL_ConfigurationRedLightDetector_get_Distance( int h )
Devolve a distância da unidade até o detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Distance ( int value )
C:
void VL_ConfigurationRedLightDetector_put_Distance ( int h, int n )
Devolve a distância da unidade até o detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Length
Comprimento do detector; em milímetros.
C++: int get_Length ( )
C:
int VL_ConfigurationRedLightDetector_get_Length( int h )
Devolve o comprimento do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Length ( int value )
C:
void VL_ConfigurationRedLightDetector_put_Length ( int h, int n )
Modifica o comprimento do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
DelayTime
Tempo de espera do detector; em milésimos de segundos.
C++: int get_DelayTime ( )
C:
int VL_ConfigurationRedLightDetector_get_DelayTime( int h )
Quercus Technologies
103
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve o tempo de espera do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_DelayTime ( int value )
C:
void VL_ConfigurationRedLightDetector_put_DelayTime ( int h, int n )
Modifica o tempo de espera do detector.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
TrafficLightId
Identificador do semáforo relacionado com o detector. No caso de usar entradas
digitais, seu valor será -1.
C++: int get_TrafficLightId ( )
C:
int VL_ConfigurationRedLightDetector_get_TrafficLightId( int h )
Devolve o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_TrafficLightId ( int value )
C:
void VL_ConfigurationRedLightDetector_put_TrafficLightId ( int h, int n )
Modifica o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
RedInput
Identificador da entrada digital utilizada para o sinal de proibição de avançar. No caso
de usar um semáforo configurado, seu valor será -1.
C++: int get_RedInput ( )
C:
int VL_ConfigurationRedLightDetector_get_RedInput( int h )
Devolve o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_RedInput ( int value )
C:
void VL_ConfigurationRedLightDetector_put_RedInput ( int h, int n )
Quercus Technologies
104
MANUAL DE PROGRAMAÇÃO
QuercusVL
Modifica o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
AmberInput
Identificador da entrada digital para o sinal de âmbar. No caso de usar um semáforo
configurado o não usar o sinal de âmbar, seu valor será -1.
C++: int get_AmberInput ( )
C:
int VL_ConfigurationRedLightDetector_get_AmberInput( int h )
Devolve o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_AmbarInput ( int value )
C:
void VL_ConfigurationRedLightDetector_put_AmbarInput ( int h, int n )
Modifica o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
IsVideoEnabled
Indica se a geração de vídeo nas unidades está habilitada. Caso negativo, a unidade
não gerara vídeos nas incidências do detector.
C++: bool get_IsVideoEnabled ( )
C:
int VL_ConfigurationRedLightDetector_get_IsVideoEnabled( int h )
Retorna o estado da geração de vídeos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_IsVideoEnabled ( bool value )
C:
void VL_ConfigurationRedLightDetector_put_IsVideoEnabled ( int h, int n )
Modifica o estado da geração do vídeo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
Quercus Technologies
105
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
PreVideoTimeMs
Tempo que antecipará o início da captura do vídeo nas incidências; em milésimos de
segundo.
C++: int get_PreVideoTimeMs ( )
C:
int VL_ConfigurationRedLightDetector_get_PreVideoTimeMs( int h )
Modifica o tempo de adiantamento.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_PreVideoTimeMs ( int value )
C:
void VL_ConfigurationRedLightDetector_put_PreVideoTimeMs ( int h, int n )
Modifica o tempo de adiantamento.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
PostVideoTimeMs
Tempo que atrasará a finalização da captura do vídeo nas incidências; em milésimos de
segundo.
C++: int get_PostVideoTimeMs ( )
C:
int VL_ConfigurationRedLightDetector_get_PostVideoTimeMs( int h )
Devolve o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_PostVideoTimeMs ( int value )
C:
void VL_ConfigurationRedLightDetector_put_PostVideoTimeMs ( int h, int n )
Modifica o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
LastPictureDelayTimeMs
Tempo que atrasará a última captura da imagem da incidência; em milésimos de
segundo.
C++: int get_LastPictureDelayTimeMs ( )
Quercus Technologies
106
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_ConfigurationRedLightDetector_get_LastPictureDelayTimeMs( int h )
Devolve o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_LastPictureDelayTimeMs ( int value )
C:
void VL_ConfigurationRedLightDetector_put_LastPictureDelayTimeMs ( int h, int
n)
Modifica o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.44. Classe ConfigurationStoppedCarDetector
Representa um detector de veículo parado do sistema de configuração. Esta classe deriva de
ConfigurationDetector; ver 3.39. Classe ConfigurationDetector.
3.44.1. Propriedades
●
MaxStopTime
Tempo mínimo de parada do detector para que seja gerada uma incidência; em
milésimos de segundos.
C++: int get_MaxStopTime ( )
C:
int VL_ConfigurationStoppedCarDetector_get_MaxStopTime( int h )
Devolve o tempo mínimo de parada do detector para que seja gerada uma incidência;
em milésimos de segundos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_MaxStopTime ( int value )
C:
void VL_ConfigurationStoppedCarDetector_put_MaxStopTime ( int h, int n )
Modifica o tempo mínimo de parada do detector para que seja gerada uma incidência;
em milissegundos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
TrafficLightId
Quercus Technologies
107
MANUAL DE PROGRAMAÇÃO
QuercusVL
Identificador do semáforo relacionado com o detector. No caso de usar entradas
digitais, seu valor será -1.
C++: int get_TrafficLightId ( )
C:
int VL_ConfigurationStoppedCarDetector_get_TrafficLightId( int h )
Devolve o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_TrafficLightId ( int value )
C:
void VL_ConfigurationStoppedCarDetector_put_TrafficLightId ( int h, int n )
Modifica o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
RedInput
Identificador da entrada digital utilizada para o sinal de proibição de avançar. No caso
de usar um semáforo configurado, seu valor será -1.
C++: int get_RedInput ( )
C:
int VL_ConfigurationStoppedCarDetector_get_RedInput( int h )
Devolve o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_RedInput ( int value )
C:
void VL_ConfigurationStoppedCarDetector_put_RedInput ( int h, int n )
Modifica o identificador da entrada digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
IsVideoEnabled
Indica se a geração de vídeo nas unidades está habilitada. Caso negativo, a unidade
não gerara vídeos nas incidências do detector.
C++: bool get_IsVideoEnabled ( )
C:
int VL_ConfigurationStoppedCarDetector_get_IsVideoEnabled( int h )
Quercus Technologies
108
MANUAL DE PROGRAMAÇÃO
QuercusVL
Retorna o estado da geração de vídeos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_IsVideoEnabled ( bool value )
C:
void VL_ConfigurationStoppedCarDetector_put_IsVideoEnabled ( int h, int n )
Modifica o estado da geração de vídeos.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
PreVideoTimeMs
Tempo que antecipará o início da captura do vídeo nas incidências; em milésimos de
segundo.
C++: int get_PreVideoTimeMs ( )
C:
int VL_ConfigurationStoppedCarDetector_get_PreVideoTimeMs( int h )
Devolve o tempo de adiantamento.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_PreVideoTimeMs ( int value )
C:
void VL_ConfigurationStoppedCarDetector_put_PreVideoTimeMs ( int h, int n )
Modifica o tempo de adiantamento.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
PostVideoTimeMs
Tempo que atrasará a finalização da captura do vídeo nas incidências; em milésimos de
segundo.
C++: int get_PostVideoTimeMs ( )
C:
int VL_ConfigurationStoppedCarDetector_get_PostVideoTimeMs( int h )
Devolve o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_PostVideoTimeMs ( int value )
Quercus Technologies
109
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
void VL_ConfigurationStoppedCarDetector_put_PostVideoTimeMs ( int h, int n )
Modifica o tempo de atraso.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.45. Classe ConfigurationOutputActuator
Representa um atuador de saída ao sistema de configuração.
3.45.1. Propriedades
●
Id
Identificador do atuador de saída.
C++: int get_Id ( )
C:
int VL_ConfigurationOutputActuator_get_Id ( int h )
Devolve o identificador do atuador de saída.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuator.
C++: void put_Id ( int value )
C:
void VL_ConfigurationOutputActuator_put_Id( int h, int Id )
Modifica o identificador do atuador de saída.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuator.
●
Operator
Tipo de operador que determina o comportamento lógico do atuador; ver 3.62. Tipo
VLConditionOperatorType.
C++: VLConditionOperatorType get_Operator ( )
C:
int VL_ConfigurationOutputActuator_get_Operator ( int h )
Devolve o operador.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuator.
C++: void put_Operator ( VLConditionOperatorType value )
C:
void VL_ConfigurationOutputActuator_put_VLConditionOperatorType( int h, int
Quercus Technologies
110
MANUAL DE PROGRAMAÇÃO
QuercusVL
operator )
Modifica o operador do atuador de saída.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuator.
●
OutputId
Identificador da saída digital relacionada ao atuador.
C++: int get_OutputId ( )
C:
int VL_ConfigurationOutputActuator_get_OutputId ( int h )
Devolve o identificador da saída digital relacionada ao atuador.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_OutputId ( int value )
C:
void VL_ConfigurationOutputActuator_put_OutputId( int h, int outputId )
Modifica o identificador da saída digital relacionada ao atuador.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Time
Tempo de ativação da saída digital; em milésimos de segundos.
C++: int get_Time ( )
C:
int VL_ConfigurationOutputActuator_get_Time ( int h )
Devolve o tempo de ativação da saída digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Time ( int value )
C:
void VL_ConfigurationOutputActuator_put_Time( int h, int t )
Modifica o tempo de ativação da saída digital.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.45.2. Métodos
●
IsValid
Quercus Technologies
111
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
●
AddRef
C++:
Não existe.
C:
void VL_ConfigurationOutputActuator_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_ConfigurationOutputActuator_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.46. Classe ConfigurationOutputActuatorConditions
Coleção das condições do atuador de saída.
3.46.1. Métodos
●
Count
C++:
int Count ( )
C:
Não
existe,
VL_ConfigurationOutputActuator_get_Conditions_Count
consultar
(
)
de
ConfigurationOutputActuator.
Número das condições configuradas.
●
Item
C++:
ConfigurationOutputActuatorCondition Item ( int item )
C:
Não
existe,
VL_ConfigurationOutputActuator_get_Conditions_Item
consultar
(
)
de
ConfigurationOutputActuator.
Devolve a condição que há na posição indicada dentro da coleção de atuadores de
Quercus Technologies
112
MANUAL DE PROGRAMAÇÃO
QuercusVL
saída.
Se não existir um ConfigurationOutputActuatorCondition para a posição indicada,
devolve um não válido (ver IsValid da classe ConfigurationOutputActuatorCondition).
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
●
Create
C++:
bool
Create ( int detectorId, VLFieldType field, VLOperatorType op, int
value )
C:
Não
existe,
VL_ConfigurationOutputActuator_get_Condition_Create
consultar
(
)
de
ConfigurationOutputActuator.
Adiciona uma nova condição na coleção de condições da condição do atuador.
A
condição estará definida por cada um dos parâmetros da função.
Devolve verdadeiro se foi criado com sucesso e falso em caso contrário.
●
Delete
C++:
bool Delete ( int index )
C:
Não
existe,
VL_ConfigurationOutputActuator_get_Conditions_Delete
consultar
(
)
de
ConfigurationOutputActuator.
Elimina a condição do atuador de saída, onde a posição da condição é "index".
Devolve verdadeiro se a eliminação tiver sido realizada com sucesso, ou devolve falso
caso contrário.
3.47. Classe ConfigurationOutputActuatorCondition
Representa uma condição do atuador de saída ao sistema de configuração.
3.47.1. Propriedades
●
DetectorId
Identificador do detector relacionado com a condição.
C++: int get_DetectorId ( )
C:
int VL_ConfigurationOutputActuatorCondition_get_DetectorId ( int h )
Quercus Technologies
113
MANUAL DE PROGRAMAÇÃO
QuercusVL
Devolve o identificador do detector relacionado com a condição.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
C++: void put_DetectorId ( int value )
C:
void
VL_ConfigurationOutputActuatorCondition_put_DetectorId(
int
h,
detectorId )
Devolve o identificador do detector relacionado com a atuador.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
●
Field
Campo sobre o que se aplica o atuador; ver 3.57. Tipo VLFieldType.
C++: VLFieldType get_Field ( )
C:
int VL_ConfigurationOutputActuatorCondition_get_Field ( int h )
Devolve o campo de condições.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
C++: void put_Field ( VLFieldType value )
C:
void VL_ConfigurationOutputActuatorCondition_put_Field( int h, int field )
Devolve o campo de condições.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
●
Operator
O operador da condição; ver 3.58. Tipo VLOperatorType.
C++: VLOperatorType get_Operator ( )
C:
int VL_ConfigurationOutputActuatorCondition_get_Operator ( int h )
Devolve o operador da condição.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
C++: void put_Operator ( VLOperatorType value )
C:
void VL_ConfigurationOutputActuatorCondition_put_Operator( int h, int op )
Quercus Technologies
114
int
MANUAL DE PROGRAMAÇÃO
QuercusVL
Modifica o operador das condições.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
●
Value
Valor de comparação do atuador.
C++: int get_Value ( )
C:
int VL_ConfigurationOutputActuatorCondition_get_Value ( int h )
Devolve o valor de comparação da condição.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
C++: void put_Value ( int value )
C:
void VL_ConfigurationOutputActuatorCondition_put_Value( int h, int value )
Devolve o valor de comparação da condição.
Em C o parâmetro "h" é um manipulador de ConfigurationOutputActuatorCondition.
3.47.2. Métodos
●
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
3.48. Classe ConfigurationTrafficLight
Representa um semáforo do sistema de configuração.
Por razões históricas, todas as coordenadas descritas num detector serão definidas uma
imagem de 5 megapixels (de 0 a 2559 y de 0 a 1919).
3.48.1. Propriedades
●
Id
Identificador único do semáforo. Este deve ser único na lista de semáforos configurados
na unidade.
C++: int get_Id ( )
Quercus Technologies
115
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_ConfigurationTrafficLight_get_Id ( int h )
Devolve o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Id ( int value )
C:
void VL_ConfigurationTrafficLight_put_Id ( int h, int n )
Modifica o identificador do semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
NumLights
C++: int get_NumLights ( )
C:
int VL_ConfigurationTrafficLight_get_NumLights ( int h )
Devolve o número de luzes configuradas no semáforo.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Lights
C++:
ConfigurationLights get_Lights( )
C:
Não existe.
Em C++, devolve a coleção de luzes que formam o semáforo.
Em C não existe uma representação da coleção “ConfigurationLights”, mas métodos
para acessar diretamente as propriedades dessa coleção:
●
int VL_ConfigurationTrafficLight_get_Lights_Count ( int h ): número de luzes
existentes no semáforo.
●
int VL_ConfigurationTrafficLight_get_Lights_Item ( int h, int item ): devolve a
luz existente na posição indicada dentro da coleção de luzes do semáforo (a
partir de zero).
Se não existir um ConfigurationLight para a posição indicada, retorna nulo.
●
int VL_ConfigurationTrafficLight_get_Lights_Create ( int h, int x, int y, int radius,
int type ): adiciona uma nova luz ao semáforo, cujas características são
determinados pelos parâmetros da função.
Devolve verdadeiro se foi criado com sucesso e falso em caso contrário.
●
int VL_ConfigurationTrafficLight_get_Lights_Delete ( int h, int index ): elimina a
Quercus Technologies
116
MANUAL DE PROGRAMAÇÃO
QuercusVL
luz existente na posição "índex" dentro da coleção de luzes do semáforo (a partir
de zero).
Devolve verdadeiro se a eliminação tiver sido realizada com sucesso, ou devolve
falso caso contrário.
3.48.2. Métodos
●
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
●
AddRef
C++:
Não existe.
C:
void VL_ConfigurationTrafficLight_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe.
C:
void VL_ConfigurationTrafficLight_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
3.49. Classe ConfigurationLights
Coleção de luzes de um semáforo do sistema de configuração.
3.49.1. Métodos
●
Count
C++:
int Count ( )
C:
Não existe, consultar VL_ConfigurationTrafficLight_get_Lights_Count ( )
de ConfigurationTrafficLight.
Número de luzes configuradas.
●
Item
Quercus Technologies
117
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++:
ConfigurationLight Item ( int item )
C:
Não existe, consultar VL_ConfigurationTrafficLight_get_Lights_Item ( ) de
ConfigurationTrafficLight.
Devolve a luz existente na posição indicada dentro da coleção de luzes do semáforo .
Se não existir um ConfigurationLight para a posição indicada, devolve um não válido
(ver IsValid da classe ConfigurationLight).
No parâmetro “item” deve-se indicar a posição (a primeira posição é zero).
●
Create
C++:
bool Create ( int x, int y, int radius, VLLightType type)
C:
Não existe, consultar VL_ConfigurationTrafficLight_get_Lights_Create ( )
de ConfigurationTrafficLight.
Adiciona uma nova luz na coleção de luzes do semáforo. A mesma estará definida por
cada um dos parâmetros da função.
Retorna verdadeiro se foi possível efetuar a operação, falso caso contrário.
●
Delete
C++:
bool Delete ( int index )
C:
Não existe, consultar VL_ConfigurationTrafficLight_get_Lights_Delete ( )
de ConfigurationTrafficLight.
Exclui a luz do semáforo cuja posição na coleção é “index”.
Devolve verdadeiro se a eliminação tiver sido realizada com sucesso, ou devolve falso
caso contrário.
3.50. Classe ConfigurationLight
Representa uma luz pertencente a um semáforo do sistema de configuração; ver 3.48. Classe
ConfigurationTrafficLight.
3.50.1. Propriedades
●
Tipo
Tipo de luz; ver 3.56. Tipo VLLightType.
C++: VLLightType get_Type ( )
Quercus Technologies
118
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_ConfigurationLight_get_Type( int h )
Devolve o tipo de luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Type ( VLLightType value )
C:
void VL_ConfigurationLight_put_Type( int h, int n )
Modifica o tipo da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
X
Posição X (eixo horizontal) do centro da luz.
C++: int get_X ( )
C:
int VL_ConfigurationLight_get_X( int h )
Devolve a posição X (eixo horizontal) da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_X ( int value )
C:
void VL_ConfigurationLight_put_X( int h, int n )
Modifica a posição X (eixo horizontal) da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Y
Posição Y (eixo vertical) do centro da luz.
C++: int get_Y ( )
C:
int VL_ConfigurationLight_get_Y ( int h )
Devolve a posição Y (eixo vertical) da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Y ( int value )
C:
void VL_ConfigurationLight_put_Y ( int h, int n )
Quercus Technologies
119
MANUAL DE PROGRAMAÇÃO
QuercusVL
Modifica a posição Y (eixo vertical) da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
●
Radius
Raio da luz; em pixels.
C++: int get_Radius ( )
C:
int VL_ConfigurationLight_get_Radius ( int h )
Devolve o raio da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
C++: void put_Radius ( int value )
C:
void VL_ConfigurationLight_put_Radius ( int h, int n )
Modifica o raio da luz.
Em C o parâmetro "h" é um manipulador de ConfigurationDetector.
3.50.2.
●
Métodos
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
3.51. Classe SystemInformation
3.51.1. Propriedades
●
Name
C++: void get_Name ( char *buf, int bufLen )
C:
void VL_SystemInformation_get_Name ( int h, char *buf, int bufLen )
Retorna o nome do produto. O parâmetro "buf" é um ponteiro a um buffer onde se
escreverá o nome e no parâmetro "bufLem" se deverá indicar o tamanho máximo em
bytes deste buffer.
Em C o parâmetro "h" é um manipulador de Configuration.
Quercus Technologies
120
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
ProdutionDate
C++: long get_ProductionDate()
C:
long VL_SystemInformation_get_ProductionDate ( int h )
Retorna a data de produção do equipamento expressada como os segundos decorridos
desde as 00:00 horas de 1 de janeiro de 1970.
Em C o parâmetro "h" é um manipulador de Configuration.
●
SerialNumber
C++: void get_SerialNumber ( char *buf, int bufLen )
C:
void VL_SystemInformation_get_SerialNumber ( int h, char *buf, int bufLen )
Retorna o número de série do produto. O parâmetro "buf" é um ponteiro a um buffer
onde se escreverá o número de série e no parâmetro "bufLem" se deverá indicar o
tamanho máximo em bytes deste buffer.
Em C o parâmetro "h" é um manipulador de Configuration.
●
MacAddress
C++: void get_MacAddress ( char *buf, int bufLen )
C:
void VL_SystemInformation_get_MacAddress ( int h, char *buf, int bufLen )
Retorna o endereço MAC do equipamento. O parâmetro "buf" é um ponteiro a um buffer
onde se escreverá tal endereço e no parâmetro "bufLem" se deverá indicar o tamanho
máximo em bytes deste buffer.
Em C o parâmetro "h" é um manipulador de Configuration.
●
BootTime
C++: long get_BootTime()
C:
long VL_SystemInformation_get_BootTime ( int h )
Retorna a data e hora de partida do equipamento expressada como os segundos
decorridos desde as 00:00 horas de 1 de janeiro de 1970.
Em C o parâmetro "h" é um manipulador de Configuration.
●
HardwareVersion
C++: VersionInformation get_HardwareVersion()
Quercus Technologies
121
MANUAL DE PROGRAMAÇÃO
C:
QuercusVL
int VL_SystemInformation_get_HardwareVersion ( int h )
Retorna um objeto com as informações da versão do hardware.
Em C o parâmetro "h" é um manipulador de Configuration e retorna um manipulador de
VersionInformation.
●
FirmwareVersion
C++: VersionInformation get_FirmwareVersion()
C:
int VL_SystemInformation_get_FirmwareVersion ( int h )
Retorna um objeto com as informações da versão do firmware o qual se executa na
unidade.
Em C o parâmetro "h" é um manipulador de Configuration e retorna um manipulador de
VersionInformation.
3.51.2. Métodos
●
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
3.52. Classe SettingsEntry
Descreve as propriedades de uma entrada da lista de variáveis de configuração.
3.52.1. Propriedades
●
Name
C++: void get_Name ( char *buf, int bufLen )
C:
void VL_SettingEntry_get_Name ( int h, char *buf, int bufLen )
Retorna o nome da variável. O parâmetro "buf" é um ponteiro a um buffer onde se
escreverá o nome e no parâmetro "bufLem" se deverá indicar o tamanho máximo em
bytes deste buffer.
Em C o parâmetro "h" é um manipulador de SettingsEntry.
●
Value
Quercus Technologies
122
MANUAL DE PROGRAMAÇÃO
QuercusVL
C++: void get_Value ( char *buf, int bufLen )
C:
void VL_SettingEntry_get_Value ( int h, char *buf, int bufLen )
Retorna o valor atual da variável. O parâmetro "buf" é um ponteiro a um buffer onde se
escreverá dito valor e no parâmetro "bufLem" se deverá indicar o tamanho máximo em
bytes deste buffer.
Em C o parâmetro "h" é um manipulador de SettingsEntry.
●
Description
C++: void get_Description ( int langId, char *buf, int bufLen )
C:
void VL_SettingEntry_get_Description ( int h, int langId, char *buf,
int bufLem)
Retorna a descrição da variável no idioma indicado em "langId" (1 por o idioma por
padrão, e 2 por o idioma configurado.) O parâmetro "buf" é um ponteiro a um buffer
onde se escreverá a descrição e no parâmetro "bufLem" se deverá indicar o tamanho
máximo em bytes deste buffer.
Em C o parâmetro "h" é um manipulador de SettingsEntry.
3.52.2. Métodos
●
IsValid
C++: bool IsValid()
C:
Não existe.
Retorna verdadeiro se o objeto contém informação válida e falso caso contrário.
●
AddRef
C++:
Não existe.
C:
void VL_SettingEntry_AddRef ( int h )
Ver 2.2.1. Gerenciamento de memória.
●
Release
C++:
Não existe
C:
void VL_SettingEntry_Release ( int h )
Ver 2.2.1. Gerenciamento de memória.
Quercus Technologies
123
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.53. Tipo VLDetectorType
Especifica o tipo de detector.
●
DT_ALL=0
Detector de qualquer tipo.
●
DT_SPEED=1
Detector de velocidade.
●
DT_QUEUE=2
Detector de fila.
●
DT_PRESENCE=3
Detector de presença.
●
DT_RED_LIGHT=4
Detector de avançar no vermelho.
●
DT_STOPPED_CAR=5
Detector de veículo parado.
3.54. Tipo VLNotificationCode
Especifica o tipo de evento que gerou a notificação.
●
NTC_UNDEFINED=-1
Notificação sobre um evento desconhecido.
●
NTC_STATUS_CHANGED=0
Notificação de mudança de situação.
●
NTC_STARTUP_OK=1
Notificação
de
inicialização
de
unidade
Notificação
de
inicialização
de
unidade
correta.
●
NTC_STARTUP_ERROR=2
incorreta.
●
NTC_SHUTDOWN_OK=3
Notificação de desligamento de unidade
correto.
●
NTC_SHUTDOWN_ERROR=4
Notificação de desligamento de unidade
incorreto.
3.55. Tipo VLIncidenceType
Especifica o tipo de incidência.
●
IT_RED_LIGHT_VIOLATION=1 Incidência do tipo “veículo que avançou no sinal
vermelho".
●
IT_STOPPED_CAR_VIOLATION=2
Incidência do tipo “veículo que parou em
uma zona não permitida"
Quercus Technologies
124
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.56. Tipo VLLightType
Especifica a cor de uma luz de um semáforo.
●
LT_RED=0
Luz de cor vermelha.
●
LT_GREEN=1
Luz de cor verde.
●
LT_AMBAR=2
Luz de cor amarela.
●
LT_OTHER=3
Luz de cor desconhecida.
3.57. Tipo VLFieldType
Especifica o tipo de campo a ser considerado para os atuadores de saída digitais dos
detectores.
●
FT_SPEED=0
Velocidade de circulação detectada.
●
FT_LENGTH=1
Comprimento detectado do veículo.
●
FT_WRONG_WAY=2
Sentido de circulação incorreto detectado.
●
FT_OCCUPATION=3
Valor da ocupação.
●
FT_IS_OCCUPIED=4
Presença no detector.
3.58. Tipo VLOperatorType
Especifica o operador utilizado para os atuadores de saídas digitais dos detectores.
●
OT_EQUALS=0
Operador “igual a”.
●
OT_DIFF=1
Operador “diferente de”.
●
OT_GREATER=2
Operador “maior que”.
●
OT_LESSER=3
Operador “menor que”.
3.59. Tipo VLTimestampObject
Especifica o elemento que faz referência a um determinado Timestamp (momento).
●
TO_REAL_TIME=0
Informações de tempo real.
●
TO_IMAGE_INCIDENCE=1
Incidência.
●
TO_VIDEO_INCIDENCE_INI=2
Inicio do vídeo.
●
TO_VIDEO_INCIDENCE_END=3
Finalização do vídeo.
Quercus Technologies
125
MANUAL DE PROGRAMAÇÃO
QuercusVL
3.60. Tipo VLLogSystem
Especifica o tipo de arquivo de registro.
●
VL_LOG_UNIT=0
Arquivo de registro do sistema.
●
VL_LOG_COMBRIDGE=1
●
VL_LOG_CONFIG=2
●
VL_LOG_FILESYSTEM=3 Arquivo de registro do disco de dados.
Obsoleto.
Arquivo de registro do sistema de configuração.
3.61. Tipo VLConfigurationActionType
Especifica a operação que será realizada nos detectores ou semáforos do sistema de
configuração.
●
VL_AT_MODIFY_DETECTOR=0
Modificar um detector existente.
●
VL_AT_ADD_DETECTOR=1
Adicionar um novo detector.
●
VL_AT_MODIFY_TRAFFIC_LIGHT=2
Modificar um semáforo existente.
●
VL_AT_ADD_TRAFFIC_LIGHT=3
Adicionar um novo semáforo.
●
VL_AT_MODIFY_OUTPUT_ACTUATOR=4
Modificar um atuador de saída
existente.
●
VL_AT_ADD_OUTPUT_ACTUATOR=5
Adicionar um novo atuador de
saída.
3.62. Tipo VLConditionOperatorType
Indica o operador que definirá o comportamento da saída do atuador de saída.
●
COT_ALL=0
Todas as condições devem ser válidas para ativar a saída
digital.
●
COT_ANY=1
Uma o mais condições devem ser válidas para ativar a saída
digital.
Quercus Technologies
126
MANUAL DE PROGRAMAÇÃO
QuercusVL
4. Protocolo de comunicações
Cada unidade pode receber e enviar informação mediante um simples protocolo UDP binário.
As mensagens serão enviadas à unidade mediante a porta 8051 desta (modificável mediante
configuração) e a unidade enviará as mensagens à porta 8050 do endereço que tenha
configurado como sistema central (modificável mediante configuração) no qual estará rodando
o aplicativo cliente.
Existem dois grupos de mensagens que podem ser dados entre unidade e sistema central:
●
Eventos.
●
Solicitações (e suas respostas).
Um evento é uma mensagem que a unidade envia ao sistema central como mecanismo para
notificá-lo sobre algum fato (a chegada de uma incidência, a ativação de uma saída digital,
etc.). Um evento deve ser respondido pelo sistema central dentro de um tempo limite
(modificável por configuração) com um ACK para que a unidade saiba que foi recebido com
êxito. Caso contrário, reenviará a mensagem até que receba o ACK ou se esgote o número
máximo de novas tentativas (modificáveis também por configuração). Caso se responda a um
evento com um NAK, também será reenviado (até é esgotado ao mesmo número de novas
tentativas).
Exemplo de Eventos:
Unit
Sistema central
Evento 1
ACK
Evento 2
NAK
Evento 2
NAK
Evento 3
Timeout
Evento 3
Evento 4
Quercus Technologies
127
MANUAL DE PROGRAMAÇÃO
QuercusVL
Uma mensagem do tipo Solicitação é uma mensagem que o aplicativo do cliente envia a uma
unidade para obter informações sobre ela ou para que a unidade execute uma ação (ativar
uma saída, reiniciar a unidade, etc.). Todas as solicitações serão respondidas imediatamente
pela unidade com uma mensagem do tipo resposta, onde estarão as informações solicitadas,
com um ACK, se a mensagem não esperava uma resposta, ou um NAK, se a mensagem não
pôde ser recebida, interpretada ou completada corretamente.
É preciso observar que, entre a chegada à unidade de uma solicitação e sua resposta, pode
ocorrer algum evento no sistema de forma que a primeira mensagem que chegar depois de ter
sido feita uma solicitação não será, necessariamente, a resposta dessa solicitação.
Exemplo de solicitações e suas respostas:
Unidade
Sistema central
ação
ACK (ação)
Obter informação
Informações
ida
mensagem desconhec
NAK
ação
Evento
Evento
ACK (Evento)
ACK (ação)
4.1. Formato das mensagens
As mensagens terão sempre o mesmo formato; a ordenação dos bytes de todos os campos é
“little-endian”:
1
4
4
2
Stx
UnitId
Size
Type
2
Version
4
Id
Variable
Message
data
1
1
Bcc
Etx
●
Stx (1 byte): byte que assinala o início da trama (caráter ASCII 2).
●
Unit Id (4 bytes): identificador da unidade de captação que envia ou recebe a
mensagem. Um valor zero significa que o campo o campo não é levado em conta.
Quercus Technologies
128
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
Size (4 bytes): tamanho total da mensagem em bytes.
●
Type (2 bytes): tipo de mensagem. Os tipos de mensagem serão detalhados mais
adiante.
●
Versão (2 bytes): versão da mensagem. Nas mensagens que evoluíram (adicionando
campos, modificando-os, etc.) esse campo indica a versão utilizada na mensagem. (ver
mais abaixo).
●
Id (4 bytes): identificador único da conversa. O valor será o mesmo para a mensagem
de ida que para a de volta. Desta forma, pode-se conhecer se uma resposta obtida é a
que se esperava ou não. Este valor será 1 para a primeira mensagem enviada das
unidades ao sistema central e aumentar-se-á de dois em dois em cada nova
mensagem. Nas mensagens do sistema central às unidades, a primeira mensagem será
2 e aumentar-se-á também de 2 em 2.
●
Message Data (variável): dados específicos para cada mensagem.
●
Bcc (1 byte): XOR de todos os bytes da mensagem desde Stx até o último byte de
“Message data”.
●
Etx (1 byte): assinala o final da mensagem (caractere ASCII 3).
4.2. Versões das mensagens
As mensagens contêm um campo "versão" que indica a versão da mensagem usada para
permitir a ampliação do protocolo de comunicações. Cada versão da mesma mensagem pode
conter mais ou menos campos e pode variar o comprimento destes, por isso, é imprescindível
avaliar este campo antes de proceder aos campos específicos da mensagem.
A continuação, onde são descritas as estruturas das mensagens, sua versão será indicada
somente se é diferente a 0.
Nesse caso, consulte 5. Communications protocol (versões
antigas) para saber as estruturas antigas da versão.
As unidades dispõem de um sistema de negociação de versão que torna 100% compatíveis
qualquer unidade com qualquer versão do protocolo que tenha existido. Quando a unidade
envia uma mensagem de evento, sempre tenta enviar a versão mais alta que conhece de tal
tipo de mensagem. Se o sistema central responde com uma mensagem NAK do tipo 6
(Incorrect version), a unidade enviará, na seguinte tentativa, a versão imediatamente anterior
da mensagem.
Este processo se repetirá até que se esgotem as tentativas configuradas, o sistema central
responda com ACK ou a versão da mensagem chegue ao mínimo que a unidade sabe gerenciar
(normalmente zero). Nas subseqüentes mensagens do mesmo tipo que a unidade crie, já se
partirá da versão estabelecida na mensagem anterior. Esse processo se repete após cada vez
Quercus Technologies
129
MANUAL DE PROGRAMAÇÃO
QuercusVL
que a unidade é reinicializada.
Unidade
Sistema central
1er Evento (v2)
NAK(6)
1er Evento (v1)
NAK(6)
Fim tentativas
2ª Evento (v0)
ACK
Exemplo:
Quando a unidade recebe uma mensagem de solicitação do sistema central, ela sempre tenta
responder com a mesma versão da mensagem de resposta, ou responde com um NAK do tipo
6 (Incorrect version), se não for capaz de entender essa versão da mensagem.
Exemplo:
Unidade
Sistema central
Petição(V1)
NAK(6)
Petição(V0)
Resposta
Quercus Technologies
130
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.3. Compatibilidade entre os produtos QuercusVL®
O protocolo VL é compartilhado por várias famílias de produtos da Quercus Technologies. Por
isso, existem mensagens e estruturas comuns que não se aplicam ao todos produtos.
Nessa
tabela, são descritas as mensagens e as estruturas úteis para cada tipo de unidade:
SmartLoop®
SmartLoop®
BirdWatch®
BirdWatch®
TS
TS Plus
RL
RL Plus
Region
●
●
●
●
DetectorHeader
●
●
●
●
Light
●
●
TrafficLight
●
●
RedLightDetector
●
●
StoppedCarDetector
●
●
Estruturas comuns
SpeedDetector
●
QueueDetector
●
●
PresenceDetector
●
●
VideoInformation
●
Mensagens de eventos
InputChanged
Notification
●
SummaryInformation
RealTimeInformation
●
●
●
●
●
●
●
●
●
●
IncidenceInformation
Mensagens de solicitação
VersionQuery
●
●
●
●
RealTimeQuery
●
●
●
●
StatusQuery
●
●
●
●
IOQuery
●
●
●
●
ImageQuery
●
●
●
●
SnapshotQuery
●
●
●
●
UnitTasksQuery
●
●
●
●
DetectorTasksQuery
●
●
●
●
DetectorsCountQuery
●
●
●
●
DetectorInformationQuery
●
●
●
●
TrafficLightsCountQuery
●
●
TrafficLightInformationQuery
●
●
Quercus Technologies
131
MANUAL DE PROGRAMAÇÃO
QuercusVL
SetUnitTasksQuery
●
●
●
●
SetDetectorTasksQuery
●
●
●
●
OutputQuery
●
●
●
●
RebootQuery
●
●
●
●
VideoQuery
●
PingQuery
●
●
●
●
LoginQuery
●
●
●
●
PasswordQuery
●
●
●
●
SyncTimeQuery
●
●
●
●
SetTimeQuery
●
●
●
●
UpdateFirmwareQuery
●
●
●
●
RestoreFirmwareQuery
●
●
●
●
●
●
●
FormatRWPartitionQuery
ExportLogQuery
●
●
●
●
SystemInformationQuery
●
●
●
●
ExportStatusQuery
●
●
●
●
ImportConfigurationQuery
●
●
●
●
ExportConfigurationQuery
●
●
●
●
ApplyChangesQuery
●
●
●
●
DiscardChangesQuery
●
●
●
●
RestartQuery
●
●
●
●
GetEntriesCountQuery
●
●
●
●
GetEntryQuery
●
●
●
●
SetEntryQuery
●
●
●
●
RestoreEntryQuery
●
●
●
●
GetDetectorsCountQuery
●
●
●
●
RemoveDetectorQuery
●
●
●
●
GetDetectorQuery
●
●
●
●
SetPresenceDetectorQuery
●
●
SetQueueDetectorQuery
●
●
SetRedLightDetectorQuery
●
●
SetStoppedCarDetectorQuery
●
●
GetTrafficLightsCountQuery
●
●
RemoveTrafficLightQuery
●
●
GetTrafficLightQuery
●
●
SetTrafficLightQuery
●
●
SetSpeedDetectorQuery
Quercus Technologies
●
132
MANUAL DE PROGRAMAÇÃO
QuercusVL
GetOutputActuatorsCountQuery
●
●
RemoveOutputActuatorQuery
●
●
GetOutputActuatorQuery
●
●
SetOutputActuatorQuery
●
●
ACK
●
●
●
●
NAK
●
●
●
●
Mensagens de confirmação
4.4. Conceitos pré-existentes
4.4.1. Unidades
O tamanho descrito de cada um dos campos do protocolo é expresso em bytes.
4.4.2. Booleanos
Todos os valores booleanos documentados no protocolo seguinte são traduzidos como:
State
Verdadeiro
Value
um
Falso
zero
4.4.3. Coordenadas
Por razões históricas, todas as coordenadas descritas num protocolo (como posição do detector
o do semáforo) serão definidas uma imagem de 5 megapixels (de 0 a 2559 y de 0 a 1919).
4.5. Estruturas comuns
Estruturas de dados utilizadas nas mensagens dos capítulos posteriores.
4.5.1. Timestamp
Define um momento no tempo.
●
4
4
Seconds
USeconds
Seconds: A data e hora indicando os segundos decorridos desde as 00:00 horas
de 1 de janeiro de 1970. É o mesmo formato que retorna a chamada à função
time_t time (time_t *timer) do standard ANSI C.
●
Useconds: microssegundo do momento.
Quercus Technologies
133
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.5.2. Region
Informa as posições dos quatro vértices que definem um detector ou um laço.
2
2
2
2
2
2
2
2
X1
Y1
X2
Y2
X3
Y3
X4
Y4
●
X1: posição do ponto 1 na imagem (eixo horizontal).
●
Y1: posição do ponto 1 na imagem (eixo vertical).
●
X2: posição do ponto 2 na imagem (eixo horizontal).
●
Y2: posição do ponto 2 na imagem (eixo vertical).
●
X3: posição do ponto 3 na imagem (eixo horizontal).
●
Y3: posição do ponto 3 na imagem (eixo vertical).
●
X4: posição do ponto 4 na imagem (eixo horizontal).
●
Y4: posição do ponto 4 na imagem (eixo vertical).
4.5.3. DetectorHeader
Descreve as características comuns de um detector.
4
1
Id
1
Tipo SmE
1
1
1
1
4
2
InE
SSm
SIn
SRT
SumPeriod
NOut
●
Id: identificador único do detector.
●
Type: tipo de detector.
●
○
1: detector de velocidade
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado
16
Coord
AreSummariesEnabled (SmE): verdadeiro, se a geração de resumos por parte do
detector estiver ativa, será falso se não estiver ativa.
●
AreIncidencesEnabled (InE): verdadeiro, se a geração de incidências por parte
do detector estiver ativa, será falso se não estiver ativa.
●
SendSummaries (SSm): verdadeiro si está ativo o envio dos resumos gerados
pelo detector ao sistema central, falso se não estiver ativo.
Quercus Technologies
134
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
SendIncidences (SIn): verdadeiro, se o envio das incidências geradas pelo
detector ao sistema central estiver ativo, será falso se não estiver ativo.
●
SendRealTimeInformation (SRT): verdadeiro, se o envio dos eventos em tempo
real gerados pelo detector ao sistema central estiver ativo, será falso se não
estiver ativo.
●
SummariesPeriod (SumPeriod): período dos resumos configurado; em minutos.
●
Coordinates (Coord): descrição das coordenadas que definem a posição do
detector, através de uma estrutura Region. Por razões históricas, todas as
coordenadas descritas num detector serão definidas uma imagem de 5
megapixels (de 0 a 2559 y de 0 a 1919).
4.5.4. SpeedDetector
Descreve um detector de velocidade.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
32
1
Calc
Head
●
4
4
Distance
Length
16
Loop1
16
Loop2
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader.
●
CalculateMetrics (Calc): verdadeiro, quando é ativado o cálculo da métrica no
detector, falso, se ele é desativado.
●
Distance: distância entre a horizontal da unidade e o detector, em milímetros.
●
Length: comprimento do detector; em milímetros.
●
FirstLoop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
primeiro laço do detector, através de uma estrutura Region.
●
SecondLoop (Loop2): descrição das coordenadas (na imagem de 5 megapixels)
do segundo laço do detector, através de uma estrutura Region.
4.5.5. QueueDetector
Descreve um detector de fila.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Quercus Technologies
135
MANUAL DE PROGRAMAÇÃO
QuercusVL
80
32
Loop1..5
Header
●
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader.
●
Loops (Loop1..5): descrição das coordenadas (na imagem de 5 megapixels) de
cada um dos 5 laços do detector, através de 5 estruturas Region consecutivas.
4.5.6. PresenceDetector
Descreve um detector de fila.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
16
32
Loop1
Header
●
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader.
●
Loop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
único laço do detector, através de uma estrutura Region.
4.5.7. Light
Descreve a luz de um semáforo.
●
1
2
2
2
Tipo
X
Y
Radius
Type: tipo de luz.
○
0: luz vermelha.
○
1: luz verde.
○
2: luz amarela.
○
3: luz de outra cor.
●
X: posição X (eixo horizontal) do centro da luz na imagem de 5 megapixels.
●
Y: posição Y (eixo vertical) do centro da luz na imagem de 5 megapixels.
Quercus Technologies
136
MANUAL DE PROGRAMAÇÃO
QuercusVL
Radius: raio da luz na imagem de 5 megapixels; em pixels.
●
4.5.8. TrafficLight
Descreve um semáforo.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
4
1
Id
NLg
35
Lights
●
Id: identificador único do semáforo.
●
NumLights (NLg): número de luzes no semáforo.
●
Lights: descrição de cada uma das luzes configuradas. São descritas através de
5 estruturas Light consecutivas (máximo de luzes configuráveis em um
semáforo), sendo utilizadas somente as primeiras NumLights.
4.5.9. RedLightDetector
Descreve um detector de avançar no vermelho.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
32
1
4
Calc
Header
16
Loop2
4
Distance
16
4
Length
DelayTime
Loop1
4
4
4
1
4
4
TrafficLightId
RedInput
AmberInput
IsVE
PreVideoT
PostVideoT
4
LastPictureD.
●
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader.
●
CalculateMetrics (Calc): verdadeiro, quando é ativado o cálculo da métrica no
detector, falso, se ele é desativado. -
●
Distance: distância entre a horizontal da unidade e o detector, em milímetros.
●
Length: comprimento do detector; em milímetros.
●
DelayTime: tempo mínimo que deve transcorrer, desde a ativação do sinal de
Quercus Technologies
137
MANUAL DE PROGRAMAÇÃO
QuercusVL
proibição de avançar até a infração da incidência, para que esta seja gerada; em
milésimos de segundos.
FirstLoop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
●
primeiro laço do detector, através de uma estrutura Region.
SecondLoop (Loop2): descrição das coordenadas (na imagem de 5 megapixels)
●
do segundo laço do detector, através de uma estrutura Region.
TrafficLightId: identificador do semáforo utilizado para o sinal de proibição de
●
avançar. Se não tiver sido configurado um semáforo, mas uma entrada digital,
seu valor será -1.
RedInput: identificador da entrada digital utilizada para o sinal de proibição de
●
avançar. Se não tiver sido configurada uma entrada digital, mas um semáforo,
seu valor será -1.
AmberInput: identificador da entrada digital utilizada para o sinal de proibição
●
de avançar.
Se não se configurou uma
entrada digital(devido um semáforo
configurado ou simplesmente não foi configurado o sinal de luz âmbar) seu valor
será -1.
IsVideoEnabled (isVE): verdadeiro se a geração de vídeo nas incidências está
●
habilitada, falso no caso contrário.
PreVideoTimeMs (PreVideoT): tempo que se adiantará o início da captura do
●
vídeo a partir da primeira fotografia; em milissegundos.
PostVideoTimeMs (PostVideoT): tempo que se atrasará a finalização da captura
●
do vídeo a partir da terceira fotografia; em milissegundos.
LastPictureDelayTimeMs (LastPictureD.): tempo que atrasará a última captura
●
da imagem da incidência; em milésimos de segundo.
4.5.10. StoppedCarDetector
Descreve um detector de veículo parado.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
32
MaxStopTime
Header
4
4
PreVideoT
PostVideoT
●
16
4
Loop
4
4
1
Distance
RedInput
IsVE
Header (Head): descrição das características indiferentes ao tipo de detector,
Quercus Technologies
138
MANUAL DE PROGRAMAÇÃO
QuercusVL
através de uma estrutura DetectorHeader.
●
MaxStopTime: tempo mínimo de parada com o sinal de proibição de avanço
ativado para que se gere uma incidência; em milésimos de segundo.
●
Loop (Loop): descrição das coordenadas (na imagem de 5 megapixels) do único
laço do detector, através de uma estrutura Region.
●
TrafficLightId: identificador do semáforo utilizado para o sinal de proibição de
avançar. Se não tiver sido configurado um semáforo, mas uma entrada digital,
seu valor será -1.
●
RedInput: identificador da entrada digital utilizada para o sinal de proibição de
avançar. Se não tiver sido configurada uma entrada digital, mas um semáforo,
seu valor será -1.
●
IsVideoEnabled (isVE): verdadeiro, se a geração de vídeo nas incidências estiver
habilitada, falso se não estiver habilitada.
●
PreVideoTimeMs (PreVideoT): tempo que adiantará o início da gravação do vídeo
a partir da primeira fotografia; em milissegundos.
●
PostVideoTimeMs (PostVideoT): tempo que atrasará a finalização da gravação do
vídeo a partir da terceira fotografia; em milissegundos.
4.5.11. VideoInformation
Define um vídeo.
●
2
2
Width
Height
8
IniTime
8
EndTime
4
1
Duration
FR
Width: largo da imagem do vídeo; em pixels. Se o valor é -1, indica que o vídeo
não é válido.
●
Height: alto da imagem do vídeo; em pixels.
●
InitTimestamp (IniTime): descrição do momento de inicio da captura do vídeo;
através de uma estrutura QuercusTimestamp.
●
EndTimestamp (EndTime): descrição do momento de finalização da captura do
vídeo; através de uma estrutura QuercusTimestamp.
●
Duration: duração do vídeo; em milésimos de segundos.
●
Framerate (FR): imagens por segundo do vídeo.
4.5.12. OutputActuatorCondition
Descreve uma condição do atuador de saída.
Quercus Technologies
139
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
1
1
4
DetectorId
Field
Op
Valor
●
DetectorId: identificador do detectora a que se refere a condição.
●
Field: campo que verifica a condição.
●
●
○
0: velocidade de circulação do veículo detectado.
○
1: comprimento do veículo detectado.
○
2: sentido de circulação do veículo detectado.
○
3: porcentagem de ocupação do detector.
○
4: presença no detector.
Operator (Op): operador utilizado por a condição.
○
0: igual a.
○
1: diferente a.
○
2: maior que.
○
3: menor que.
Value: valor que a condição usa na comparação.
4.5.13. OutputActuator
Descreva um atuador de saída digital.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
4
1
1
4
Id
Op
OId
Time
1
160
NCo Conditions
●
Id: identificador único do atuador de saída.
●
Operator (Op): Tipo de operador que determina o comportamento lógico do
atuador; .
○
0: todas as condições devem ser válidas para ativar a saída digital.
○
1: uma o mais condições devem ser válidas para ativar a saída digital.
●
OutputId (OId): identificador da saída digital relacionada ao atuador.
●
Time: tempo que o atuador mantém a saída digital ativa; em milésimos de
segundos.
●
NumConditions (NCo): número de condições pertencente ao atuador de saída.
Quercus Technologies
140
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Conditions: descrição das condições pertencentes ao atuador de saída; ver a
estrutura 4.5.12. OutputActuatorCondition.
4.6. Mensagens de eventos
4.6.1. InputChanged
Indica que um dos bits de entrada da unidade mudou.
●
Type: 0
●
Message Data:
1
1
Bit
Val
●
Bit: identificador da entrada digital que teve seu valor alterado.
●
Value (Val): novo valor.
4.6.2. Notification
Indica que foi recebida uma notificação do tipo “Code”.
●
Type: 1
●
Message Data:
1
Cod
●
Code: tipo de notificação que tenha sido recebida.
○
0: a situação da unidade foi alterada.
○
1: o início de funcionamento da unidade foi correto.
○
2: o início de funcionamento da unidade foi incorreto.
○
3: o desligamento da unidade foi correto.
○
4: o desligamento da unidade foi correto.
4.6.3. SummaryInformation
Indica que um resumo foi recebido.
●
Type: 2
●
Message Data:
Quercus Technologies
141
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
4
4
1
4
4
4
Begin
End
DetectorId
Tipo
Volume
AvgSpeed
AvgLength
4
4
AvgHeadway
RedLightTime
28
28
28
SpdUL
28
LenUL
LenDst
28
OccUL
OccDst
●
28
SpdDst
Begin: momento em que se iniciou a coleta de dados para o resumo; em
segundos desde 1º de janeiro de 1970, às 00h00.
●
End: momento em que se finalizou a coleta de dados para o resumo; em
segundos desde 1º de janeiro de 1970, às 00h00.
●
DetectorId: identificador do detector que gerou o resumo.
●
DetectorType (Type): tipo de detector que gerou o resumo.
○
1: detector de velocidade
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado
●
Volume: volume de veículos do resumo.
●
AvgSpeed: velocidade média dos veículos do resumo; em km/h. Se o valor é -1
indica que não foi possível calcular a velocidade média.
●
AvgLength: comprimento médio dos veículos do resumo; em milímetros. Se o
valor é -1 indica que não foi possível calcular o comprimento médio.
●
AvgHeadway: período médio entre veículos do resumo; em segundos.
●
SpeedsDistribution (SpdDst): coleção de valores que formam a distribuição de
velocidades do resumo. São descritos através de 7 consecutivos inteiros, entre
os quais aqueles não utilizados indicam -1.
●
SpeedsUpperLimit (SpdUL): número de valores que há nas coleções de
distribuição do velocidades do resumo. São descritos através de 7 consecutivos
inteiros, entre os quais aqueles não utilizados indicam -1.
●
LengthsDistribution (LenDst): coleções de valores que formam a distribuição de
comprimentos do resumo. São descritos através de 7 consecutivos inteiros,
entre os quais aqueles não utilizados indicam -1.
●
LengthsUpperLimit (LenUL): coleções de valores que formam as variações de
distribuição
de
comprimentos
do
resumo.
São
descritos
através
consecutivos inteiros, entre os quais aqueles não utilizados indicam -1.
Quercus Technologies
142
de
7
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
OccupationsDistribution (OccDst): coleção de valores que formam a distribuição
de ocupações do resumo. São descritos através de 7 consecutivos inteiros, entre
os quais aqueles não utilizados indicam -1.
●
OccupationsUpperLimit (OccUL): coleção de valores que formam as variações de
distribuição de ocupações do resumo. São descritos através de 7 consecutivos
inteiros, entre os quais aqueles não utilizados indicam -1.
Para mais informações sobre a distribuição dos comprimentos, velocidades ou ocupações,
consulte o manual do usuário de SmartLoop®.
4.6.4. IncidenceInformation
Indica que uma incidência foi recebida.
A estrutura corresponde à versão 2. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 3
●
Message Data:
4
Id
Tipo
24
2
1
NImg
ImgTime
25
VideoInf
4
4
4
4
Velocidade
DelayTime
ElapsedTime
AmberLightT
●
Id: identificador da incidência.
●
Type: tipo de incidência.
4
1
DetectorId
DTy
○
0: obsoleto.
○
1: incidência de circulação com o sinal de proibição de avançar ativado.
○
2: Incidência do tipo “veículo que parou em uma zona não permitida"
●
NumImages (NImg): número de imagens relacionadas com a incidência.
●
ImageTimestamps
QuercusTimestamp
(ImgTime):
consecutivas
São
descritas
(máximo
através
imagens
de
3
relacionadas
estruturas
a
uma
incidência), sendo utilizadas somente as primeiras NumImages.
●
VideoInformation (VideoInf): informação do vídeo gerado. Descrita através de
una estrutura VideoInformation. Se não foi gerado um vídeo na incidência o
valor Width da estrutura VideoInformation terá um valor -1.
●
DetectorId: identificador do detector que detectou a incidência.
●
DetectorType (Type): tipo de detector que gerou o evento em tempo real.
Quercus Technologies
143
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
○
1: detector de velocidade
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado
Speed: velocidade aproximada do veículo detectado; em km/h. Se o valor é -1
indica que não foi possível calcular a velocidade média.
●
DelayTime: tempo mínimo que deve transcorrer, desde a ativação do sinal de
proibição de avançar até a detecção da incidência, para que esta seja gerada;
em milésimos de segundos.
●
ElapsedTime: tempo transcorrido com o sinal de proibição de avançar ativo; em
milésimos de segundos.
●
AmberLightTime (AmberLightT):
Tempo transcorrido com o sinal luz âmbar
ativo antes da ativação do sinal de proibição de avanço que foi gerada a
incidência.
●
MaxStopTime: tempo mínimo que deve estar o veículo parado, desde a ativação
do sinal de proibição para que uma infração seja gerada; em milésimos de
segundos.
●
TotalStoppedTime (TotalStoppedT): tempo total transcorrido com o veículo
parado, incluindo o tempo prévio a ativação do sinal de proibição de avanço; em
milésimos de segundo.
4.6.5. RealTimeInformation
Indica que um evento em tempo real foi recebido. Os campos a serem usados dependerão do
tipo de evento gerado. Os campos que não trouxerem informações em um evento têm o valor
“-1”.
●
Type: 4
●
Message Data:
1
4
DetectorId
8
Tipo Timestamp
4
4
1
4
1
Velocidade
Length
WW
Occupation
IsOc
●
DetectorId: identificador do detector que gerou o evento em tempo real.
●
DetectorType (Type): tipo de detector que gerou o evento em tempo real.
○
1: detector de velocidade
Quercus Technologies
144
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado.
Timestamp: momento em que foi gerado o evento em tempo real, mediante
uma estrutura QuercusTimestamp.
●
Speed: velocidade aproximada do veículo detectado; em km/h. Se não foi
possível calcular a velocidade seu valor será -1.
●
Length: comprimento aproximado do veículo detectado; em milímetros. Se não
for possível calcular o comprimento, o seu valor será -1. .
●
WrongWay (WW):
verdadeiro, se o veículo detectado estiver circulando no
sentido contrário, falso, se o sentido de circulação for o correto.
●
Occupation: porcentagem de ocupação de um detector.
●
IsOccupied (IsOc): verdadeiro se o detector estiver ocupado e falso se estiver
desocupado. Campo em operação somente em um detector de presença.
4.7. Mensagens de solicitação
4.7.1. VersionQuery
Pedido de informação sobre o software que está funcionando numa unidade.
Query
●
Type: 32
●
Message Data: não há campo de dados.
Resposta
●
Type: 64
●
Message Data:
64
Name
1
1
1
Maj
Min
Rev
●
Name[64]: nome do produto. Os caracteres não usados estarão em zero.
●
Major (Maj): número principal de versão.
●
Minor (Min): número secundário da versão.
●
Revisão (Rev): número de revisão do produto.
Quercus Technologies
145
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.7.2. RealTimeQuery
Solicitação do último evento em tempo real gerado em um determinado detector.
Query
●
Type: 33
●
Message Data:
4
DetectorId
●
DetectorId: detector solicitado pelo evento.
Resposta
●
Type: 465
●
Message Data:
8
1
4
DetectorId
Tipo Timestamp
4
4
1
4
1
Velocidade
Length
WW
Occupation
IsOc
●
DetectorId: identificador do detector que gerou o evento em tempo real.
●
DetectorType (Type): tipo de detector que gerou o evento em tempo real.
●
○
1: detector de velocidade
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado
Timestamp: momento em que foi gerado o evento em tempo real, mediante
uma estrutura QuercusTimestamp.
●
Speed: velocidade aproximada do veículo detectado; em km/h.
●
Length: comprimento aproximado do veículo detectado; em milímetros.
●
WrongWay (WW):
verdadeiro, se o veículo detectado estiver circulando no
sentido contrário, falso, se o sentido de circulação for o correto.
●
Occupation: porcentagem de ocupação de um detector.
●
IsOccupied (IsOc): verdadeiro se o detector estiver ocupado e falso se estiver
desocupado.
Quercus Technologies
Campo em operação somente em um detector de presença.
146
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.7.3. StatusQuery
Solicitação da situação do sistema da unidade.
Query
●
Type: 34
●
Message Data: não há campo de dados.
Resposta
●
Type: 66
●
Message Data:
4
StartupTime
●
StartupTime: momento em que a unidade começou a funcionar; em segundos
desde 1º de janeiro de 1970, às 00h00. É utilizado para verificar se a unidade
não foi reiniciada, por circunstâncias desconhecidas, desde o último início
controlado.
Se o sistema central recebe uma resposta com o StartupTime, interpreta-se que
a situação do sistema está correta, se não receber a resposta, está incorreta.
4.7.4. IOQuery
Solicitação sobre a situação das entradas e saídas digitais da unidade.
Query
●
Type: 35
●
Message Data: não há mensagem de dados.
Resposta
●
Type: 67
●
Message Data:
Quercus Technologies
4
4
InputCh
OutputCh
147
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
InputChannels (InputCh): situação das 2 entradas digitais da unidade. Cada um
dos primeiros 2 bits corresponderá à situação de uma entrada, sendo o bit de
menor peso para a entrada zero. Possíveis valoreis:
1 ativada, 0 desativada.
Os 30 bits restantes serão ignorados; disponíveis para futuras revisões.
●
OutputChannels (OutputCh): situação das 8 saídas digitais da unidade. Cada um
dos primeiros 8 bits corresponderá à situação de uma saída, sendo o bit de
menor peso para a saída zero. Possíveis valores: 1 ativada, 0 desativada.
Os 24 bits restantes serão ignorados; disponíveis para futuras revisões.
4.7.5. ImageQuery
Pedido de transferência de uma imagem. A imagem se divide em pacotes com um tamanho
máximo de 64000 bytes para otimizar a transferência.
Query
●
Type: 36
●
Message Data:
4
2
4
4
Id
ImgId
Offset
Length
●
Id: identificador da incidência.
●
ImageIndex (ImgId): número da imagem dentro da coleção de imagens da
incidência.
●
Offset: posição de início (no buffer da imagem) do pacote a ser transferido; em
bytes. .
●
Length: tamanho máximo do pacote a ser transferido.
Resposta
●
Type: 68
●
Message Data:
4
Size
●
4
Length
64000
Buffer
Size: tamanho total da imagem; em bytes.
Quercus Technologies
148
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
Length: tamanho do pacote transferido; em bytes.
●
Buffer: dados do pacote. Somente serão válidos os primeiros bytes Length.
4.7.6. SnapshotQuery
Solicitação de “radiografia" da unidade (estado geral). Devolve uma captura em branco e preto
de 0,3Mp (640 pixels de largura e 480 de altura) em jpeg e uma situação completa dos
detectores, semáforos e entradas e saídas digitais.
O conteúdo da imagem e o valor do focus (coeficiente de foco digital) variarão, dependendo
do valor dos parâmetros da solicitação:
●
Zoom em falso, retângulo incorreto: a imagem obtida corresponderá à totalidade da
imagem capturada pela unidade. O valor do focus não será calculado (-1).
●
Zoom em falso, retângulo correto: a imagem obtida corresponderá à totalidade da
imagem capturada pela unidade. O focus será calculado a partir do retângulo da
imagem.
●
Zoom em certo, retângulo incorreto: combinação incorreta; será devolvido falso.
●
Zoom em certo, retângulo correto: a imagem obtida corresponderá a uma zona da
imagem capturada ampliada. A posição central do retângulo coincidirá com a posição
central da zona ampliada. O focus será calculado a partir da zona ampliada.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Query
●
Type: 37
●
Message Data:
2
RoiTop
●
2
RoiLeft
2
2
RoiBttm RoiRight
4
1
4
4
ExposureTime
Zoom
Offset
Length
RoiTop: valor Y (eixo vertical) do lado superior do retângulo; para não definí-lo,
indicar -1.
●
RoiLeft: valor X (eixo horizontal) do lado esquerdo do retângulo; para não
defini-lo, indicar -1.
●
RoiBottom (RoidBttm): valor Y (eixo vertical) do lado inferior do retângulo; para
não defini-lo, indicar -1.
●
RoiRight: valor X (eixo horizontal) do lado direito do retângulo; para não defini-
Quercus Technologies
149
MANUAL DE PROGRAMAÇÃO
QuercusVL
lo, indicar -1.
●
ExposureTime:
tempo
de
exposição
da
câmera
para
a
captura;
em
microssegundos.
●
Zoom: indica se a imagem obtida deve ser aquela capturada pela unidade
(falso) ou uma ampliação sua (certo).
●
Offset: posição de início (no buffer da imagem) do pacote a ser transferido; em
bytes.
●
Length: tamanho máximo do pacote a ser transferido.
Resposta
●
Type: 69
●
Message Data:
4
4
Focus
NumDetectors
4
160
DStatus
4
4
4
Saídas
ImageSize
Length
NumRedLights
4
3
RedLights
Entradas
64000
Buffer
●
Focus: coeficiente do foco digital calculado; -1, se não tiver sido calculado.
●
NumDetectors: número de detectores configurados.
●
DetectorsStatus (Dstatus): situação dos laços de cada um dos detectores
configurados. São descritos através de 40 valores inteiros consecutivos, sendo
utilizados somente os primeiros NumDetectors. Os detectores estarão dispostos
na mesma ordem em que foram configurados e cada posição detalhará a
situação de seus laços bit a bit. O bit de menor peso corresponderá ao primeiro
laço. Possíveis valores: 1 ocupado, 0 desocupado.
●
NumRedLights: número de semáforos configurados.
●
RedLights: situação de cada um dos semáforos configurados. São descritos
através de 3 bytes, sendo utilizados somente os primeiros NumRedLights. Os
semáforos estarão dispostos na mesma ordem em que foram configurados.
Possíveis valores: 0 “em vermelho”, outro valor “em outra situação”.
●
Inputs: situação das 2 entradas digitais. Cada um dos primeiros 2 bits
corresponderá à situação de uma entrada, sendo o bit de menor peso para a
entrada zero. Possíveis valores: 1 ativada, 0 desativada.
●
Outputs: situação das 8 saídas digitais. Cada um dos primeiros 8 bits
corresponderá à situação de uma saída, sendo o bit de menor peso para a saída
Quercus Technologies
150
MANUAL DE PROGRAMAÇÃO
QuercusVL
zero. Possíveis valores: 1 ativada, 0 desativada.
●
ImageSize: tamanho total da imagem capturada; em bytes.
●
Length: tamanho do pacote transferido pertencente à imagem capturada; em
bytes.
●
Buffer: dados do pacote. Somente serão válidos os primeiros bytes Length.
4.7.7. UnitTasksQuery
Solicitação da situação das tarefas que a unidade deve desenvolver.
Query
●
Type: 38
●
Message Data: não há mensagem de dados.
Resposta
●
Type: 70
●
Message Data:
1
SInp
●
SendInputChanges (SInp): verdadeiro, informar o sistema remoto sobre as
mudanças nas entradas digitais da unidade ativado; falso, desativado.
4.7.8. DetectorTasksQuery
Solicitação da situação das tarefas que um detector deve desenvolver.
Query
●
Type: 39
●
Message Data:
4
DetectorId
●
Id: identificador do detector.
Resposta
●
Type: 71
Quercus Technologies
151
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Message Data:
4
1
1
1
1
1
DetectorId
SmE
InE
SSm
SIn
SRT
●
DetectorId: identificador do detector.
●
AreSummariesEnabled (SmE): verdadeiro, geração de resumos na unidade
ativada; falso, desativada.
●
AreIncidencesEnabled (InE): verdadeiro, geração de incidências na unidade
ativada; falso, desativada.
●
SendSummaries (SSm): verdadeiro, envio ao sistema central dos resumos
gerados pela unidade ativado; falso, desativado.
●
SendIncidences (SIn): verdadeiro, envio ao sistema central das incidências
geradas pela unidade ativado; falso, desativado.
●
SendRealTimeInformation (SRT): verdadeiro, envio ao sistema central dos
eventos em tempo real gerados pela unidade ativado; falso, desativado.
4.7.9. DetectorsCountQuery
Solicitação do número de detectores configurados na unidade.
Query
●
Type: 40
●
Message Data: não há mensagem de dados.
Resposta
●
Type: 72
●
Message Data:
4
Count
●
Count: número de detectores configurados na unidade.
4.7.10. DetectorInformationQuery
Solicitação das informações sobre um detector específico da unidade.
Quercus Technologies
152
MANUAL DE PROGRAMAÇÃO
QuercusVL
O formato da resposta variará, dependendo do tipo de detector que é descrito.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Query
●
Type: 41
●
Message Data:
4
Index
●
Index: identificador do detector a ser informado.
Resposta (detector de avançar no sinal vermelho)
●
Type: 73
●
Message Data:
102
RLDetect
●
RedLightDetector (RLDetect): descrição do detector, através de uma estrutura
RedLightDetector.
Resposta (detector de velocidade)
●
Type: 74
●
Message Data:
73
SpdDetect
●
SpeedDetector (SpdDetect): descrição do detector, através de uma estrutura
SpeedDetector.
Resposta (detector de presença)
●
Type: 75
Quercus Technologies
153
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Message Data:
48
PresDetect
●
PresenceDetector (PresDetect): descrição do detector, através de uma estrutura
PresenceDetector.
Resposta (detector de fila)
●
Type: 76
●
Message Data:
112
QueDetect
●
QueueDetector (QueDetect): descrição do detector, através de uma estrutura
QueueDetector.
Resposta (detector de veículo parado)
●
Type: 79
●
Message Data:
69
StoppedC
●
StoppedCarDetector
(StoppedC):
descrição do
detector, através de uma
estrutura StoppedCarDetector.
4.7.11. TrafficLightsCountQuery
Solicitação do número de semáforos configurados em uma unidade.
Query
●
Type: 45
●
Message Data: não há mensagem de dados.
Quercus Technologies
154
MANUAL DE PROGRAMAÇÃO
QuercusVL
Resposta
●
Type: 77
●
Message Data:
4
Count
●
Count: número de semáforos configurados na unidade.
4.7.12. TrafficLightInformationQuery
Solicitação das informações sobre um semáforo configurado na unidade.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Query
A estrutura corresponde à versão 1.
●
Type: 46
●
Message Data:
4
Index
●
Index: identificador do semáforo a ser informado.
Resposta
A estrutura corresponde à versão 1.
●
Type: 78
●
Message Data:
40
TrafficLight
●
TrafficLight:
Quercus Technologies
informações
sobre
o
semáforo,
através
de
uma
estrutura
155
MANUAL DE PROGRAMAÇÃO
QuercusVL
TrafficLight.
4.7.13. SetUnitTasksQuery
Solicitação de configuração das tarefas que uma unidade deve desenvolver.
Atualmente, só permite configurar uma tarefa, informar as mudanças nas entradas digitais.
Query
●
Type: 47
●
Message Data:
1
SInp
●
SendInputChanges (SInp): verdadeiro, informar o sistema central sobre as
mudanças nas entradas digitais da unidade ativado; falso, desativado.
Resposta
ACK/NAK
4.7.14. SetDetectorTasksQuery
Solicitação de configuração das tarefas que um detector deve desenvolver.
Query
●
Type: 48
●
Message Data:
4
1
1
1
1
1
DetectorId
SmE
InE
SSm
SIn
SRT
●
DetectorId: identificador do detector a ser configurado.
●
AreSummariesEnabled (SmE): verdadeiro, geração de resumos na unidade
ativada; falso, desativada.
●
AreIncidencesEnabled (InE): verdadeiro, geração de incidências na unidade
ativada; falso, desativada.
●
SendSummaries (SSm): verdadeiro, envio ao sistema central dos resumos
gerados pela unidade ativado; falso, desativado.
Quercus Technologies
156
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
SendIncidences (SIn): verdadeiro, envio ao sistema central das incidências
geradas pela unidade ativado; falso, desativado.
●
SendRealTimeInformation (SRT): verdadeiro, envio ao sistema central dos
eventos em tempo real gerados pela unidade ativado; falso, desativado.
Resposta
ACK/NAK
4.7.15. OutputQuery
Solicitação de ativação de saída digital.
Query
●
Type: 49
●
Message Data:
1
4
Bit
Time
●
Bit: número de saída digital a ser ativada.
●
Time: tempo em que a saída será mantida ativa; em milésimos de segundos.
Um valor de -1 ativa a saída indefinidamente; um valor de 0 la descativa.
Resposta
ACK/NAK
4.7.16. RebootQuery
Solicitação de reinicialização da unidade.
Query
●
Type: 50
●
Message Data:
4
Funcionament
o
●
Operation (Op): código da operação a efetuar.
○
0: reiniciar.
Quercus Technologies
157
MANUAL DE PROGRAMAÇÃO
QuercusVL
Atualmente, só está disponível a opção ‘reiniciado’, mas é exigido o código de
operação, de modo que o protocolo fica aberto para futuras ampliações.
Resposta
ACK/NAK
4.7.17. VideoQuery
Solicitação de transferência de um vídeo. O vídeo se divide em pacotes com um tamanho
máximo de 64000 bytes para otimizar a transferência.
Query
●
Type: 52
●
Message Data:
4
4
4
Id
Offset
Length
●
Id: identificador da incidência.
●
Offset: posição de início (no buffer do vídeo) do pacote a ser transferido; em
bytes.
●
Length: tamanho máximo do pacote a ser transferido.
Resposta
●
Type: 84
●
Message Data:
4
4
Size
Length
64000
Buffer
●
Size: tamanho total do vídeo; em bytes.
●
Length: tamanho do pacote transferido; em bytes.
●
Buffer: dados do pacote. Somente serão válidos os primeiros bytes Length.
4.8. Mensagens de confirmação
Quercus Technologies
158
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.8.1. ACK
Confirmação de que a mensagem foi recebida e interpretada corretamente.
●
Type: 192
●
Message Data: não há mensagem de dados.
4.8.2. NAK
Informa que uma mensagem não pôde ser corretamente recebida, interpretada ou executada.
●
Type: 193
●
Message Data:
●
1
1
EC
ESC
ErrorCode (EC): identificador do tipo de erro que ocorreu:
○
0 (Unknown message): a mensagem tem um formato correto mas não se
conhece seu significado. .
○
1 (Bad format): a mensagem não foi recebida corretamente (falha o bcc,
faltam bytes, etc.).
○
2 (Unknown error): a ação que devia desencadear a mensagem não pôde ser
completada por causas desconhecidas. Por exemplo, um cartão de E(S)
defeituoso pode impedir que um pedido "Ativate output" possa ser
completado com êxito.
○
3 (Bad parameters): algum dos parâmetros da mensagem é incorreto. O
índice do parâmetro incorreto se especificará no campo "SubCode".
○
4 (Can’t complete): a ação não pôde ser completada, por exemplo, porque o
sistema está ocupado, no caso de solicitar uma captação de imagens quando
ainda não terminou a captação anterior.
○
5 (Incorrect Unit Id): o identificador da unidade que se indica na mensagem
não corresponde à unidade à qual se enviou.
○
6 (Incompatible version): a unidade não pode interpretar esta versão da
mensagem.
○
7 (Unsupported feature): ação não suportada, por exemplo, porque se quer
ativar a geração de incidências em um detector de fila.
○
8
Quercus Technologies
(Bad
authoritzation):
não
existe
autorização
para
processar
159
essa
MANUAL DE PROGRAMAÇÃO
QuercusVL
solicitação. A biblioteca VL é compartilhada por várias famílias de produtos
Quercus Technologies, motivo pelo qual existem funções que não estão
habilitadas para alguns produtos.
●
ErrorSubCode (ESC): informações adicionais sobre o erro produzido.
Quando uma mensagem de configuraçao dum detector de tipo query (como
SetPresenceDetector) o SetTrafficLight devlve uma mensagem NAK esse campo
presentará a informação seguinte:
○
1: já existe um item com o mesmo Id.
○
2: error desconhecido.
○
3: a variável "id" é incorreta.
○
4: a variável "detector type" é incorreta.
○
5: a variável "summaries period" é incorreta.
○
6: a variável"incidences enabled" é incorreta.
○
7: a variável "summaries enabled" é incorreta.
○
8: a variável "send incidences" é incorreta.
○
9: a variável "send summaries" é incorreta.
○
10: a variável "send real time information" é incorreta.
○
11: a variável "num output actuators" é incorreta.
○
12: a variável "distance" é incorreta.
○
13: a variável "length" é incorreta.
○
14: a variável "check direction" é incorreta.
○
15: a variável delay time" é incorreta.
○
16: a variável "light type" é incorreta.
○
17: a variável "light radius" é incorreta.
○
18: a variável "light position" é incorreta.
○
19: o ordem das coordenadas do detector é incorreto.
○
20: o semáforo não tem nenhuma luz definida.
○
21: o semáforo não tem suficientes luzes definidas.
○
22: o semáforo tem demasiadas luzes definidas.
○
23: a entrada da luz vermelha/âmbar é incorreta.
○
24: a luz vermelha e a luz âmbar usam a mesma entrada.
○
25: o id do semáforo relacionado com o detector é incorreto.
○
26: a variável "calculate metrics" é incorreta.
○
27: a variável "is video enabled" é incorreta.
○
28: a variável "pre video time" é incorreta.
○
29: a variável "post video time" é incorreta.
○
30: o atuador de saída tem demasiada condições definidas.
Quercus Technologies
160
MANUAL DE PROGRAMAÇÃO
○
QuercusVL
31: a variável "field" (de uma das condições do atuador de saída) é
incorreta.
○
32: a variável "operator" (de uma das condições do atuador de saída) é
incorreta.
○
33: a variável "value" (de uma das condições do atuador de saída) é
incorreta.
○
34:
a variável "output id" (de uma das condições do atuador de saída) é
incorreta.
○
35: a variável "time" (de uma das condições do atuador de saída) é
incorreta.
○
36: a variável "max. stop time" é incorreta.
○
37: a variável "last picture delay" é incorreta.
○
38: a variável "operator" (de umo dos atuadores de saída) é incorreta.
○
39: a variável "detectorId" (de umo dos atuadores de saída) é incorreta.
4.9. Mensagens de configuração
As mensagens de configuração se enviam e se recebem por portas diferentes (também
configuráveis) às das restantes mensagens, dado que os mecanismos de configuração da
unidade formam um subsistema totalmente independente do sistema de detecção.
O formato destas mensagens , assim como o protocolo de comunicações, é idêntico ao das
restantes mensagens, no entanto, estes não têm porque provir do endereço de IP que esteja
configurado para servir como sistema central, mas podem provir de qualquer endereço. A
resposta sempre se enviará ao endereço de IP a partir do qual se tenha enviado a última
mensagem de Login correta, o porto de destino será o que se tenha especificado em tal
mensagem (veja-se mais abaixo).
4.9.1. Ping
Manda um pedido de resposta ao sistema de configuração. Sua função é verificar se no
endereço de IP e porta à qual se envia tal mensagem há um sistema de configuração
funcionando. Não é necessário haver completado uma mensagem de Login com êxito para
obter resposta a esta mensagem.
Solicitação
●
Type: 51
Quercus Technologies
161
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
Port
●
Message Data:
●
Port: porta à qual o sistema de configuração deve enviar a resposta.
Resposta
ACK/NAK
4.9.2. Login
Obtém acesso ao sistema de configuração da unidade.
Solicitação
●
Type: 128
●
Message Data:
4
64
Port
Password
●
Password: senha do sistema de configuração.
●
Port: porta à qual o sistema de configuração deve enviar a resposta.
Resposta
●
Type: 180
●
Message Data:
4
SessionId
●
SessionId: identificador da sessão. Este inteiro deve-se usar nas restantes
mensagens para verificar se procedem de uma fonte autenticada.
Quercus Technologies
162
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.9.3. Logout
Perde o acesso ao sistema de configuração e converte em inválido o valor de "SessionId"
atual.
Solicitação
●
Type: 129
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.4. PasswordChange
Altera a senha de acesso ao sistema de configuração. Esta alteração não é permanente
enquanto não se aplicam alterações.
Solicitação
●
Type: 130
●
Message Data:
4
SessionId
64
New
Password
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
NewPassword: nova password.
Resposta
ACK/NAK
Quercus Technologies
163
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.9.5. Syntime
Força a sincronização imediata da data e hora com o servidor de data e hora configurado.
Solicitação
●
Type: 131
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.6. SetTime
Estabelece a data e hora indicada.
Solicitação
●
Type: 132
●
Message Data:
4
4
SessionId
Time
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Time: tempo em segundos decorridos desde 01/01/1970 00:00:00 h.
Resposta
ACK/NAK
4.9.7. UpdateFirmware
Atualiza o firmware da unidade utilizando um arquivo da raiz do servidor de FTP e reinicia a
unidade. Depois de usar esta mensagem o valor de "SessionId" deixa de ser válido.
Quercus Technologies
164
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
●
Type: 133
●
Message Data:
4
SessionId
64
FileName:
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
FileName: nome do arquivo a usar na atualização.
Resposta
ACK/NAK
4.9.8. RestoreFirmware
Restaura o firmware de fábrica da unidade e reinicia a unidade. Depois de usar esta
mensagem o valor de "SessionId" deixa de ser válido.
Solicitação
●
Type: 134
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.9. FormatRWPartition
Formata o disco de dados, onde armazenam as incidências, além da informação recolhida pela
ferramenta de Integração em caso de ativação. Observe que excluirão todos os arquivos, sem
a possibilidade alguma de recupera-los.
Para formatar o disco de dados a unidade precisa parar tanto o sistema de detecção como o
servidor FTP/SFTP, sendo assim, esses serviços no funcionarão durante o processo. A
Quercus Technologies
165
MANUAL DE PROGRAMAÇÃO
QuercusVL
formatação pode levar alguns minutos, durante esse tempo o sistema de configuração não
responderá a nenhuma mensagem.
Uma vez realizado a formatação é imprescindível reiniciar a unidade para que volte a funcionar
corretamente todos os serviços. (ver 4.9.17. Restart).
Solicitação
●
Type: 135
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.10. ExportLog
Exporta o arquivo de log do subsistema especificado deixando-o na pasta raiz do servidor FTP.
Solicitação
●
Type: 136
●
Message Data:
4
4
SessionId
Sys
64
FileName
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
System(Sys): susbsistema a exportar:
●
0: sistema de detecção.
●
1: obsoleto.
●
2: sistema de configuração.
●
3: sistema de arquivos
●
4: ferramenta Integration.
Quercus Technologies
166
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
FileName: nome com o qual se deve guardar o arquivo na pasta de FTP.
Resposta
ACK/NAK
4.9.11. SystemInfo
Informações da unidade.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Solicitação
A estrutura corresponde à versão 1.
●
Type: 137
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 181
●
Message Data:
64
P. Name
1
1
1
1
1
Mah Mih Rh
4
ProdutionDate
15
Serial N.
18
MAC
4
BootTime
1
Maf Mif Rf
●
ProductName (P. Name): nome do produto.
●
HardwareMajor (Mah): primeiro número da versão do hardware. Exemplo:
1.2.3.
●
HardwareMinor (Meu): segundo número da versão do hardware. Exemplo:
1.2.3.
●
HardwareMinor (Meu): terceiro número da versão do hardware. Exemplo: 1.2.3.
●
ProdutionDate: data de fabricação em segundos desde 01/01/1970 00:00:00h.
Quercus Technologies
167
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
SerialNumber: número de série da unidade.
●
MAC: Direção MAC da unidade.
●
BootTime: data e hora de começo em segundos desde 01/01/1970 00:00:00h.
●
FirmwareMajor (Maf): primeiro número da versão do firmware. Exemplo: 1.2.3.
●
FirmwareMinor (Mif): segundo número da versão do firmware. Exemplo: 1.2.3.
●
FirmwareRevision (Rf): terceiro número da versão do firmware. Exemplo: 1.2.3.
4.9.12. ExportStatus
Exporta um relatório do estado do sistema deixando-o na pasta raiz do servidor FTP.
Solicitação
●
Type: 138
●
Message Data:
4
SessionId
64
FileName
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
FileName: nome com o qual se deve guardar o arquivo na pasta de FTP.
Resposta
ACK/NAK
4.9.13. ImportConfiguration
Importa a configuração de um arquivo da pasta raiz do servidor FTP.
Solicitação
●
Type: 139
●
Message Data:
4
SessionId
64
FileName
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
FileName: arquivo da pasta de FTP do qual se quer importar a configuração.
Quercus Technologies
168
MANUAL DE PROGRAMAÇÃO
QuercusVL
Resposta
ACK/NAK
4.9.14. ExportConfiguration
Exporta a configuração a um arquivo da pasta raiz do servidor FTP.
Solicitação
●
Type: 140
●
Message Data:
4
SessionId
64
FileName
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
FileName: arquivo da pasta de FTP ao qual se quer exportar a configuração.
Resposta
ACK/NAK
4.9.15. ApplyChanges
Aplica as alterações efetuadas às variáveis do sistema e reinicia a unidade. . Depois de usar
esta mensagem o valor de "SessionId" deixa de ser válido.
Solicitação
●
Type: 141
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
Quercus Technologies
169
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.9.16. DiscardChanges
Descarta as alterações efetuadas às variáveis do sistema.
Solicitação
●
Type: 142
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.17. Restart
Esse ação foi desenvolvida única e exclusivamente para ser utilizada depois da formatação do
disco de dados da unidade (ver 4.9.9. FormatRWPartition).
Solicitação
●
Type: 143
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
ACK/NAK
4.9.18. GetEntriesCount
Obter o número de variáveis do sistema de configuração.
Quercus Technologies
170
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
●
Type: 150
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 182
●
Message Data:
4
EntriesCount
●
EntriesCount: número de variáveis.
4.9.19. GetEntry
Obter informação sobre a variável indicada por seu índice ou por seu nome.
Solicitação
●
Type: 151
●
Message Data:
4
SessionId
64
Name
4
Index
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Name: nome da variável da qual se quer obter informação. Se este campo está
vazio (o primeiro caractere é \0) se usará o campo "Index".
●
Index: índice (começando por 0) da variável da qual se quer obter informação.
Quercus Technologies
171
MANUAL DE PROGRAMAÇÃO
QuercusVL
Somente se usa se o campo "Name" está vazio.
Resposta
●
Type: 183
●
Message Data:
64
64
Name
256
Valor
256
Descr1
Descr2
●
Name: nome da variável.
●
Value: valor atual da variável.
●
Description1: descrição da variável no idioma por padrão.
●
Description2: descrição da variável no idioma configurado pelo usuário.
4.9.20. SetEntry
Altera o valor da variável indicada por seu nome.
Solicitação
●
Type: 152
●
Message Data:
4
SessionId
64
Name
64
Valor
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Name: nome da variável.
●
Value: valor que se quer dar à variável.
Resposta
ACK/NAK
4.9.21. RestoreEntry
Restaura o valor de fábrica da variável indicada por seu nome.
Quercus Technologies
172
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
●
Type: 153
●
Message Data:
4
SessionId
64
Name
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Name: nome da variável a restaurar.
Resposta
ACK/NAK
4.9.22. GetDetectorsCount
Obter o número de detectores no sistema de configuração.
Solicitação
●
Type: 160
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 184
●
Message Data:
4
DetCount
●
DetectorsCount (DetCount): número de detectores no sistema de configuração.
Quercus Technologies
173
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.9.23. RemoveDetector
Eliminar um detector do sistema de configuração.
Solicitação
●
Type: 161
●
Message Data:
4
4
4
SessionId
Index
DetectorId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Index: posição do detector na coleção de detectores do sistema de configuração
(a primeira posição é 0).
●
DetectorId: identificador do detector.
Somente pode utilizar um dos dois parâmetros para indicar o detector (Index ou
DetectorId); no parâmetro não utilizado deve indicar -1.
Resposta
ACK/NAK
4.9.24. GetDetector
Obter a informação sobre um detector.
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Solicitação
●
Type: 162
●
Message Data:
4
4
4
SessionId
Index
DetectorId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Index: posição do detector na coleção de detectores do sistema de configuração
Quercus Technologies
174
MANUAL DE PROGRAMAÇÃO
QuercusVL
(a primeira posição é 0).
●
DetectorId: identificador do detector.
Somente pode utilizar um dos dois parâmetros para indicar o detector (Index ou
DetectorId); no parâmetro não utilizado deve indicar -1.
Resposta (detector de presença)
●
Type: 185
●
Message Data:
103
Detector
●
Detector: descrição do detector, através de uma estrutura PresenceDetector.
Resposta (detector de fila)
●
Type: 186
●
Message Data:
167
Detector
●
Detector: descrição do detector, através de uma estrutura QueueDetector.
Resposta (detector de avançar no sinal vermelho)
●
Type: 187
●
Message Data:
157
Detector
●
Detector: descrição do detector, através de uma estrutura RedLightDetector.
Resposta (detector de velocidade)
●
Type: 188
Quercus Technologies
175
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Message Data:
128
Detector
●
Detector: descrição do detector, através de uma estrutura SpeedDetector.
Resposta (detector de veículo parado)
●
Type: 191
●
Message Data:
124
Detector
●
Detector: descrição do detector, através de uma estrutura StoppedCarDetector.
4.9.25. SetPresenceDetector
Adicionar ou modificar um detector de presença ao sistema de configuração.
Solicitação
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 163
●
Message Data:
4
2
SessionId
Act
103
Detector
4
PreviousId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
●
○
0: modificar detector existente.
○
1: adicionar novo detector.
PeviousId: se modificar um detector existente deve indicar neste parâmetro seu
antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo detector deve indicar -1.
Quercus Technologies
176
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Detector: descrição do detector, através de uma estrutura PresenceDetector.
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.26. SetQueueDetector
Adicionar ou modificar um detector de fila ao sistema de configuração.
Solicitação
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 164
●
Message Data:
4
2
4
SessionId
Act
PreviousId
163
Detector
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
●
○
0: modificar detector existente.
○
1: adicionar novo detector.
PreviousId: se modificar um detector existente deve indicar neste parâmetro seu
antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo detector deve indicar -1.
●
Detector: descrição do detector, através de uma estrutura QueueDetector.
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.27. SetRedLightDetector
Adicionar ou modificar um detector de passo no vermelho ao sistema de configuração.
Quercus Technologies
177
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 165
●
Message Data:
4
SessionId
Act
157
4
2
PreviousId
Detector
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
●
○
0: modificar detector existente.
○
1: adicionar novo detector.
PreviousId: se modificar um detector existente deve indicar neste parâmetro seu
antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo detector deve indicar -1.
●
Detector: descrição do detector, através de uma estrutura RedLightDetector.
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.28. SetSpeedDetector
Adicionar ou modificar um detector de velocidade ao sistema de configuração.
Solicitação
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 166
●
Message Data:
Quercus Technologies
4
2
4
SessionId
Act
PreviousId
103
Detector
178
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
○
0: modificar detector existente.
○
1: adicionar novo detector.
PreviousId: se modificar um detector existente deve indicar neste parâmetro seu
antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo detector deve indicar -1.
●
Detector: descrição do detector, através de uma estrutura SpeedDetector.
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.29. SetStoppedCarDetector
Adicionar ou modificar um detector de veículo parado ao sistema de configuração.
Solicitação
A estrutura corresponde à versão 3. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 172
●
Message Data:
4
2
4
SessionId
Act
PreviousId
124
Detector
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
○
0: modificar detector existente.
○
1: adicionar novo detector.
PreviousId: se modificar um detector existente deve indicar neste parâmetro seu
antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo detector deve indicar -1.
●
Detector: descrição do detector, através de uma estrutura StoppedCarDetector.
Quercus Technologies
179
MANUAL DE PROGRAMAÇÃO
QuercusVL
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.30. GetTrafficLightsCount
Obter o número de semáforos no sistema de configuração.
Solicitação
●
Type: 167
●
Message Data:
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 189
●
Message Data:
4
TLCount
●
TrafficLightsCount (TLCount): número de semáforos no sistema de configuração.
4.9.31. RemoveTrafficLight
Eliminar um semáforo do sistema de configuração.
Solicitação
●
Type: 168
●
Message Data:
●
4
4
4
SessionId
Index
TrafficLightId
Session Id: identificador da sessão obtido no último "Login" válido.
Quercus Technologies
180
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Index: posição do semáforo na coleção de semáforos do sistema de configuração
(a primeira posição é 0).
●
TrafficLightId: identificador do semáforo.
Somente pode utilizar um dos dois parâmetros para indicar o semáforo (Index
ou
TrafficLightId); no parâmetro não utilizado deve indicar -1.
Resposta
ACK/NAK
4.9.32. GetTrafficLight
Obter a informação sobre um semáforo do sistema de configuração.
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
Solicitação
●
Type: 169
●
Message Data:
4
4
4
SessionId
Index
TrafficLightId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Index: posição do semáforo na coleção de semáforos do sistema de configuração
(a primeira posição é 0).
●
TrafficLightId: identificador do semáforo.
Somente pode utilizar um dos dois parâmetros para indicar o semáforo (Index
ou
TrafficLightId); no parâmetro não utilizado deve indicar -1.
Resposta
●
Type: 190
●
Message Data:
40
TL
Quercus Technologies
181
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
TrafficLight (TL): descrição do semáforo, através de uma estrutura TrafficLight.
4.9.33. SetTrafficLight
Adicionar ou modificar um semáforo ao sistema de configuração.
Solicitação
A estrutura corresponde à versão 1. Consulte 5. Communications protocol (versões antigas)
para ver versões antigas.
●
Type: 170
●
Message Data:
4
2
SessionId
Act
40
TL
4
PreviousId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação:
○
0: modificar semáforo existente.
○
1: adicionar novo semáforo.
●
TrafficLight (TL): descrição do semáforo, através de uma estrutura TrafficLight.
●
PreviousId: se modificar um semáforo existente deve indicar neste parâmetro
seu antigo identificador (pode ter sido modificado). Se, no entanto, adiciona um
novo deve indicar -1.
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query).
Ver 4.8.2. NAK.
4.9.34. GetLanguage
Obtém o idioma configurado atualmente no sistema de configuração.
Solicitação
●
Type: 173
●
Message Data:
Quercus Technologies
182
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 197
●
Message Data:
8
Language
●
Language: o idioma configurado, indicado como um código de 2 caráteres (ISO
639-1) terminado com o caráter \0.
4.9.35. SetLanguage
Estabelece o idioma do sistema de configuração.
Solicitação
●
Type: 174
8
4
SessionId
●
Language
Message Data:
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Language: o idioma configurado, indicado como um código de 2 caráteres (ISO
639-1) terminado com o caráter \0.
Resposta
ACK/NAK
4.9.36. GetOutputActuatorsCount
Obter o número de atuadores de saída no sistema de configuração.
Solicitação
●
Type: 167
●
Message Data:
Quercus Technologies
183
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
SessionId
●
Session Id: identificador da sessão obtido no último "Login" válido.
Resposta
●
Type: 189
●
Message Data:
4
OACount
●
OutputActuatorsCount (OACount): número de atuadores de saída do sistema de
configuração.
4.9.37. RemoveOutputActuator
Elimina um atuador de saída ao sistema de configuração.
Solicitação
●
Type: 168
●
Message Data:
4
4
4
SessionId
Index
OutputActuatorId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Index: posição do atuador na coleção de atuadores do saída do sistema de
configuração (a primeira posição é 0).
●
OutputActuatorId: o identificador do semáforo.
Somente pode utilizar um dos dois parâmetros para indicar o detector (Index ou
DetectorId); no parâmetro não utilizado deve indicar -1.
Resposta
ACK/NAK
Quercus Technologies
184
MANUAL DE PROGRAMAÇÃO
QuercusVL
4.9.38. GetOutputActuator
Obter a informação sobre um atuador de saída do sistema de configuração.
Solicitação
●
Type: 169
●
Message Data:
4
4
4
SessionId
Index
OutputActuatorId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Index: posição do atuador da saída na coleção de atuadores do sistema de
configuração (a primeira posição é 0).
●
OutputActuatorId: identificador do atuador de saída.
Somente pode utilizar um dos dois parâmetros para indicar o atuador de saída (Index
ou OutputActuatorId); no parâmetro não utilizado deve indicar -1.
Resposta
●
Type: 190
●
Message Data:
171
OA
●
OutputActuator (OA): descrição do atuador de saída utilizando uma estrutura
OutputActuator.
4.9.39. SetOutputActuator
Adicionar ou modificar um atuador de saída ao sistema de configuração.
Solicitação
●
Type: 170
●
Message Data:
Quercus Technologies
185
MANUAL DE PROGRAMAÇÃO
QuercusVL
4
2
SessionId
Act
171
OA
4
PreviousId
●
Session Id: identificador da sessão obtido no último "Login" válido.
●
Action (Act): ação :
●
○
0: modificar atuador de saída já existente.
○
1: adicionar novo atuador de saída.
OutputActuator (OA): descrição do atuador de saída, utilizando uma estrutura
OutputActuator.
●
PreviousId: se modificar um atuador de saída já existente deve indicar neste
parâmetro seu antigo identificador (pode ter sido modificado). Se, no entanto,
adiciona um novo atuador de saída deve indicar -1
Resposta
ACK/NAK
Se é respondida com uma mensagem de tipo NAK, no campo código encontrará mais detalhes
sobre por que não foi possível realizar a petição (query). Ver 4.8.2. NAK.
Quercus Technologies
186
MANUAL DE PROGRAMAÇÃO
QuercusVL
5. Communications protocol (versões antigas)
A continuação encontrará descritas as antigas estruturas das mensagens que evolucionaram
desde a versão 0. Ver 4.2. Versões das mensagens para saber mais sobre a política das
versões das mensagens.
5.1. Estruturas comuns
5.1.1. OutputActuator
Versão 0:
Nessa versão, o atuador de saída digital pertence a um detector.
●
●
1
1
4
1
4
Field
Op
Valor
OId
Time
Field: campo sobre o qual o operador atua.
○
0: velocidade de circulação do veículo detectado.
○
1: comprimento do veículo detectado.
○
2: sentido de circulação do veículo detectado.
○
3: porcentagem de ocupação do detector.
○
4: presença no detector.
Operator (Op): operador utilizado por o atuador.
○
0: igual a.
○
1: diferente a.
○
2: maior que.
○
3: menor que.
●
Value: valor com o qual o operador atua.
●
OutputId (OId): identificador da saída digital relacionada ao atuador.
●
Time: tempo que o atuador mantém a saída digital ativa; em milésimos de
segundos.
5.1.2. DetectorHeader
Versão 0:
4
Id
1
1
Tipo SmE
Quercus Technologies
1
1
1
1
4
2
InE
SSm
SIn
SRT
SumPeriod
NOut
55
OutAc
16
Coord
187
MANUAL DE PROGRAMAÇÃO
QuercusVL
●
Id: identificador único do detector.
●
Type: tipo de detector.
●
○
1: detector de velocidade
○
2: detector de fila.
○
3: detector de presença.
○
4: detector de avançar no vermelho.
○
5: detector de veículo parado
AreSummariesEnabled (SmE): verdadeiro, se a geração de resumos por parte do
detector estiver ativa, será falso se não estiver ativa.
●
AreIncidencesEnabled (InE): verdadeiro, se a geração de incidências por parte
do detector estiver ativa, será falso se não estiver ativa.
●
SendSummaries (SSm): verdadeiro, se o envio dos resumos gerados pelo
detector ao sistema central estiver ativo, será falso se não estiver ativo.
●
SendIncidences (SIn): verdadeiro, se o envio das incidências geradas pelo
detector ao sistema central estiver ativo, será falso se não estiver ativo.
●
SendRealTimeInformation (SRT): verdadeiro, se o envio dos eventos em tempo
real gerados pelo detector ao sistema central estiver ativo, será falso se não
estiver ativo.
●
SummariesPeriod (SumPeriod): período dos resumos configurado; em minutos.
●
NumOutputActuators (NOut): número de atuadores de saída configurados.
●
OutputActuators (OutAc): descrição de cada um dos atuadores de saída
configurados. São descritos através de 5 estruturas OutputActuator consecutivas
(máximo de atuadores configuráveis), sendo utilizadas somente as primeiras
NumOutputActuators.
●
Coordinates (Coord): descrição das coordenadas (na imagem de 5 megapixels)
que definem a posição do detector, através de uma estrutura Region.
5.1.3. SpeedDetector
Versão 1 e 2 (é a mesma):
87
Head
●
1
4
4
Calc
Distance
Length
16
Loop1
16
Loop2
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader de versão 0.
Quercus Technologies
188
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
CalculateMetrics (Calc): verdadeiro, quando é ativado o cálculo da métrica no
detector, falso, se ele é desativado. .
●
Distance: distância entre a horizontal da unidade e o detector, em milímetros.
●
Length: comprimento do detector; em milímetros.
●
FirstLoop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
primeiro laço do detector, através de uma estrutura Region.
●
SecondLoop (Loop2): descrição das coordenadas (na imagem de 5 megapixels)
do segundo laço do detector, através de uma estrutura Region.
Versão 0:
As coordenadas do detector (“Header/Coordinates”) e os laços (“FirstLoop” y “SecondLoop”)
são definidas na imagem de 0,3 megapixels. Os campos têm o mesmo significado que a versão
1.
5.1.4. QueueDetector
Versão 1 e 2 (e a mesma):
80
87
Loop1..5
Header
●
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader de versão 0.
●
Loops (Loop1..5): as coordenadas (na imagem de 5 megapixels) de cada um
dos 5 laços do detector, através de 5 estruturas Region consecutivas.
Versão 0:
As coordenadas do detector
(“Header/Coordinates”) e os laços (“Loops”) são definidas na
imagem de 0,3 megapixels. Os outros campos têm o mesmo significado que a versão 1.
5.1.5. PresenceDetector
Versão 1 e 2 (é a mesma):
16
87
Header
Quercus Technologies
Loop1
189
MANUAL DE PROGRAMAÇÃO
QuercusVL
Header (Head): descrição das características indiferentes ao tipo de detector,
●
através de uma estrutura DetectorHeader de versão 0.
Loop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
●
único laço do detector, através de uma estrutura Region.
Versão 0:
As coordenadas do detector (“Header/Coordinates”) e o laço (“Loop”) são definidas na imagem
de 0.3 megapixels. Os outros campos têm o mesmo significado que a versão 1.
5.1.6. TrafficLight
Versão 0:
4
1
Id
NLg
35
Lights
●
Id: identificador único do semáforo.
●
NumLights (NLg): número de luzes no semáforo.
●
Lights: descrição de cada uma das luzes configuradas. São descritas através de
5 estruturas Light consecutivas (máximo de luzes configuráveis em um
semáforo), sendo utilizadas somente as primeiras NumLights. As coordenadas
de cada uma das luzes (“Lights/X”, “Lights/Y”, “Lights/Radius”) são definidas na
imagem de 0.3 megapixels.
5.1.7. RedLightDetector
Versão 2:
87
Header
16
Loop2
16
1
4
4
4
Calc
Distance
Length
DelayTime
Loop1
4
4
4
1
4
4
TrafficLightId
RedInput
AmberInput
IsVE
PreVideoT
PostVideoT
4
LastPictureD.
●
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader de versão 0.
Quercus Technologies
190
MANUAL DE PROGRAMAÇÃO
QuercusVL
CalculateMetrics (Calc): verdadeiro, quando é ativado o cálculo da métrica no
●
detector, falso, se ele é desativado. .
●
Distance: distância entre a horizontal da unidade e o detector, em milímetros.
●
Length: comprimento do detector; em milímetros.
●
DelayTime: tempo mínimo que deve transcorrer, desde a ativação do sinal de
proibição de avançar até a detecção da incidência, para que esta seja gerada;
em milésimos de segundos.
FirstLoop (Loop1): descrição das coordenadas (na imagem de 5 megapixels) do
●
primeiro laço do detector, através de uma estrutura Region.
SecondLoop (Loop2): descrição das coordenadas (na imagem de 5 megapixels)
●
do segundo laço do detector, através de uma estrutura Region.
TrafficLightId: identificador do semáforo utilizado para o sinal de proibição de
●
avançar. Se não tiver sido configurado um semáforo, mas uma entrada digital,
seu valor será -1.
RedInput: identificador da entrada digital utilizada para o sinal de proibição de
●
avançar. Se não tiver sido configurada uma entrada digital, mas um semáforo,
seu valor será -1.
AmberInput: identificador da entrada digital utilizada para o sinal de âmbar. Se
●
não se configurou uma
entrada digital(devido um semáforo configurado ou
simplesmente não foi configurado o sinal de luz âmbar) seu valor será -1.
IsVideoEnabled (isVE): verdadeiro se a geração de vídeo nas incidências está
●
habilitada, falso no caso contrário.
PreVideoTimeMs (PreVideoT): tempo que se adiantará o início da captura do
●
vídeo a partir da primeira fotografia; em milissegundos.
PostVideoTimeMs (PostVideoT): tempo que se atrasará a finalização da captura
●
do vídeo a partir da terceira fotografia; em milissegundos.
LastPictureDelayTimeMs (LastPictureD.): tempo que atrasará a última captura
●
da imagem da incidência; em milésimos de segundos.
Versão 1:
87
Header
16
Loop2
16
1
4
4
4
Calc
Distance
Length
DelayTime
Loop1
4
4
4
1
4
4
TrafficLightId
RedInput
AmberInput
IsVE
PreVideoT
PostVideoT
O campo "LastPictureDelayTimeMs" não existe. Os outros campos têm o mesmo significado
Quercus Technologies
191
MANUAL DE PROGRAMAÇÃO
QuercusVL
que na versão 2.
Versão 0:
87
Header
1
4
4
4
Calc
Distance
Length
DelayTime
16
16
Loop2
Loop1
4
4
TrafficLightId
Input
Os campos ”AmbertInput”, ”IsVideoEnabled”, ”PreVideoTimeMs” e ”PostVideoTimeMs” não
existem. O campo “Input” corresponde à “RedInput” da versão 1. As coordenadas do detector
(“Header/Coordinates”) e os laços (“Loop1” e “Loop2”)
são definidas na imagem de 0,3
megapixels. Os outros campos têm o mesmo significado que na versão 1.
5.1.8. StoppedCarDetector
Versao 1 e 2 (é a mesma):
87
MaxStopTime
Header
4
4
PreVideoT
PostVideoT
●
16
4
Loop
4
4
1
Distance
RedInput
IsVE
Header (Head): descrição das características indiferentes ao tipo de detector,
através de uma estrutura DetectorHeader da versão 0.
●
MaxStopTime: tempo mínimo que deve estar o veículo parado, desde a ativação
do sinal de proibição para que uma infração seja gerada; em milésimos de
segundos.
●
Loop (Loop): descrição das coordenadas (na imagem de 5 megapixels) do único
laço do detector, através de uma estrutura Region.
●
TrafficLightId: identificador do semáforo utilizado para o sinal de proibição de
avançar. Se não tiver sido configurado um semáforo, mas uma entrada digital,
seu valor será -1.
●
RedInput: identificador da entrada digital utilizada para o sinal de proibição de
avançar. Se não tiver sido configurada uma entrada digital, mas um semáforo,
seu valor será -1.
Quercus Technologies
192
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
IsVideoEnabled (isVE): verdadeiro, se a geração de vídeo nas incidências estiver
habilitada, falso se não estiver habilitada.
●
PreVideoTimeMs (PreVideoT): tempo que adiantará o início da gravação do vídeo
a partir da primeira fotografia; em milissegundos.
●
PostVideoTimeMs (PostVideoT): tempo que atrasará a finalização da gravação do
vídeo a partir da terceira fotografia; em milissegundos.
Versão 0:
As coordenadas do detector (“Header/Coordinates”) e o laço (“Loop”) são definidas na imagem
de 0.3 megapixels. Os outros campos têm o mesmo significado que na versão 0.
5.2. Mensagens de eventos
5.2.1. IncidenceInformation
Versão 1:
4
24
2
1
Id
Tipo
NImg
25
ImgTime
VideoInf
4
4
4
4
Velocidade
DelayTime
ElapsedTime
AmberLightT
Os campos “MaxStopTime” e “TotalStoppedTime” não existem.
4
1
DetectorId
DTy
Os outros campos têm o
mesmo significado que na versão 2.
Versão 0:
4
1
2
Id
Tipo
NImg
4
4
DelayTime
ElapsedTime
24
ImgTime
4
1
4
DetectorId
DTy
Velocidade
Os campos ”MaxStopTime”, “TotalStoppedTime”, ”VideoInformation” e “AmberLightTime” não
existem. Os outros campos têm o mesmo significado que na versão 1.
Quercus Technologies
193
MANUAL DE PROGRAMAÇÃO
QuercusVL
5.3. Mensagens de solicitação
5.3.1. SnapshotQuery
Versão 0:
Solicitação
Todos os campos têm o mesmo significado que na versão 1.
Resposta
4
4
Focus
NumDetectors
4
4
4
Saídas
ImageSize
Length
4
60
DStatus
NumRedLights
3
RedLights
4
Entradas
64000
Buffer
O campos "DetectorStatus" (DStatus) descreve a situação dos laços para cada detector
configurado, com 15 enteros consecutivos, em vez de 40.
Os outros campos têm o mesmo
significado que na versão 1.
5.3.2. DetectorInformationQuery
O formato da resposta variará, dependendo do tipo de detector que é descrito.
Versão 0, 1 e 2 (é a mesma):
Solicitação
Os campos dessa estrutura têm o mesmo significado que a última versão, mas a versão da
resposta depende do versão da solicitação.
Resposta
A estrutura relacionada com a descrição do detector mudou; a versão dessa mensagem define
a versão da estrutura do detector.
Ver as versões obsoletas de cada tipo de detector.
5.3.3. TrafficLightInformationQuery
Versão 0:
Solicitação
Os campos da estrutura têm o mesmo significado que a última versão, mas a versão da
Quercus Technologies
194
MANUAL DE PROGRAMAÇÃO
QuercusVL
resposta depende do versão da solicitação.
Resposta
Aestrutura relacionada com a descrição do semáforo mudou; a versão da mensagem define a
versão da estrutura do semáforo. Ver as versões obsoletas da estrutura Semáforo.
5.4. Mensagens de configuração
5.4.1. SystemInfo
Versão 0:
Solicitação
Os campos da estrutura têm o mesmo significado que a última versão, mas a versão da
resposta depende do versão da solicitação.
Resposta
1
64
P. Name
1
1
Mah Mih Rh
4
ProdutionDate
15
Serial N.
4
18
MAC
BootTime
Os campos “FirmwareMajor”, “FirmwareMinor” e “FirmwareRevision” não existem. Os campos
“HardwareMajor”, “HardwareMinor” e “HardwareRevision” não indicam a versão do hardware, e
sim a do firmware.
5.4.2. GetDetector
Versões 0, 1 e 2:
Solicitação
Os campos da estrutura têm o mesmo significado, mas a versão da resposta depende do
versão da solicitação.
Resposta
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector.
Ver as versões obsoletas de cada tipo de detector.
5.4.3. SetPresenceDetector
Versões 0, 1 e 2:
Quercus Technologies
195
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector.
Ver as versões obsoletas de PresenceDetector.
5.4.4. SetQueueDetector
Versões 0, 1 e 2:
Solicitação
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector. Ver as versões obsoletas de QueueDetector.
5.4.5. SetRedLightDetector
Versões 0, 1 e 2:
Solicitação
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector. Ver as versões obsoletas de RedLightDetector.
5.4.6. SetSpeedDetector
Versões 0, 1 e 2:
Solicitação
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector. Ver as versões obsoletas de SpeedDetector.
5.4.7. SetStoppedCarDetector
Versões 0, 1 e 2:
Solicitação
A estrutura relacionada com a descrição do detector mudou; a versão das mensagem define a
versão da estrutura do detector. Ver as versões obsoletas de StoppedCarDetector.
5.4.8. GetTrafficLight
Versão 0:
Quercus Technologies
196
MANUAL DE PROGRAMAÇÃO
QuercusVL
Solicitação
Os campos da estrutura têm o mesmo significado que a última versão, mas a versão da
resposta depende do versão da solicitação.
Resposta
A estrutura relacionada com a descrição do semáforo mudou; a versão das mensagem define a
versão da estrutura do semáforo. Ver as versões obsoletas de TrafficLight.
5.4.9. SetTrafficLight
Versão 0:
Solicitação
A estrutura relacionada com a descrição do semáforo mudou; a versão das mensagem define a
versão da estrutura do semáforo. Ver as versões obsoletas de TrafficLight.
Quercus Technologies
197
MANUAL DE PROGRAMAÇÃO
QuercusVL
6. Simulador SmartLoop® TS (TSSimu)
Nesse apartado é descrito o simulador de uma unidade SmartLoop ® TS que forma parte do
software cliente.
Não é necessário dispor fisicamente de unidades SmartLoop® para seguir
os passos indicados nesta seção. Ver o manual de usuário de SmartLoop ® TS para conhecer o
software cliente.
TSSimu simula o conjunto completo de eventos e mesagens que gera um sistema real
SmartLoop TS®.
Podem simular-se tantas unidades como se queira executando tantas instâncias do programa
como seja necessário. É possível testar o software desenhado para interatuar com o sistema
SmartLoop® TS.
6.1. Configuration
Para configurar a unidade, devemos criar dois arquivos de configuração:
●
Arquivo de configuração geral.
●
Arquivo de detectores.
6.1.1. Arquivo de configuração geral
Nesse arquivo é indicada a configuração da unidade.
O arquivo equivale ao menu de configuração de uma unidade SmartLoop ® TS real, de tal forma
que os parâmetros descritas a continuação fazem referência a cada uma das parâmetros do
menu mencionado. Consultar o manual de usuário do SmartLoop® TS para mais informações.
A estrutura do arquivo é sempre a mesma, mas as variáveis nele descritas podem variar
dependendo do tipo de produto simulado. O arquivo é dividido em seções, definidas entre
colchetes, com a descrição de suas variáveis (uma por linha).
[Communications]
parameter1=value1
parameter2=value2
.
.
[Global]:
parameter1=value1
.
.
[Engine]
parameter1=value1
.
.
Quercus Technologies
198
MANUAL DE PROGRAMAÇÃO
QuercusVL
[IO]
parameter1=value1
.
.
Há um arquivo de exemplo disponível no diretório de instalação do software SmartLoop® TS:
“Simulation/Simulation Type/Data/Globals.ini”
6.1.2. Arquivo de detectores
Nesse arquivo são detalhados os detectores ativados na simulação. O arquivo equivale ao
menu de configuração dos detectores de uma unidade SmartLoop ® TS real, de tal forma que
os parâmetros descritos a continuação fazem referência a cada uma das opções disponíveis
nesse menu. Ver o manual de usuário de SmartLoop® TS para mais informação.
A estrutura do arquivo é sempre a mesma, mas as variáveis nele descritas podem variar
dependendo do tipo de detector simulado. O arquivo é dividido em seções, definidas entre
colchetes, com a descrição de suas variáveis (uma por linha).
[Global]:
NumDetectors=
[Detector1]
variable1=valor1
.
.
A primeira seção (Globals) indica o número de detectores que serão descritos no arquivo. As
outras secções definem a cada um dos detectores (Detector).
Há um arquivo de exemplo disponível no diretório de instalação do software SmartLoop® TS:
“Simulation/Tipo de simulación/Data/Detectors.ini”
6.1.2.1. Seção [Globals]
●
NumDetectors: número de detectores definidos.
6.1.2.2. Sección DetectorX
Descrição do detector; o valor X indica o número de detector definido (de 1 até o total de
detectores definidos). A estrutura varia conforme o tipo de detector.
Parâmetros comuns
●
Id: Identificador do detector.
Quercus Technologies
199
MANUAL DE PROGRAMAÇÃO
●
●
QuercusVL
Type: tipo de detector.
○
PRESENCE: detector de presença.
○
QUEUE: detector de fila.
○
SPEED: detector de velocidade
AreSummariesEnabled: indica se os resumos devem ser gerados. 0, desativado; 1,
ativado.
●
SendSummaries: indica se os resumos gerados devem ser enviados ao equipamento
central.
0, desativado; 1, ativado.
●
SendRealTimeInfo: indica se os eventos gerados devem ser enviados ao sistema
central.
0, desativado; 1, ativado.
●
Coordinates: definição dos quatro vértices que definem a posição do detector, seguindo
o formato:
P1_x, P1_y, P2_x, P2_y, P3_x, P3_y, P4_x, P4_y. Os valores devem
respeitar os limites, tanto do eixo X (0..2559) quanto do Y (0..1919).
Parâmetros adicionais para os detectores de velocidade
●
CalculateMetrics: indica se devemos calcular a velocidade e o comprimento.
0,
desativado; 1, ativado.
●
CameraDistance: indica a distância entre a horizontal da unidade e o detector, em
milímetros.
●
Length: comprimento do detector; em milímetros.
6.2. Configuração da simulação
Para isso, o simulador criou o conceito de “faixa virtual”. Essa faixa não é nada mais do que a
representação de uma faixa na qual é possível definir todos os eventos (movimentos de
veículos).
Quercus Technologies
200
MANUAL DE PROGRAMAÇÃO
QuercusVL
A unidade simulada está focando quatro faixas na posição zenital. A imagem resultante, de
640 pixels de largura e 480 de comprimento (como uma unidade SmartLoop® TS real), é a de
quatro faixas idênticas de 25 metros de comprimento e 4,5 de largura cada uma. Os veículos
só circulam pela faixa direita, sempre pelo centro e o sentido do deslocamento é configurável
pelo usuário.
25 m
640 pixels
4,5 m
480 pixels
Observar que:
●
quando são indicadas posições na faixa (em metros), a posição 0,0 faz referência ao
extremo inferior da imagem.
●
quando são indicadas posições na imagem (em pixels), a posição 0,0 faz referência ao
extremo superior da imagem.
Para configurar a simulação, é preciso preparar um arquivo de simulação. Há um arquivo de
exemplo
disponível
no
diretório
de
instalação:
“Simulation/Simulation
Type/Data/Simulation.ini”
O arquivo de simulação conterá uma série de linhas que podem ser basicamente de dois tipos:
●
Comentários: todas as linhas que comecem com o caractere "#" serão consideradas
comentários e serão ignoradas pelo simulador.
●
Eventos da unidade: todas as linhas representarán movimentos de veículos.
O simulador permite simular a circulação de vários veículos. Estes, são manejados por um
identificador único (valor inteiro). Existem três tipos de veículos disponíveis, cada um deles em
dois modelos diferentes: passeio, furgão e caminhão.
Quercus Technologies
201
MANUAL DE PROGRAMAÇÃO
QuercusVL
Cada instrução faz referência a uma posição de um veículo em um determinado momento; ao
utilizar duas posições consecutivas de um mesmo veículo, o simulador interpreta o movimento.
Por exemplo, se indicamos que o veículo 'v1' está na posição 0 e que, depois de 3000
milésimos de segundos, ele está na posição 2000, o simulador entende que, durantes essas
duas instruções (3000 milésimos de segundos) o veículo se moveu a uma velocidade constante
desde a posição 0 até a posição 2000. .
6.2.1.1. Instruções
Cada instrução tem a seguinte estrutura:
tempo, tipo de veículo, id do veículo, posição
●
Milésimos de segundos que o simulador deve aguardar desde a instrução anterior até
sua execução. Quando a simulação alcança o último estado, reiniciar.
●
Tipo de veículo.
○
Car1: passeio, modelo 1.
○
Car2: passeio, modelo 2.
○
Van1: furgão, modelo 1.
○
Van2: furgão, modelo 2.
○
Truck 1: caminhão, modelo 1.
○
Truck 2: caminhão, modelo 2.
●
Identificador do veiculo (número inteiro).
●
Posição que o veículo deve ocupar no instante determinado; em milímetros. Faz
referência ao eixo vertical da imagem, ignorando a posição no eixo horizontal. Isso se
deve ao fato dos veículos sempre circularem pelo centro da faixa direita da imagem.
6.2.1.2. Exemplo
Exemplo de circulação de dois veículos. O primeiro parte da parte inferior da faixa com destino
à parte superior. Na metade do trajeto, ele aumenta sua velocidade. Posteriormente, o
segundo inicia a circulação da parte superior da imagem com destino à parte inferior.
#1000ms depois do início, é criado o veículo 1 (modelo Car2) na posição 0.
1000,Car2,1,0
#4000ms depois, o veículo 1 deve estar na posição 12500.
4000,Car2,1,12500
#1000ms depois, o veículo 1 deve estar na posição 35000 (fora da imagem).
1000,Car2,1,35000
#0ms depois, é criado o veículo 2 (modelo Van1) na posição 35000 (fora da imagem).
0,Van1,2,35000
#2000ms depois, o veículo 2 deve estar na posição -10000 (fora da imagem).
2000,Van1,2,-10000
Quercus Technologies
202
MANUAL DE PROGRAMAÇÃO
QuercusVL
6.3. Simulador
Existem duas versões do simulador, uma com interface gráfica "TSSimuGui" e outra na linha
de comandos "TSSimu". Ambas oferecem a mesma funcionalidade.
O simulador será executado abrindo-se um console (tanto no Windows como em Linux) e
colocando-se na pasta/Bin do diretório de instalação. A partir daí se chamará o simulador com
o seguinte comando:
●
TSSimu <tipoP> <FGlobales> <FDetectores> <FLog> <DPersistente> <FSimulación>
●
TSSimuGui
<tipoP>
<FGlobales>
<FDetectores>
<FLog>
<DPersistente>
<FSimulación>
Onde:
●
TSSimu: executável do simulador.
●
TSSimuGui: executável do simulador com interface gráfica.
●
TipoP: tipo de produto que representa a unidade simulada:
●
○
SmartLoopTS
○
SmartLoopTSPlus
FGlobales: caminho (absoluto ou relativo) para o arquivo que contém a configuração da
unidade a simular.
●
FDetectores:
caminho (absoluto ou relativo) para o arquivo de configuração dos
detectores.
●
FLog: caminho (absoluto ou relativo) para o arquivo onde se deixarão as informações
que o TSSimu crie.
●
DPersistente: diretório onde o simulador armazenará os resumos gerados (simula o
diretório Log/ da FTP da unidade).
Se nao existe, o simulador criará o diretório
"Resumos".
●
FSimulation: arquivo com o guia da simulação.
Quercus Technologies
203
MANUAL DE PROGRAMAÇÃO
QuercusVL
6.3.1. Interface gráfica
O simulador com interface gráfica (GUITS) tem todas as funcionalidades do simulador no modo
texto, mas permite saber a situação da simulação de uma forma muito mais visual. Além
disso, tem algumas funcionalidades adicionais como, por exemplo, poder modificar a
velocidade da simulação em tempo real, ou pausar totalmente a simulação.
É composto por uma só janela na qual se podem ver os campos seguintes:
●
Câmera ao vivo: representação gráfica da faixa virtual. Nela, podem ser vistos ao vivo
todos os movimentos que ocorrem na faixa.
●
Detectores: relação de todos os detectores instalados e tarefas ativadas em cada um
deles.
●
Cartão E/S:
○
●
Saídas: mostra a situação das saídas digitais. Vazia, desativada. Cheio, ativada.
Velocidade de simulação: permite controlar a velocidade da simulação, assim como
pausar e recomeçar a simulação. Observar que, embora se possa variar a velocidade,
isso não afeta as velocidades calculadas pela unidade, que continuam sendo as
mesmas.
●
Eventos: relação dos últimos eventos capturados pela unidade.
Quercus Technologies
204
MANUAL DE PROGRAMAÇÃO
QuercusVL
7. Simulador BirdWatch® RL (RLSimu)
Nesse apartado é decrito o simulador de uma unidade BirdWatch ® RL, que forma parte do
software cliente. Não é necessário dispor fisicamente de unidades BirdWatch® RL para seguir
os passos indicados nesta seção. Ver o manual de usuário de BirdWatch® RL para conhecer o
software cliente.
RLSimu simula um conjunto completo de eventos que gera um sistema BirdWatch® RL real.
Podem simular-se tantas unidades como se queira executando tantas instâncias do programa
como seja necessário. Através dele podemos verificar o funcionamento correto de todos os
programas elaborados para interagir com um sistema BirdWatch ®.
7.1. Configuration
Para configurar a unidade, devemos criar dois arquivos de configuração:
●
Arquivo de configuração geral.
●
Arquivo de detectores.
7.1.1. Arquivo de configuração geral
Nesse arquivo é indicada a configuração da unidade.
O arquivo equivale ao menu de configuração dos detectores de uma unidade BirdWatch ® RL
real, de tal forma que os parâmetros descritos a continuação fazem referência a cada uma dos
parâmetros disponíveis nesse menu. Consultar o manual de usuário do BirdWatch ® RL para
obter mais detalhes sobre ele.
A estrutura do arquivo é sempre a mesma, mas as variáveis nele descritas podem variar
dependendo do tipo de produto simulado. O arquivo é dividido em seções, definidas entre
colchetes, com a descrição de suas variáveis (uma por linha).
[Communications]
parameter1=value1
parameter2=value2
.
.
[Global]:
parameter1=value1
.
.
[Engine]
parameter1=value1
.
.
Quercus Technologies
205
MANUAL DE PROGRAMAÇÃO
QuercusVL
[IO]
parameter1=value1
.
.
[OSD]
parameter1=value1
.
.
Há um arquivo de exemplo disponível no diretório de instalação do software BirdWatch® RL:
“Simulation/Tipo de simulação/Data/Globals.ini”
7.1.2. Arquivo de detectores
Nesse arquivo são detalhados os detectores ativado na simulação. O arquivo equivale ao menu
de configuração dos detectores de uma unidade real BirdWatch ® RL, de tal forma que os
parâmetros descritos no arquivo fazem referência a cada uma dos parâmetros disponíveis
nesse menu. Ver o manual de usuário de BirdWatch® RL para mais detalhes.
A estrutura do arquivo é sempre a mesma, mas os parâmetros nele descritos podem variar
dependendo do tipo de detector simulado. O arquivo é dividido em seções, definidas entre
colchetes, com a descrição de suas variáveis (uma por linha).
[Global]:
NumDetectors=
NumTrafficLights=
[Detector1]
parameter1=value1
.
.
[Trafficlight1]
parameter1=value1
.
.
A primeira seção (Globals) indica o número de detectores e semáforos que serão descritos no
arquivo. O resto define cada umo dos detectores (Detector) e dos semáforos (TrafficLight).
Há um arquivo de exemplo disponível no diretório de instalação do software BirdWatch® RL:
“Simulation/Tipo de simulação/Data/Detectors.ini”
7.1.2.1. Seção [Globals]
●
NumDetectors: indica quantos detectores serão definidos no arquivo.
●
NumTrafficLights: número de semáforos configurados.
Quercus Technologies
206
MANUAL DE PROGRAMAÇÃO
QuercusVL
7.1.2.2. Seção DetectorX
Descrição do detector; o valor X indica o identificador de detector (de 1 até o total de
detectores definidos). A estrutura pode variar conforme o tipo de detector.
Parâmetros comuns
●
Id: identificador do detector.
●
Type: tipo de detector.
●
○
RED_LIGHT: detector de avançar no vermelho.
○
STOPPED_CAR: detector de veículo parado
AreIncidencesEnabled: indica se devem ser geradas incidências. 0, desativado; 1,
ativado.
●
SendIncidences:
indica se as incidências geradas devem ser enviadas ao sistema
central.
0, desativado; 1, ativado.
●
Coordinates: os quatro vértices que definem a posição do detector, seguindo o formato:
P1_x, P1_y, P2_x, P2_y, P3_x, P3_y, P4_x, P4_y. Os valores devem respeitar os
limites, tanto do eixo X (0..639) como do Y (0.439).
●
TrafficLightId: identificador único do semáforo. Se utilizar uma entrada digital (ver o
seguinte parâmetro) indica o número de entrada; se utilizar um semáforo configurado
indica seu identificador.
●
RedInput: indica se deverá utilizar uma entrada digital para obter informação sobre o
estado do sinal de proibição de avanço em vermelho. 0, detecção da imagem; 1, sinal
mediante a entrada digital.
Parâmetros adicionais de um detector de avanço com luz vermelha
●
IsVideoEnabled: indica se deve-se gerar um vídeo por cada incidência. Possíveis
valores: 1 ativada, 0 desativada. Somente disponível na simulação BirdWatch® RL Plus.
Observe que o vídeo gerado não corresponderá a cena simulada, mas será uma copia
do arquivo “VideoRedLight.avi” ou “VideoStoppedCar.avi”, ambos localizados no
diretório Data/Simulator/Images da pasta de instalação. Não obstante, as suas
características serão as mesmas que as de um vídeo gerado por uma unidade
BirdWatch® real.
●
PreVideoTimeMs: tempo que deve antecipar o início do vídeo desde a captura da
primeira fotografia; em milésimas de segundo. Somente disponível na simulação
BirdWatch® RL Plus.
●
PostVideoTimeMs: indica o tempo que deve-se atrasar a finalização do vídeo desde a
Quercus Technologies
207
MANUAL DE PROGRAMAÇÃO
captura da terceira fotografia; em milésimas de segundo.
QuercusVL
Somente disponível na
simulação BirdWatch® RL Plus.
●
CalculateMetrics: indica se devemos calcular a métrica. 0, desativado; 1, ativado.
●
Distance: indica a distância entre a horizontal da unidade e o detector, em milímetros.
●
Length: comprimento do detector; em milímetros.
●
Delay time: devolve o tempo mínimo que deve transcorrer entre a ativação do sinal de
proibição de avançar e a geração da incidência para que esta seja considerada válida.
●
AmberInput: indica qual entrada digital deve usar para o sinal da luz amarela Possíveis
valores: 0 e 1; em caso de não utilizar o sinal amarelo (o mesmo não é imprescindível
para a detecção dos incidentes) ou utilizar um semáforo previamente configurado,
indicar -1.
●
LastPictureDelayTimeMs: tempo de atraso para a captura da última incidência; em
milissegundos.
Parâmetros adicionais em um detector de veículo parado:
●
MaxStopTime: tempo máximo de parada permitido no detector; em milésimos de
segundos.
7.1.2.3. Seção TrafficLight_X
Descrição de um semáforo. O valor X indica o número de detector definido (de 1 até o total de
semáforos definidos).
●
Id: Identificador do semáforo (único entre os identificadores de todos os semáforos
instalados).
●
NumLights: número de luzes que tem o semáforo.
7.1.2.4. Seção LightX_Y
Descrição de uma luz pertencente a umo dos semáforos definidos. O valor X indica o número
de semáforo a que pertence; o valor Y indica o número de luz definida (de 1 até o total de
luzes definidas para esse semáforo). Essa seção refere-se só ao detectores BirdWatch ® RL.
●
Type: cor da luz.
○
RED: vermelho.
○
GREEN: verde.
○
AMBAR: âmbar.
○
OTHER: outra cor.
●
X: posição do centro da luz na imagem (no eixo horizontal); em pixels.
●
Y: posição do centro da luz na imagem (no eixo vertical); em pixels.
●
Radius: raio da luz; em pixels.
Quercus Technologies
208
MANUAL DE PROGRAMAÇÃO
QuercusVL
7.2. Configuração da simulação
Para isso, o simulador criou o conceito de “faixa virtual”. Essa faixa não é nada mais do que a
representação de uma faixa na qual é possível definir todos os eventos que nela ocorrem
(movimentos de veículos, mudanças nas entradas digitais, mudanças de situação no
semáforo).
A unidade simulada está focando quatro faixas na posição zenital. A imagem resultante, de
640 pixels de largura e 480 de comprimento (como uma unidade SmartLoop® real), é a de
quatro faixas idênticas de 25 metros de comprimento e 4,5 de largura cada uma. Os veículos
só circulam pela faixa direita, sempre pelo centro e o sentido do deslocamento é configurável.
25 m
640 pixels
4.5 m
480 pixels
Observar que:
●
quando são indicadas posições na faixa (em metros), a posição 0,0 faz referência ao
extremo inferior da imagem.
●
quando são indicadas posições na imagem (em pixels), a posição 0,0 faz referência ao
extremo superior da imagem.
A cena também dispõe de um semáforo de 3 luzes:
●
Luz vermelha: centro da luz na imagem (x, y): 614,42; 16 pixels de raio.
●
Luz âmbar: centro da luz na imagem (x, y): 614,84; 16 pixels de raio.
●
Luz verde: centro da luz na imagem (x, y): 614,126; 16 pixels de raio.
Quercus Technologies
209
MANUAL DE PROGRAMAÇÃO
QuercusVL
Para configurar a simulação, é preciso preparar um arquivo de simulação. Há um arquivo de
exemplo
disponível
no
diretório
de
instalação
do
software
“Simulation/Simulation
Type/Data/Simulation.ini”.
O arquivo de simulação conterá uma série de linhas que podem ser basicamente de dois tipos:
●
Comentários: todas as linhas que comecem com o caractere "#" serão consideradas
comentários e serão ignoradas pelo simulador.
●
Eventos: todas as linhas que representarem eventos (ou mudanças de situações) terão
um formato comum: .
Momento, Tipo de evento, Parâmetros do evento
●
Momento: momento no tempo (em milissegundos) em que ocorrerá o evento. O
tempo se calcula de forma relativa; cada evento indica quanto tempo depois do
anterior sucederá (o primeiro mede seu tempo a partir do início de execução do
simulador). Quando for ultrapassado o último evento da simulação, o simulador
voltará à situação inicial. É preciso levar em conta que a situação inicial da
simulação (antes do primeiro evento) representa uma unidade onde a faixa está
vazia, a situação dos componentes da unidade está correta e não há nenhum bit
de entrada ativado. Caso se queira partir de um estado diferente, basta
estabelecer no momento 0 os eventos necessários para conseguir o estado de
partida desejado. Quando a simulação chega ao último estado, reiniciará.
●
●
Tipo de evento: existem três tipos de evento:
○
Circulação de veículos.
○
Mudança de situação de uma das entradas digitais.
○
Alteração de estado do semáforo.
Parâmetros do evento: dependerão de cada tipo de evento (veja os seguintes
pontos).
7.2.1. Evento de veículo
O simulador permite simular a circulação de vários veículos. Estes, são manejados por um
identificador único (valor inteiro). Existem três tipos de veículos disponíveis, cada um deles em
dois modelos diferentes:
●
Veículo de passeio.
●
Furgão.
●
Caminhão.
Cada instrução faz referência a uma posição de um veículo em um determinado momento; ao
utilizar duas posições consecutivas de um mesmo veículo, o simulador interpreta o movimento.
. Por exemplo, se indicamos que o veículo 'v1' está na posição 0 e que, depois de 3000
milésimos de segundos, ele está na posição 2000, o simulador entende que, durantes essas
Quercus Technologies
210
MANUAL DE PROGRAMAÇÃO
QuercusVL
duas instruções (3000 milésimos de segundos) o veículo se moveu a uma velocidade constante
desde a posição 0 até a posição 2000.
7.2.1.1. Estrutura da instrução
●
Milésimos de segundos que o simulador deve aguardar desde a instrução anterior até
sua execução.
●
Tipo de veículo.
○
Car1: passeio, modelo 1.
○
Car2: passeio, modelo 2.
○
Van1: furgão, modelo 1.
○
Van2: furgão, modelo 2.
○
Truck 1: caminhão, modelo 1.
○
Truck 2: caminhão, modelo 2.
●
Identificador do veiculo (número inteiro).
●
Posição que o veículo deve ocupar no instante determinado; em milímetros. Faz
referência ao eixo vertical da imagem, ignorando a posição no eixo horizontal. Isso se
deve ao fato dos veículos sempre circularem pelo centro da faixa direita da imagem.
7.2.1.2. Exemplo
Exemplo de circulação de dois veículos. O primeiro parte da parte inferior da faixa com destino
à parte superior. Na metade do trajeto, ele aumenta sua velocidade. Posteriormente, o
segundo inicia a circulação da parte superior da imagem com destino à parte inferior.
#1000ms depois do início, é criado o veículo 1 (modelo Car2) na posição 0.
1000,Car2,1,0
#4000ms depois, o veículo 1 deve estar na posição 12500.
4000,Car2,1,12500
#1000ms depois, o veículo 1 deve estar na posição 35000 (fora da imagem).
1000,Car2,1,35000
#0ms depois, é criado o veículo 2 (modelo Van1) na posição 35000 (fora da imagem).
0,Van1,2,35000
#2000ms depois, o veículo 2 deve estar na posição -10000 (fora da imagem).
2000,Van1,2,-10000
7.2.2. Evento de entrada digital
O simulador permite controlar a situação das quatro entradas digitais de uma unidade. Essas
entradas têm o mesmo identificador das entradas de uma unidade real (0,1) e as mesmas
situações (0 inativa, 1 ativa).
A situação de cada uma das entradas será sempre aquela definida na última instrução
executada; por padrão, ela é inativa. .
Quercus Technologies
211
MANUAL DE PROGRAMAÇÃO
QuercusVL
7.2.2.1. Estrutura da instrução
●
Milésimos de segundos que o simulador deve aguardar desde a instrução anterior até
sua execução.
●
Tipo de evento.
○
I: entrada digital.
●
Identificador da entrada digital. Possíveis valores: 0,1
●
Situação da entrada digital.
○
0: inativo.
○
1: ativo.
7.2.2.2. Exemplo
Exemplo de ativação/desativação das entradas digitais de uma unidade. No início, são ativadas
ao mesmo tempo as entradas 1 e 2. A primeira permanece ativa durante 5 segundos e a
segunda só 3 segundos. Após 5 segundos (quando a entrada 1 for desativada), a entrada 2 é
ativada durante 1 segundo.
#0ms depois do início a entrada 0 é definida como ativa.
0,Input,0,1
#0ms depois do início a entrada 1 é definida como ativa.
0,Input,1,1
#3000ms depois do início a entrada 1 é desativada.
3000,Input,1,0
#2000ms depois, a entrada 1 é desativada.
2000,Input,0,0
#0ms depois, a entrada 1 é ativada.
0,Input,1,1
#1000ms depois, a entrada 1 é desativada.
1000,Input,1,0
7.2.3. Evento de semáforo
O simulador permite controlar o estado do semáforo da faixa. Este dispõe de quatro estados:
“luz verde ativa”, “luz âmbar ativa”, “luz vermelha ativa” e “nenhuma luz ativa”.
7.2.3.1. Estrutura da instrução
●
Milésimos de segundos que o simulador deve aguardar desde a instrução anterior até
sua execução.
●
Tipo de evento.
○
●
TrafficLight: mudança de situação do semáforo.
Luz ativa do semáforo:
○
Green: o semáforo tem ativa somente a luz verde.
○
Amber: o semáforo tem ativa somente a luz âmbar.
Quercus Technologies
212
MANUAL DE PROGRAMAÇÃO
QuercusVL
○
Red: o semáforo tem ativa somente a luz vermelha.
○
None: o semáforo não tem ativa nenhuma luz.
7.2.3.2. Exemplo
Exemplo de várias mudanças de situação do semáforo. No início a situação do semáforo é
"vermelho"; 3 segundos depois passa a "verde" durante 4 segundos para voltar ao “vermelho”,
primeiro passa pela luz âmbar durante 2 segundos.
#0ms depois do início é definida a situação do semáforo em vermelho.
0,TrafficLight,Red
#3000ms depois do semáforo passar para verde.
3000,TrafficLight,Green
#4000ms depois do semáforo passar para âmbar ou amarelo.
4000,TrafficLight,Amber
#2000ms depois do semáforo voltar para vermelho.
2000,TrafficLight,Red
7.3. Simulador
Existem duas versões do simulador, uma com interface gráfica "RLSimuGui" e outra na linha
de comandos "RLSimu". Ambas oferecem a mesma funcionalidade.
O simulador será executado abrindo-se um console (tanto no Windows como em Linux) e
colocando-se na pasta/Bin do diretório de instalação. A partir daí se chamará o simulador com
o seguinte comando:
●
RLSimu <tipoP> <FGlobales> <FDetectores> <FLog> <DPersistente> <FSimulación>
●
RLSimuGui
<tipoP>
<FGlobales>
<FDetectores>
<FLog>
<DPersistente>
<FSimulación>
Onde:
●
RLSimu: executável do simulador.
●
RLSimuGui: executável do simulador com interface gráfica.
●
TipoP: tipo de produto que representa a unidade simulada:
●
○
BirdWatchRL.
○
BirdWatchRLPlus.
FGlobales: caminho (absoluto ou relativo) para o arquivo que contém a configuração da
unidade a simular.
●
FDetectores:
caminho (absoluto ou relativo) para o arquivo de configuração dos
detectores e semáforos.
●
FLog: caminho (absoluto ou relativo) para o arquivo onde se deixarão as informações
que o RLSimu crie.
Quercus Technologies
213
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
DPersistente: diretório onde o simulador armazenará as incidências geradas (simula o
diretório Log/ da FTP da unidade). Se não existe, o simulador criará o diretório
"Incidências".
●
FSimulation: arquivo com o guia da simulação.
7.3.1. Interface gráfica
O simulador com interface gráfica tem todas as funcionalidades do simulador no modo texto,
mas permite saber a situação da simulação de uma forma muito mais visual. Além disso, tem
algumas funcionalidades adicionais como, por exemplo, poder modificar a velocidade da
simulação em tempo real, ou pausar totalmente a simulação. É composto por uma só janela na
qual se podem ver os campos seguintes:
●
Câmera ao vivo: representação gráfica da faixa virtual. Nela, podem ser vistos ao vivo
todos os movimentos que ocorrem na faixa.
●
Detectores: relação de todos os detectores instalados e tarefas ativadas em cada um
deles.
●
Unidade:
○
Eventos de E/S: indica se a unidade tem ativada a opção de enviar eventos quando
houver alterações nas entradas ou saídas digitais. Essa opção é configurada através
do arquivo Globals.ini, da biblioteca VL ou da ferramenta de diagnóstico.
●
Cartão E/S:
○
Saídas: situação das saídas digitais. Cheia, ativada. Vazia, desativada.
○
Entradas:
mostra
a
situação
das
entradas
digitais.
Cheia,
ativada.
Vazia,
desativada.
●
Velocidade de simulação: permite controlar a velocidade da simulação, assim como
pausar e recomeçar a simulação. Observar que, embora se possa variar a velocidade,
isso não afeta as velocidades calculadas pela unidade, que continuam sendo as
mesmas.
●
Eventos: relação dos últimos eventos capturados pela unidade.
Quercus Technologies
214
MANUAL DE PROGRAMAÇÃO
QuercusVL
7.4. Exemplo de simulação
Exemplo de simulação completa. Nela, circulam dois veículos (um caminhão e, posteriormente,
um de passeio), enquanto ocorrem mudanças nas entradas digitais e na situação do semáforo.
0ms
1000ms
Caminhã
o1
2000ms
3000ms
4000ms
6000ms
7000ms
circulando
Passeio2
circulando
Entrada0
ativa
Entrada1
Semáfor
o
5000ms
ativa
verde
âmbar
vermelho
#início. semáforo em verde.
0,TrafficLight,Green
#início, caminhão circulando desde a parte inferior da imagem.
0,Truck1,1,-10000
#depois de 1000ms, entrada digital 0 ativa.
1000,Input,0,1
#depois de 1000ms, entrada digital 1 ativa.
1000,Input,1,1
#ao mesmo tempo, o semáforo passa para amarelo.
0,TrafficLight,Amber
#tras 1000ms, passeio2 circulando desde a parte inferior da imagem.
1000,Car1,2,-10000
#depois de 1000ms, fim de circulação do caminhão1 na parte superior da imagem.
1000,Truck1,1,45000
#ao mesmo tempo, entrada digital 0 desativada.
0,Input,0,0
#ao mesmo tempo, o semáforo passa a vermelho.
0,TrafficLight,Red
Quercus Technologies
215
MANUAL DE PROGRAMAÇÃO
QuercusVL
#depois de 2000ms, entrada digital 1 desativada.
2000,Input,1,0
#depois de 2000ms, fim de circulação do carro passeio2 na parte superior da imagem.
2000,Car1,2,35000
Quercus Technologies
216
MANUAL DE PROGRAMAÇÃO
QuercusVL
8. Funções adicionais
As
unidades
QuercusVL
possuem
algumas
características
auxiliares
que
não
foram
mencionadas anteriormente:
●
Informações por FTP: permite recuperar as informações sobre os resumos e as
incidências (dados+imagens) diretamente a partir do servidor de FTP integrado à
unidade.
●
Encriptação de protocolo: permite encriptar o protocolo de comunicações.
8.1. Informações por FTP
A unidade armazena os resumos e incidências geradas no servidor de FTP integrado. Para ter
acesso aos dados:
●
ftp://<ip_de_la_unidade>/Log/Incidences
●
ftp://<ip_de_la_unidade>/Log/Summaries
Para cada resumo é armazenado um arquivo no formato XML com os dados; para cada
incidência, é gerado um arquivo no formato XML com os dados e dois o três arquivos jpg
(dependendo do tipo de incidência) com as imagens correspondentes e um arquivo AVI com o
vídeo correspondente (só por as unidades BirdWatch ®). As imagens estão assinadas
digitalmente para poder detectar possíveis manipulações posteriores.
Deve-se levar em conta que os dados armazenados formam dois históricos (resumos e
incidências) de comprimento limitado, motivo pelo qual, quando o disco de dados estiver
cheio, os mais antigos serão automaticamente eliminados. Se quiser modificar o espaço
disponível para cada um dos históricos, ver o manual de usuário do SmartLoop ® ou
BirdWatch®.
Em caso de ativar a ferramenta “Integration” os dados recolhidos também são armazenados
no servidor de FTP integrado. Para acessá-los:
●
ftp://<ip_de_la_unidad>/Log/Integration/SetX (onde 'X' é o identificador do Set).
Ver o manual de usuário de BirdWatch ® para saber mais sobre a ferramenta Integration.
Observe que, quando se trabalha com as comunicações criptografadas, não é possível acessar
o histórico de resumos ou incidências mediante o servidor FTP. Nesse caso deve utilizar o
servidor SFTP. Ver 8.2.2. Servidor de SFTP.
Quercus Technologies
217
MANUAL DE PROGRAMAÇÃO
QuercusVL
8.1.1. Arquivo XML
8.1.1.1. Resumo de presença
O nome do arquivo xml é <SummaryId>.xml, onde “SummaryId” é o identificador do resumo,
formatado com zeros à esquerda até completar oito dígitos. O conteúdo do arquivo é o
seguinte:
●
Summary: contém todos os dados do resumo.
●
Unidade: identificador único da unidade.
●
Detector: identificador do detector.
●
DetectorType: tipo de detector; PRESENCE para um detector de presença.
●
Período: período durante o qual os dados foram coletados.
●
●
From: início do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
To: final do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
●
Volume: total de veículos detectados.
●
AvgHeadway: período médio, separação média entre veículos; em segundos.
Exemplo de arquivo XML:
<?xml version="1.0" encoding="UTF-8"?>
<Summary>
<Unit>1</Unit>
<Detector>1</Detector>
<DetectorType>PRESENCE</DetectorType>
<Period>
<From>
<Seconds>1273152323</Seconds>
<Date>6/5/2010</Date>
<Time>15:25:23</Time>
</From>
<To>
<Seconds>1273152623</Seconds>
<Date>6/5/2010</Date>
<Time>15:30:23</Time>
</To>
</Period>
<Volume>33</Volume>
<AvgHeadway>8</AvgHeadway>
</Summary>
8.1.1.2. Resumo de fila
O nome do arquivo xml é <SummaryId>.xml, onde “SummaryId” é o identificador do resumo,
Quercus Technologies
218
MANUAL DE PROGRAMAÇÃO
formatado com zeros à esquerda até completar oito dígitos. .
QuercusVL
O conteúdo do arquivo é o
seguinte:
●
Summary: contém todos os dados do resumo.
●
Unidade: identificador único da unidade.
●
Detector: identificador do detector.
●
DetectorType: tipo de detector; QUEUE para um detector de fila.
●
Período: período durante o qual os dados foram coletados.
●
●
●
From: início do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
To: final do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
DistributionsOccupation: distribuição da ocupação da fila.
●
Number: número de variações que compõem a distribuição.
●
UnknownPercentage: porcentagem de tempo que não foi possível determinar
a ocupação da fila.
●
RangeX: variação <X>, onde X é o identificador da variação a partir de 1.
●
InferiorLimit: limite inferior da coleção.
●
SuperiorLimit: limite superior da coleção (não incluído). Se for infinito,
seu valor será -1.
●
Porcentagem: porcentagem associada à variação.
Para mais informação sobre a distribuição de ocupação, consulte o manual do usuário de
SmartLoop®.
Exemplo de arquivo XML:
<?xml version="1.0" encoding="UTF-8"?>
<Summary>
<Unit>1</Unit>
<Detector>1</Detector>
<DetectorType>QUEUE</DetectorType>
<Period>
<From>
<Seconds>1273153006</Seconds>
<Date>6/5/2010</Date>
<Time>15:36:46</Time>
</From>
<To>
<Seconds>1273153366</Seconds>
<Date>6/5/2010</Date>
Quercus Technologies
219
MANUAL DE PROGRAMAÇÃO
QuercusVL
<Time>15:42:46</Time>
</To>
</Period>
<DistributionOccupation>
<Number>6</Number>
<UnknownPercentage>0</UnknownPercentage>
<Range1>
<InferiorLimit>0</InferiorLimit>
<SuperiorLimit>20</SuperiorLimit>
<Percentage>29</Percentage>
</Range1>
<Range2>
<InferiorLimit>20</InferiorLimit>
<SuperiorLimit>40</SuperiorLimit>
<Percentage>15</Percentage>
</Range2>
<Range3>
<InferiorLimit>40</InferiorLimit>
<SuperiorLimit>60</SuperiorLimit>
<Percentage>17</Percentage>
</Range3>
<Range4>
<InferiorLimit>60</InferiorLimit>
<SuperiorLimit>80</SuperiorLimit>
<Percentage>16</Percentage>
</Range4>
<Range5>
<InferiorLimit>80</InferiorLimit>
<SuperiorLimit>100</SuperiorLimit>
<Percentage>11</Percentage>
</Range6>
<Range6>
<InferiorLimit>100</InferiorLimit>
<SuperiorLimit>-1</SuperiorLimit>
<Percentage>21</Percentage>
</Range6>
</DistributionOccupation>
</Summary>
8.1.1.3. Resumo da velocidade
O nome do arquivo xml é <SummaryId>.xml, onde “SummaryId” é o identificador do resumo,
formatado com zeros à esquerda até completar oito dígitos. O conteúdo do arquivo é o
seguinte:
●
Summary: contém todos os dados do resumo.
●
Unidade: identificador único da unidade.
●
Detector: identificador do detector.
●
DetectorType: tipo de detector; SPEED para um detector de velocidade.
●
Período: período durante o qual os dados foram coletados.
●
●
From: início do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
To: final do período.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
Quercus Technologies
220
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
Time: hora expressa no formato hh:mm:ss (horas:minutos:segundos).
●
Volume: total de veículos detectados.
●
AvgHeadway: período médio, separação média entre veículos; em segundos.
●
AvgSpeed: velocidade média; em quilômetros por hora. Se não foi possível
calcular a velocidade para todos os veículos, seu valor será -1.
●
AvgLength: comprimento médio dos veículos; em milímetros. Se não for possível
calcular o comprimento de todos os veículos, o seu valor será -1.
●
DistributionsSpeed: distribuição das velocidades aproximadas dos veículos
detectados.
●
Number: número de variações que compõem a distribuição.
●
UnknownPercentage:
porcentagens dos valoreis que não foi possível
analisar.
●
RangeX: variação <X>, onde X é o identificador da variação a partir de 1.
●
InferiorLimit: limite inferior da coleção; em quilômetros por hora.
●
SuperiorLimit: limite superior da coleção (não incluído); em quilômetros
por hora. Se for infinito, seu valor será -1.
●
DistributionsLength: distribuição dos comprimentos aproximados dos veículos
detectados.
●
Number: número de variações que compõem a distribuição.
●
UnknownPercentage: porcentagens dos valores que não foi possível analisar.
●
RangeX: variação <X>, onde X é o identificador da variação a partir de 1.
●
InferiorLimit: limite inferior da coleção (não incluído); em milímetros.
●
SuperiorLimit: limite superior da coleção (não incluído); em milímetros.
Se é infinito, suo valor será -1.
●
Porcentagem: porcentagem associada à coleção.
Para mais informações sobre a distribuição das velocidades ou dos comprimentos, consulte o
manual do usuário de SmartLoop®.
<?xml version="1.0" encoding="UTF-8"?>
<Summary>
<Unit>1</Unit>
<Detector>1</Detector>
<DetectorType>SPEED</DetectorType>
<Period>
<From>
<Seconds>1273153434</Seconds>
<Date>6/5/2010</Date>
<Time>15:43:54</Time>
</From>
<To>
<Seconds>1273153794</Seconds>
<Date>6/5/2010</Date>
Quercus Technologies
221
MANUAL DE PROGRAMAÇÃO
QuercusVL
<Time>15:49:54</Time>
</To>
</Period>
<Volume>43</Volume>
<AvgHeadway>8</AvgHeadway>
<AvgSpeed>39</AvgSpeed>
<AvgLength>7069</AvgLength>
<DistributionSpeed>
<Number>3</Number>
<UnknownPercentage>0</UnknownPercentage>
<Range1>
<InferiorLimit>0</InferiorLimit>
<SuperiorLimit>50</SuperiorLimit>
<Percentage>20</Percentage>
</Range1>
<Range2>
<InferiorLimit>50</InferiorLimit>
<SuperiorLimit>100</SuperiorLimit>
<Percentage>27</Percentage>
</Range2>
<Range3>
<InferiorLimit>100</InferiorLimit>
<SuperiorLimit>-1</SuperiorLimit>
<Percentage>53</Percentage>
</Range3>
</DistributionSpeed>
<DistributionLength>
<Number>3</Number>
<UnknownPercentage>2</UnknownPercentage>
<Range1>
<InferiorLimit>0</InferiorLimit>
<SuperiorLimit>6000</SuperiorLimit>
<Percentage>67</Percentage>
</Range1>
<Range2>
<InferiorLimit>6000</InferiorLimit>
<SuperiorLimit>10000</SuperiorLimit>
<Percentage>22</Percentage>
</Range2>
<Range3>
<InferiorLimit>10000</InferiorLimit>
<SuperiorLimit>-1</SuperiorLimit>
<Percentage>9</Percentage>
</Range3>
</DistributionLength>
</Summary>
8.1.1.4. Incidência de avançar no vermelho.
●
O nome do arquivo xml é <IncidenceId>.xml, onde “IncidenceId” é o identificador da
incidência, formatado com zeros à esquerda até formar oito dígitos. O conteúdo do
arquivo é o seguinte:
●
Incidence: contém todos os dados da incidência.
●
Id: identificador da incidência.
●
Type: tipo de
incidência.
RED_LIGHT_VIOLATION para uma incidência de
avançar no vermelho.
●
Unidade: identificador único da unidade.
●
Detector: identificador do detector.
●
Description(1,2,3,4): descrições da unidade; somente as descrições definidas
Quercus Technologies
222
MANUAL DE PROGRAMAÇÃO
QuercusVL
serão exibidas.
●
DetectorType: tipo de detector; RED_LIGHT para um detector de passo no
vermelho.
●
Images: informações sobre as imagens capturadas:
●
Number: número de imagens capturadas.
●
ImageX: imagem <X>, onde X é o identificador da imagem.
●
FileName: nome do arquivo da imagem.
●
TimeStamp: momento em que a imagem foi capturada.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
USeconds: microssegundos desde o segundo Seconds (campo
anterior). Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
Video: informação acerca do vídeo capturado (se a captura de vídeo está
ativada).
●
Filename: nome do arquivo do vídeo.
●
InitTimestamp: momento de inicio da captura do vídeo.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
USeconds: microssegundos desde o segundo Seconds (campo anterior).
Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
EndTimestamp: momento de finalização da captura do vídeo.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
USeconds: microssegundos desde o segundo Seconds (campo anterior).
Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
Duration: duração do vídeo; em milésimos de segundo.
●
Width: largo da imagem do vídeo; em pixels. Incidence: todos os dados da
incidência.
●
●
Height: alto da imagem do vídeo; em pixels.
●
Framerate: imagens por segundo do vídeo.
Speed: velocidade aproximada de circulação do veículo que gerou a incidência;
Quercus Technologies
223
MANUAL DE PROGRAMAÇÃO
QuercusVL
em quilômetros por hora. Se não for possível calcular a velocidade, o seu valor
será -1.
●
ElapsedTime: tempo transcorrido desde a ativação da sinal de proibição de
avanço até a geração da incidência; em milésimos de segundos.
●
AmberLightTime: tempo com o sinal âmbar ativo antes da ativação do sinal de
proibição de avanço que gerou a incidência; em milissegundos.
●
DelayTime: tempo mínimo que deve transcorrer, desde a ativação do sinal de
proibição de avançar até a geração da incidência, para que esta seja considerada
válida; em milésimos de segundos. Configurado pelo usuário.
<?xml version="1.0" encoding="UTF-8"?>
<Incidence>
<Id>3</Id>
<Type>RED_LIGHT_VIOLATION</Type>
<Unit>1</Unit>
<Description1>Lane1</Description1>
<Detector>1</Detector>
<DetectorType>RED_LIGHT</DetectorType>
<Images>
<Number>3</Number>
<Image1>
<FileName>00000003_1.jpg</FileName>
<TimeStamp>
<Seconds>1276610126</Seconds>
<USeconds>80133</USeconds>
<Date>15/6/2010</Date>
<Time>15:55:26.80133</Time>
</TimeStamp>
</Image1>
<Image2>
<FileName>00000003_2.jpg</FileName>
<TimeStamp>
<Seconds>1276610126</Seconds>
<USeconds>628909</USeconds>
<Date>15/6/2010</Date>
<Time>15:55:26.628909</Time>
</TimeStamp>
</Image2>
<Image3>
<FileName>00000003_3.jpg</FileName>
<TimeStamp>
<Seconds>1276610127</Seconds>
<USeconds>99290</USeconds>
<Date>15/6/2010</Date>
<Time>15:55:27.99290</Time>
</TimeStamp>
</Image3>
</Images>
<Video>
<FileName>00000003.avi</FileName>
<IniTimeStamp>
<Seconds>1276610126</Seconds>
<USeconds>80133</USeconds>
<Date>15/6/2010</Date>
<Time>15:55:26.80133</Time>
</IniTimeStamp>
<EndTimeStamp>
<Seconds>1276610127</Seconds>
<USeconds>99290</USeconds>
<Date>15/6/2010</Date>
<Time>15:55:27.99290</Time>
</EndTimeStamp>
Quercus Technologies
224
MANUAL DE PROGRAMAÇÃO
QuercusVL
<Duration>1019</Duration>
<Width>640</Width>
<Height>480</Height>
<Framerate>13</Framerate>
</Video>
<Speed>15</Speed>
<ElapsedTime>32064</ElapsedTime>
<AmberLightTime>3426</AmberLightTime>
<DelayTime>100</DelayTime>
</Incidence>
8.1.1.5. Incidência de veículo parado
O nome do arquivo xml é <IncidenceId>.xml, onde “IncidenceId” é o identificador da
incidência, formatado com zeros à esquerda até formar oito dígitos. O conteúdo do arquivo é o
seguinte:
●
Incidence: contém todos os dados da incidência.
●
Id: identificador da incidência.
●
Type: tipo de
incidência. STOPPED_CAR_VIOLATION para uma incidência de
veículo parado.
●
Unidade: identificador único da unidade.
●
Description(1,2,3,4): descrições da unidade; somente as descrições definidas
serão exibidas.
●
Detector: identificador do detector.
●
DetectorType: tipo de detector; STOPPED_ CAR para um detector de veículo
parado.
●
Images: informações sobre as imagens capturadas:
●
Number: número de imagens capturadas.
●
ImageX: imagem <X>, onde X é o identificador da imagem.
●
FileName: nome do arquivo da imagem.
●
TimeStamp: momento em que a imagem foi capturada.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
USeconds: microssegundos desde o segundo Seconds (campo
anterior). Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
Video: informação acerca do vídeo capturado (se a captura de vídeo está
ativada).
●
Filename: nome do arquivo do vídeo.
●
InitTimestamp: momento de inicio da captura do vídeo.
●
Quercus Technologies
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
225
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
USeconds: microssegundos desde o segundo Seconds (campo anterior).
Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
EndTimestamp: momento de finalização da captura do vídeo.
●
Seconds: expresso em segundos desde as 00:00h de 01-01-1970.
●
USeconds: microssegundos desde o segundo Seconds (campo anterior).
Para uma definição maior do momento.
●
Date: data expressa no formato aaaa-mm-dd (ano-mês-dia).
●
Time:
hora
expressa
no
formato
hh:mm:ss.us
(horas:minutos:segundos:microssegundos).
●
Duration: duração do vídeo; em milésimos de segundo.
●
Width: largo da imagem do vídeo; em pixels. Incidence: todos os dados da
incidência.
●
●
Height: alto da imagem do vídeo; em pixels.
●
Framerate: imagens por segundo do vídeo.
MaxStopTime: tempo máximo permitido para um veículo parado com o sinal de
proibição de avançar ativo configurado; em milésimos de segundos.
●
TotalStoppedTime: tempo total da parada do veículo (desde o momento inicial
da parada, ainda com o sinal de proibição de avanço ativo, até a retomada da
movimentação); em milissegundos.
<?xml version="1.0" encoding="UTF-8"?>
<Incidence>
<Id>2</Id>
<Type>STOPPED_CAR</Type>
<Unit>1</Unit>
<Description1>Lane1</Description1>
<Detector>1</Detector>
<DetectorType>STOPPED_CAR</DetectorType>
<Images>
<Number>3</Number>
<Image1>
<FileName>00000002_1.jpg</FileName>
<TimeStamp>
<Seconds>1340701739</Seconds>
<USeconds>476000</USeconds>
<Date>26/6/2012</Date>
<Time>11:08:59.476000</Time>
</TimeStamp>
</Image1>
<Image2>
<FileName>00000002_2.jpg</FileName>
<TimeStamp>
<Seconds>1340701741</Seconds>
<USeconds>984000</USeconds>
<Date>26/6/2012</Date>
<Time>11:09:01.984000</Time>
Quercus Technologies
226
MANUAL DE PROGRAMAÇÃO
QuercusVL
</TimeStamp>
</Image2>
<Image3>
<FileName>00000002_3.jpg</FileName>
<TimeStamp>
<Seconds>1340701746</Seconds>
<USeconds>316000</USeconds>
<Date>26/6/2012</Date>
<Time>11:09:06.316000</Time>
</TimeStamp>
</Image3>
</Images>
<Video>
<FileName>00000002.avi</FileName>
<IniTimeStamp>
<Seconds>1340701738</Seconds>
<USeconds>976000</USeconds>
<Date>26/6/2012</Date>
<Time>11:08:58.976000</Time>
</IniTimeStamp>
<EndTimeStamp>
<Seconds>1340701739</Seconds>
<USeconds>976000</USeconds>
<Date>26/6/2012</Date>
<Time>11:08:59.976000</Time>
</EndTimeStamp>
<Duration>1000</Duration>
<Width>640</Width>
<Height>480</Height>
<Framerate>1</Framerate>
</Video>
<MaxStopTime>2500</MaxStopTime>
<TotalStoppedTime>7828</TotalStoppedTime>
</Incidence>
8.1.2. Arquivo JPEG
O nome do arquivo jpeg de uma incidência é /Log/Incidence/<IncidenceId_ImageId>.jpg,
onde “IncidenceId” é o identificador da incidência, formatado com zeros à esquerda até formar
oito dígitos, e “ImageId” é o identificador da captura dentro da incidência. O arquivo contém,
além da imagem da incidência, seus dados do reconhecimento na forma de campos de
comentário do arquivo JPEG. Estes dados também são empregados no cálculo da assinatura
digital da imagem, desta forma ficam ligados os dados da incidência com a imagem e o
momento preciso em que foi efetuada de uma forma na qual se pode demonstrar que nenhum
deles foi manipulado.
8.1.3. Arquivo AVI
O nome do arquivo avi de uma incidência é /Log/Incidence/<IncidenceId>.avi, onde
“IncidenceId” é o identificador da incidência, formatado com zeros à esquerda até formar oito
dígitos. O arquivo contém:
●
Vídeo da incidência codificado em MPEG através do códec com fourcc FMP4.
●
Dados da incidência em forma de cadeias de texto; estes são escritos ao inicio do
AviChunk JUNK. .
●
Firma digital da totalidade do arquivo. Dessa forma ficam ligados aos dados da
Quercus Technologies
227
MANUAL DE PROGRAMAÇÃO
QuercusVL
incidência com o vídeo e o momento exato que foi realizado, de maneira que é possível
demostrar que nenhum deles foram manipulados.
A mesma é descrita ao final do AviChunk JUNK.
8.2. Criptografia de protocolo
Para que a unidade só envie e receba mensagens criptografadas, deve ser preenchida a
variável “Communications/Password” de seu sistema de configuração. Para que a biblioteca de
desenvolvimento também envie e receba somente mensagens criptografadas, deve ser
preenchida a variável “Network/Password” de seu arquivo de configuração.
A biblioteca de desenvolvimento não pode administrar unidades que tiverem criptografia
ativada juntamente com unidades com criptografia desativada; tampouco pode fazê-lo com
unidades que possuam senhas de criptografia diferentes.
No entanto, tudo isso pode ser feito utilizando-se diretamente o protocolo de comunicação.
8.2.1. Formato de encriptação
O algoritmo de encriptação usado é AES em sua variante AES-128, AES-192º AES-256
dependendo do comprimento da senha empregada. O modo de encriptação de blocos é CBC
(Cipher-bloco chaining) com um vetor de inicialização incluído na própria mensagem.
Uma mensagem criptografada tem o seguinte formato:
Original message
AES
4
16
16*n
OriginalLen
IV
Encryted message + padding:
Onde:
●
Original message: mensagem original.
●
OriginalLem: tamanho em bytes da mensagem original. Este campo é necessário
porque a encriptação AES faz uso sempre de blocos de 16 bytes com os quais o
tamanho da mensagem original fica arredondado ao seguinte inteiro múltiplo de 16.
●
IV: vetor de incialização usado na codificação da mensagem.
●
Encryted message + padding: mensagem original encriptada + bytes necessários para
fazê-la de comprimento múltiplo de 16.
Quercus Technologies
228
MANUAL DE PROGRAMAÇÃO
QuercusVL
O tipo de codificação AES usado dependerá do comprimento da senha; para senhas de 16
caracteres ou menos se usará AES-128, para senhas entre 17 e 24 caracteres se usará AES192 e para senhas entre 25 e 32 caracteres se usará AES-256. A chave AES se obterá com a
senha e bytes em zero até preencher o comprimento total da chave.
1-16
AES-128
Password
Padding(000...)
key
17-24
AES-192
Password
Padding(000...)
key
25-32
AES-256
Password
Padding(000...)
key
Nas pastas "Src" e "Include" da pasta de instalação, encontrará os seguintes arquivos que
implementam tal encriptação:
●
aes.c e aes.h: implementação de baixo nível da codificação AES.
Quercus Technologies
229
MANUAL DE PROGRAMAÇÃO
●
QuercusVL
CritoTools.c i CritoTools.h: funções para encriptar e desencriptar um array de bytes.
Utiliza as funções contidas em aes.c e aes.h
●
UDTools.c e UDTools.h: funções de comunicação UDP. Utiliza as funções contidas em
CryptoTools.c e CryptoTools.h para criptografas as comunicações.
Todos os exemplos de programação que utilizam a biblioteca de desenvolvimento podem usar
a encriptação de protocolo automaticamente, bastando definir “Communications/Password” em
seus arquivos de configuração.
8.2.2. Servidor de SFTP
Quando utilizar comunicações criptografadas o acesso as incidências mediante FTP fica
desabilitado. No seu lugar é habilitado o acesso mediante SFTP. Esse permite criptografias nas
comunicações, para aumentar a segurança e confidencialidade do histórico de relatórios e
incidências.
Para ter acesso aos dados: :
●
sftp://<ip_de_la_unidade>/Log/Incidences
●
sftp://<ip_de_la_unidade>/Log/Summaries
Em caso de ativar a ferramenta Integration:
●
sftp://<ip_de_la_unidad>/Log/Integration/SetX (onde 'X' é o identificador do Set).
Quercus Technologies
230
MANUAL DE PROGRAMAÇÃO
QuercusVL
9. Apêndice F: suporte
Se tiver qualquer dúvida na configuração ou no uso do QuercusVL®, não hesite em entrar em
contato com nosso departamento de Suporte.
●
USA: +1, 201, 227 2020.
●
Brasil e Latam: +55 (11) 2614 3006 (Ramal 21)
●
EMEA e Asia: +34 977 300 377
O por correio eletrônico a: [email protected]
Visite nossas páginas web:
●
www.quercus.biz
●
www.quercus-technologies.com
●
www.quercus.com.br
Quercus Technologies
231