main()
L'entrée de dessin du script de l'instrument. CapDrive appelle main() pour obtenir cet écran et est responsable de la mise en page, du dessin et de l'actualisation ultérieure.
Processus d'exécution
Chaque fois qu'il accepte une nouvelle entrée, CapDrive met à jour les données et l'environnement d'affichage actuels, exécute l'intégralité du fichier dans la nouvelle portée locale, puis appelle le main() défini cette fois. La fonction renvoie le tableau View, View intégré ou le contenu vide de manière synchrone.
Les récupérations et calculs de niveau supérieur sont également mis à jour à chaque exécution. Les variables ordinaires sont réinitialisées à chaque fois et $sessionStorage est utilisé pour l'état span.
Les modifications apportées à l'entrée actuelle, à la définition d'entrée ou à l'environnement d'affichage déclencheront l'exécution, et il n'y a pas de fréquence uniformément fixe. Les entrées identiques sont ignorées et seules les dernières entrées en attente sont conservées dans le traitement. La croissance de la fenêtre d'historique, le nettoyage et les modifications internes de la durée d'échantillonnage ne déclenchent pas l'exécution individuellement ; Les modifications d'entrée de temps explicitement définies se déclenchent toujours. L'animation est réalisée indépendamment par le côté dessin.
Exemple : dessiner avec les valeurs actuelles
Sélectionnez la vitesse dans les paramètres du compteur. Chaque appel lit la dernière vitesse, génère des nombres et des unités ; affiche une ligne horizontale lorsqu’aucune vitesse n’est disponible.
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>
);
}
État entre les appels de fonction
Les variables locales ordinaires ne sont utilisées que pour cet appel de fonction. Utilisez $sessionStorage lorsque vous devez conserver la valeur de crête, le nombre, etc. pendant le trajet en cours ; il est isolé par déclenchement et instance d'instrument, et sera effacé à la fin du déclenchement ou lorsque l'instrument est rechargé.
Lorsqu'une liste est nécessaire, View peut être généré à partir du tableau map. Fournit un key stable pour les éléments qui sont mis à jour ou redistribués afin que les mises à jour et les animations des dessins continuent de correspondre au même élément.
Exigences opérationnelles et erreurs
main() doit être complété dans un appel synchrone. Évitez les boucles continues, les attentes bloquantes et les structures de données qui se développent de manière illimitée ; le runtime limitera le temps d'exécution, les étapes et la taille du contenu du dessin. Les valeurs dans les attributs du dessin doivent être des nombres finis et les résultats du calcul doivent d'abord traiter les mesures manquantes, la division par zéro, etc.
Les erreurs de script sont affichées dans l'état d'erreur de l'instrument et dans les journaux correspondants. L'aperçu est utilisé pour vérifier le code d'affichage ; les relevés réels des compteurs dépendent des données sélectionnées et de la source de données actuelle.