main()

A entrada de desenho do roteiro do instrumento. CapDrive chama main() para obter esta tela e é responsável pelo layout, desenho e posterior atualização.

Processo de execução

Cada vez que aceita uma nova entrada, o CapDrive atualiza os dados atuais e o ambiente de exibição, executa o arquivo inteiro no novo escopo local e, em seguida, chama o main() definido desta vez. A função retorna o array View, View integrado ou conteúdo vazio de forma síncrona.

As buscas e cálculos de nível superior também são atualizados em cada execução. Variáveis ​​comuns são reinicializadas a cada vez e $sessionStorage é usado para o estado span.

Mudanças na entrada atual, na definição de entrada ou no ambiente de exibição acionarão a execução e não há uma frequência fixa uniformemente. Entradas idênticas são ignoradas e apenas as entradas pendentes mais recentes são mantidas em processamento. O crescimento da janela do histórico, a limpeza e as alterações internas no tempo de amostragem não acionam a execução individualmente; alterações de entrada de tempo explicitamente definidas ainda serão acionadas. A animação é realizada de forma independente pelo lado do desenho.

Exemplo: desenhar com as leituras atuais

Selecione a velocidade nas configurações do medidor. Cada chamada lê a velocidade mais recente, gera números e unidades; exibe uma linha horizontal quando nenhuma velocidade está disponível.

function main() {
  const speed = $data.current.speed;
  return (
    <VStack spacing={8}>
      <Text fontSize={64} color={$env.foreground}>
        {speed?.value == null ? '—' : Math.round(speed.value)}
      </Text>
      <Text fontSize={16} color={$env.accent}>
        {speed?.unit ?? $env.speedUnit}
      </Text>
    </VStack>
  );
}

Estado entre chamadas de função

Variáveis ​​locais comuns são usadas apenas para esta chamada de função. Use $sessionStorage quando precisar reter o valor de pico, contagem, etc., status dentro da viagem atual; ele é isolado por desarme e instância do instrumento e será apagado quando o desarme terminar ou o instrumento for recarregado.

Quando uma lista é necessária, View pode ser gerado a partir do array map. Fornece um key estável para itens que são atualizados ou refluem para que as atualizações e animações do desenho continuem a corresponder ao mesmo item.

Requisitos operacionais e erros

main() deve ser concluído em uma chamada síncrona. Evite loops contínuos, esperas de bloqueio e estruturas de dados que crescem sem limites; o tempo de execução limitará o tempo de execução, as etapas e o tamanho do conteúdo do desenho. Os valores nos atributos do desenho precisam ser números finitos, e os resultados do cálculo devem primeiro lidar com testes faltantes, divisão por zero, etc.

Os erros de script são exibidos no status de erro do instrumento e nos registros correspondentes. A visualização é usada para verificar o código de exibição; as leituras reais do medidor dependem dos dados selecionados e da fonte de dados atual.