Exemplo da API Micro Aimsun Next 1¶
Exemplo 1: Obtendo Informações sobre Veículos¶
Este exemplo permite obter as informações de cada veículo dentro do sistema para cada passo de simulação.
Versão C++¶
#include "AKIProxie.h"
#include "CIProxie.h"
#include "ANGConProxie.h"
#include "AAPI.h"
#include <stdio.h>
// Os procedimentos podem ser modificados pelo usuário
char astring[128];
int AAPILoad()
{   
    return 0;
}
int AAPIInit()
{
    return 0;
}
int AAPISimulationReady()
{
    return 0;
}
int AAPIManage(double time, double timeSta, double timeTrans, double acycle)
{
    InfVeh infVeh;
    int nba = AKIInfNetNbSectionsANG();
    for(int i=0; i<nba;i++){
        int id = AKIInfNetGetSectionANGId(i);
        int nb = AKIVehStateGetNbVehiclesSection(id,true);
        for (int j=0; j<nb;j++){
            infVeh = AKIVehStateGetVehicleInfSection(id,j);
            snprintf(astring, 128, "Veículo %d , Seção %d , Faixa %d, PosiçãoAtual %f, VelocidadeAtual %f
",infVeh.idVeh, infVeh.idSection, infVeh.numberLane, infVeh.CurrentPos, infVeh.CurrentSpeed);
            AKIPrintString(astring);
        }
    }
    int nbj = AKIInfNetNbJunctions();
    for( int i=0; i<nbj;i++){
        int id = AKIInfNetGetJunctionId(i);
        int nb = AKIVehStateGetNbVehiclesJunction(id);
        for ( int j=0; j<nb;j++){
            infVeh = AKIVehStateGetVehicleInfJunction(id,j);
            snprintf(astring, 128, "Veículo %d , Nó %d , De %d, Para %d, PosiçãoAtual %f, VelocidadeAtual %f
", infVeh.idVeh, infVeh.idJunction, infVeh.idSectionFrom, infVeh.idSectionTo, infVeh.CurrentPos, infVeh.CurrentSpeed);
            AKIPrintString(astring);
        }
    }
    return 0;
}
int AAPIPostManage(double time, double timeSta, double timeTrans, double acycle)
{
    return 0;
}
int AAPIFinish()
{
    return 0;
}
int AAPIUnLoad()
{
    return 0;
}
Versão Python¶
from AAPI import *
def AAPILoad():
    return 0
def AAPIInit():
    return 0
def AAPISimulationReady():
    return 0
def AAPIManage(time, timeSta, timTrans, SimStep):
    nba = AKIInfNetNbSectionsANG()
    for i in range(nba):
        id = AKIInfNetGetSectionANGId(i)
        nb = AKIVehStateGetNbVehiclesSection(id,True)
        for j in range(nb):
            infVeh = AKIVehStateGetVehicleInfSection(id,j)
            astring = "Veículo " + str(infVeh.idVeh) + ", Seção " + str(infVeh.idSection) + " , Faixa " + str(infVeh.numberLane) + ", PosiçãoAtual " + str(infVeh.CurrentPos) + ", VelocidadeAtual " + str(infVeh.CurrentSpeed)
            AKIPrintString(astring)
    nbj = AKIInfNetNbJunctions()
    for i in range(nbj):
        id = AKIInfNetGetJunctionId(i)
        nb = AKIVehStateGetNbVehiclesJunction(id)
        for j in range(nb):
            infVeh = AKIVehStateGetVehicleInfJunction(id,j)
            astring = "Veículo " + str(infVeh.idVeh) + ", Nó " + str(infVeh.idJunction) + " , De " +  str(infVeh.idSectionFrom) + ", Para " + str(infVeh.idSectionTo) + ", PosiçãoAtual " + str(infVeh.CurrentPos) + ", VelocidadeAtual " + str(infVeh.CurrentSpeed)
            AKIPrintString(astring)
    return 0
def AAPIPostManage(time, timeSta, timTrans, SimStep):
    return 0
def AAPIFinish():
    return 0
def AAPIUnLoad():
    return 0
def AAPIEnterVehicle(idveh,idsection):
    return 0
def AAPIExitVehicle(idveh,idsection):
    return 0