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