Skip to content

Funções do script

Edison Neto edited this page Nov 30, 2018 · 4 revisions

Funções de utilidade

Documentando a atividade no log e no debugger

Por diversas vezes há a necessidade de escrevermos no log e no debugger a mesma mensagem, com o horário. Devido a essa necessidade há uma função implementada que abre o arquivo do log do dia e escreve, tanto do arquivo quanto no debugger, a mensagem dada seguida pelo horário daquele exato momento.

function WriteLog(text)
{
    var filename = setFileName();
    try {
        TextFile.openForAppend(filename);
        var formattedTime = getFormattedTime();
        TextFile.write(text + " " + formattedTime + "\n");
        print(text + " " + formattedTime);
        TextFile.close();
    } catch (texterr) {
        PrintAndOut("Erro ao editar o log.\n" + texterr.message);
    }
}

Escrevendo no debugger e no RunJavaScript

Para escrever no debugger e na janela RunJavaScript a mesma mensagem em tempo de execução.

function PrintAndOut(text)
{
    print(text);
    RunJavaScriptOutput.writeLine(text);
}

Pegando a ascensão reta e a declinação do objeto

Pega a ascensão reta e a declinação de algum objeto qualquer dentro do limite preestabelecido.

function GetRADec(object)
{
    if (!Sky6IsConnected()) {
        WriteLog("Erro de conexao tentando executar a funcao GetRADec");
        return false;
    }

    try {
        sky6StarChart.Find(object);
    } catch (finderr) {
        WriteLog("Erro durante o find.\n" + finderr.message + " ");
        return false;
    }

    sky6ObjectInformation.Property(54);
    var targetRA = sky6ObjectInformation.ObjInfoPropOut;
    sky6ObjectInformation.Property(55);
    var targetDec = sky6ObjectInformation.ObjInfoPropOut;

    return {"ra": targetRA, "dec": targetDec};
}

Funções de controle

Conexão

Inicia a conexão entre o SkyX e a montagem e cria o arquivo de log do dia. Essa função deve ser executada quando o SkyX não está conectado e for exatamente 11:00(UT), ou o horário escolhido para o início da execução. Esse processo é muito rápido comparado com outras operações de controle, demorando não mais de 1 segundo.

function Connect_c()
{
    var time = getTimeNow();
    var formattedTime = getFormattedTime();

    PrintAndOut("Conectado as " + formattedTime);
    ConnectTelescope();

    var filename = setFileName();
    TextFile.createNew(filename);
    TextFile.write(String(time.day) + "/" + String(time.month) + "/" + String(time.year) + "\n");
    TextFile.write("Conectado as " + formattedTime + "\n");
    TextFile.close();
}

Inicialização

Inicia o rastreamento do sol. Essa função dever ser executada quando o SkyX está conectado e for exatamente 11:00(UT). Pelo fato do processo de conexão ser muito rápido, não há necessidade de iniciar 1 ou 2 minuto(s) depois da conexão.

function Initialize_c()
{
    sky6RASCOMTele.FindHome();
    var propriedade = GetRADec("Sun");

    WriteLog("Iniciou o slew as");
    SlewTelescopeTo(propriedade.ra, propriedade.dec, "Sun");

    WriteLog("Iniciou o rastreamento as");
}

Flip

Faz o flip, basicamente reiniciando o rastreamento. A única diferença de código entre a função Initialize_c, é a inutilidade da função FindHome, visto que sua execução somente é necessária uma única vez por dia (desconsiderando problemas de conexão).

function Flip_c()
{
    var propriedade = GetRADec("Sun");
    WriteLog("Iniciou o slew(flip) as");
    SlewTelescopeTo(propriedade.ra, propriedade.dec, "Sun");

    WriteLog("Completou o flip as");
}

Desligamento

Desliga o rastreamento primeiro e depois vai para a posição de parking, desconectando logo em seguida. É executada quando o SkyX está conectado e já passou das 20:00(UT).

function TurnOff_c()
{
    SetTelescopeTracking(0, 1, 0, 0);
    WriteLog("Desligou o rastreamento as");

    ParkTelescope();
    WriteLog("Desconectado as");
}

Reconexão

Reconecta o telescópio e reinicia o rastreamento. Também executa a função FindHome, já que se o script for (re)iniciado depois das 11:00, este processo pode não ter sido realizado. É executada quando o SkyX não está conectado e a hora atual está entre o horário de execução.

function Reconnect_c()
{
    WriteLog("(Re)conectado as");
    ConnectTelescope();
    sky6RASCOMTele.FindHome();
    // Verifica se o Tracking não está ocorrendo.
    if (sky6RASCOMTele.IsTracking == 0) {
        RestartTracking_c();
    }
}

Reinicialização do tracking

Reinicia o rastreamento. É executada na função de reconexão e quando o SkyX está conectado, não está fazendo o tracking e a hora atual está entre o horário de execução.

function RestartTracking_c()
{
    var propriedade = GetRADec("Sun");

    WriteLog("Iniciou o slew as");
    SlewTelescopeTo(propriedade.ra, propriedade.dec, "Sun");

    WriteLog("Reiniciou o rastreamento as");
}