Aide - Recherche - Membres - Calendrier
Version complète : KaTZ-Pit V3000
3rd-Wing · Escadre virtuelle DCS > DCS (& LockOn) > 3rd Wing devs' zone > KaTZ-Pit - SIOC & Gauge Composer
Pages : 1, 2
KaTZe
cheer.gif cheer.gif Voilà, juste pour vous tenir au courant, sur ce sujet. cheer.gif cheer.gif

Suite au post de LeCréole sur les exports vers une page html, j'ai été recontaminé par le virus, te me suis remis au travail sur le KaTZ-Pit.
Par ailleurs on avait discuté du sujet à la 120th avec Goztreh, et je pense çà pourrait intéresser certain.

Le Principe :

Comme par le passé, il s'agit de pouvoir utiliser un GlassCockpit, sur un PC déporté, pour mieux afficher les info. du jeu, pouvoir supporter le pilote avec certaines taches, (calculs par exemple), et commander certaines actions non mappée sur un Hotas (radio, light etc etc ...).

Contrairement à la V2, je vais me passer de Gauge Composer, qui introduisait du Lag, et n'était pas complètement stable.
Je n'ai pas voulu non plus utiliser des logiciels fermés (type Helios), que l'on ne peut pas designer ou moduler en fonction de nos besoins.

Pour cette version , j'ai donc décidé à priori d'utiliser SIOC comme les piteurs pour récupérer les exports et pré-traiter le flux d'information. (Le flux réduit transitant entre la machine de jeu (SIOC), et le PC/Tablette déporté (KaTZ-Pit) en connection filaire ou WiFi.
Pour l'affichage, il se fera sous forme d'une page web (HTML), les évènements étant géré en javascripts.

Ca devrait permettre une portabilité maximum du KaTZ-Pit, y compris sur les tablettes.


Avancement du projet :

Déja Réalisé :
> Apprendre les rudiment d'HTML, et Javascript : Réalisé tongue.gif
> Récupération du panel V2, et conversion en HTML : Réalisé
> Mise à jour de la bibliothèque d'images des voyants et bouton : Réalisé (Ouff ... )
> Test du principe de fonctionnement des boutons, voyant, fonction/script javascript : Réalisé
> Réaliser la connection html/SIOC : réalisé partielle (connection, mais pas encore manipulation des données)
> Reactiver les exports FC3 >> SIOC, et test du SIOC-KaTZ-Pit : Réalisé

A Faire :
> Codage dans la feuille de toutes les adresses boutons, voyants
> Ecriture des miniscripts d'allumage, manipulation des boutons

> Test de transmission de données KaTZ-Pit >> SIOC et SIOC >> KaTZ-Pit
> reprise et ajustement des scripts de calcul écrit pour GaugeComposer
> Vérification et adaptation des exports de FC3, vs FC2

> Tests de stabilité

> Adaptation au SU25, SU33 et autre si intérêt wink.gif


Release Date : ... à priori dans deux semaines gap.gif megalol.gif megalol.gif

Miaou wavetowel2.gif
Tacno
Bon courage dans cette aventure thumbsup.gif

CITATION(KaTZe @ 29 Aug 2014, 14:44) *

> Adaptation au SU25, SU33 et autre si intérêt wink.gif


US please Sir. usflag.gif
badin - adi - alti
xxxxx - hsi - vario et radio
Goztreh
KaTZe is back!

Excellent boulot Lapinou Chatounet! (Merci Tacno)

Hâte de pouvoir tester/débugger tout ça joystick.gif

Goz.
Galevsky
Yes prevois le double affichage des unites de distance/altitude/vitesse, ou le simple affichage dans le system de son choix thumbsup.gif !
KaTZe
Dans le KaTZ-Pit :

> on a un affichage Russe en métrique (en gros), mais également les valeurs converties en pieds, kts (en petit) pour pouvoir voler facilement en inter-escadrons

> Sur les versions US, c'est l'inverse.

-------------

Par contre, je galère comme un malade sur la version "client HTML", pour structurer les messages d'échange entre la feuille et le serveur (très peu de documentation SIOC).
Vivement que LeCréole, me file sa feuille "html", pour voir comment il dialoguait avec son module export (côté client). sad.gif

gillesdrone
Super cheer.gif cheer.gif
Tacno
TROLL MODE

CITATION(Goztreh @ 29 Aug 2014, 16:04) *

Excellent boulot Lapinou!

Dans le cas de KaTZe, je crois que les oreilles sont plus courtes et la queue plus longue.
Différence notable entre un léporidé et un félin....
Goztreh
CITATION(Tacno @ 29 Aug 2014, 17:36) *

TROLL MODE
Dans le cas de KaTZe, je crois que les oreilles sont plus courtes et la queue plus longue.
Différence notable entre un léporidé et un félin....


Mais qu'est ce qu'ils m'ont vendu à l'animalerie alors???

jesors.gif

Goz
KaTZe
cheer.gif cheer.gif cheer.gif cheer.gif Miaou cheer.gif cheer.gif cheer.gif cheer.gif

Ca y est, j'ai réussi à interfacer SIOC en Python, pour récupérer les données via le réseau.
Je vais donc pouvoir récupérer les data dans le KaTZ-Pit, version "html"
Dès que çà marche, je vais essayer de convertir en javascript, pour ne pas avoir à installer python sur les machines clients.

Bon maintenant, je m'attaque à l'envoi de commande gap.gif

Mais çà avance thumbsup.gif
Boulling
Super nouvelle! thumbsup.gif

J'attends avec impatience ton pit!
Lynx
notworthy.gif
cheer.gif Pareil !!! cheer.gif
notworthy.gif
Maraudeur
Super mon chaton!!!!

Je suis impatient de pouvoir tester ça!! Jumpy.gif Jumpy.gif Jumpy.gif

Tu as prévu une featured et wish list?
KaTZe
CITATION(Maraudeur @ 3 Sep 2014, 16:15) *

Super mon chaton!!!!

Je suis impatient de pouvoir tester ça!! Jumpy.gif Jumpy.gif Jumpy.gif

Tu as prévu une featured et wish list?


Oui Marau wink.gif

Pour le moment , je cherchais la meilleure solution pour implémenter tout çà.

Avec comme objectifs principaux :
> La portabilité OS (Windaub, Linux, Android ...)
> La flexibilité de l'interface finale

A priori, j'ai trouvé une configuration qui semble pouvoir fonctionner, à savoir :

Machine de Jeu :
DCS World >> SIOC

Machine déportée :
Système AJAX en Python >> Interface HTML (KaTZ-Pit).

La communication est réalisée par le système AJAX (Asynchronous JavaScript and XML), Python, qui se connect sur SIOC (Wifi ou réseau) et récupère les données qui changent, et envoi les ordres du KaTZ-Pit

Cette interface, Python permet de traiter les données en effectuant certains calculs (conversion, panel armement etc etc ...).
J'ai trouvé un web framework plutôt sympa en Python (Bottle), qui dialoguera avec les JQuery, et Javascript de la feuille HTML.

L'avantage de cette structure, est que la liaison intermachine (potentiellement lente), aura un flux de données minimal (uniquement les valeurs mises à jour par SIOC, et non l'intégralité des exports).
Le système AJAX, récupère et traite ces données, et sera commun à tous les types d'appareil.

Le KaTZ-Pit, sera donc une simple feuille HTML dynamique, et ses applets Javascript, qui gèrent les évènements (allumage/extinction des voyants, affichage rotation des jauges, etc etc ...)
Il sera facile de dessiner un KaTZ-Pit pour chaque appareil, en ajoutant juste des modules dans la page web. Les jauges JSON de perfectwidget seront aussi compatibles.

On pourra aussi profiter des avantages de la structure de page web, pour recréer un FMC, CDU qui affiche des pages différentes avec menu etc etc ... grâce à Javascript.

Bref un système totalement ouvert, évolutif, et facile à customiser sans beaucoup de connaissance en informatique.

Pour l'installation, juste SIOC sur la machine de jeu, et Python sur la machine déportée.
Le KaTZ-Pit s'ouvre avec n'importe quel navigateur web, et sera fourni sous forme d'un seul dossier (sans install) avec tous les fichiers graphiques, les applets javascript, et l'AJAX en python.
Ce devrait tourner sur tous les OS compatibles avec python, et normalement aussi sur les tablettes android.

De plus, normalement, on devrait pouvoir suivre "en place arrière", un élève qui vole à >1000km de soi.
wavetowel2.gif



Maraudeur
Énooooorme!!! blink.gif

Donc toujours avec les possibilités d'interfacer les IO Cards puisque tu utilises le SIOC thumbsup.gif

Et possibilité aussi d'effectuer des changements de canaux TS-3 à partir de rotacteurs connectés sur IO-Cards? innocent.gif
KaTZe
CITATION(Maraudeur @ 4 Sep 2014, 10:14) *

Énooooorme!!! blink.gif

Donc toujours avec les possibilités d'interfacer les IO Cards puisque tu utilises le SIOC thumbsup.gif

Et possibilité aussi d'effectuer des changements de canaux TS-3 à partir de rotacteurs connectés sur IO-Cards? innocent.gif


L'idée de garder SIOC, est justement de vous permettre d'avoir un Pit partiellement IO Cards, et partiellement GlassCockpit (KaTZ-Pit).
Par contre, une question à ce sujet, avez vous standardisé vos SIOC entre vous ?

De mémoire, j'utilise certaines valeurs pour mes data calculées, et si l'on veut ne pas avoir de problème avec les Pitteurs, il serait peut être souhaitable (pendant que j'y suis tongue.gif ), que je mette mes data sur des valeurs que vous n'utilisez pas ?

Pour TS, faudra que je me rapproche de Tacno, pour essayer que nos outils soient compatibles, voir même mieux , récupérer ce qu'il a déjà fait wink.gif
Maraudeur
Quand tu parles de "datas" tu entends "offsets"?

L'idéal serait d'avoir une liste globale des offsets de l'export.lue (IN et OUT) et ainsi de tous s'y référer, ensuite charge à chacun de définir les "VAR" dans son propre SIOC, à moins de décider également d'un standard, le "link" associé dépendant du câblage de chacun...
KaTZe
Pour les offset (c'est effectivement ce que je voulais dire), j'ai utilisé la liste du LOSIOC initial sans rien changer.

Par contre dans mon script d'export, et sous SIOC, j'ai ajouté pas mal de calculs sur ces variables (Calculs de consommation, d'autonomie, recodage du panel armement, un tas de switch position, les calculs de position et trajectoire bullseye ....

Comme le SIOC a 10000 VAR possibles, je me demandais si je n'allait pas déplacer certains de mes calculs vers une plage de VAR spécifiques (que vous n'utilisez pas) pour que vous puissiez les insérer éventuellement dans vos SIOC, et faire tourner vos Pit, éventuellement avec en plus un écran déporté sous SIOC ?

Par exemple dire :

VAR
1-2 : Commande SIOC >> DCS
3-1000 : Export des OffSet DCS
1000-5000 : VAR pour les hardware Pit
6000-9999 : VAR pour les Glass Cockpit comme le KaTZ-Pit

Qu'en pensez vous ?

Sinon, je reviendrai vers vous avec des questions car depuis FC3, certains offset semblent avoir changé (j'ai des erreurs de "LoGet", par exemple LoGetControlPanel_HSI() sad.gif
KaTZe
Bon, çà progresse :

Les commandes "montante" (click KaTZ-Pit >> DCS) fonctionnent
Par contre pour le lfux descendant, j'ai encore un problème avec les websocket.
Mais LeCréole va m'envoyer filer les sockets qu'il avait développées, donc j'ai bon espoir de faire rapidement fonctionner le bouzin.

Si la structure page Web est un vrai bordel côté dynamique (clairement pas fait pour), pour le côté graphique, en utilisant les feuilles de style, j'obtiens un truc plutôt sympa (vous reconnaitrez le KaTZ-Pit v700).

Cliquez pour voir le fichier-joint

Le gros avantage est que la position des boutons, cadran etc etc .... est encapsulé dans "un style"
On peut donc facilement changer la place des éléments, ou se composer un tableau personnalisé, simplement en modifiant quelques lignes dans la feuille de style (.css), sans avoir à positionner les éléments un à un.
Donc dès que çà fonctionnera, étendre à plusieurs avions sera facile.

Surtout que j'ai dans ma banque d'image, pas mal de .gif pour chaque appareil, y compris pour les hélos (tableau pilototo etc etc ...)

Je vous tiens au courant dès que je recois le coup de pouce de LeCréole


Miaou wavetowel2.gif

KaTZe
Petite présentation que je mettrai à jour progressivement :
www.3rd-wing.net/public/KaTZe/KaTZ-Pit/KaTZ-Pit%203000%20Présentation.odp

Miaou wavetowel2.gif
gillesdrone
CITATION(KaTZe @ 8 Sep 2014, 15:54) *

Petite présentation que je mettrai à jour progressivement :
www.3rd-wing.net/public/KaTZe/KaTZ-Pit/KaTZ-Pit%203000%20Présentation.odp

Miaou wavetowel2.gif



Bravo , notworthy.gif
Lynx
C'est magnifique !!!
Red Daron
extreme le chat ! si ca marche sur tablette android ca sera top !
KaTZe
Petit Update de l'avancement des travaux.


J'ai reçu les fichiers de LeCreole, qui a effectué une liaison direct entre DCS (module export .lua) et une page web (script javascript) en créant un échange websocket.
Mon projet est différent puisque je veux intercaler SIOC , pour garder une compatibilité Hard-Cockpit, et pour profiter de ses possibilités de calcul (playtime, cap vers objectif etc etc ...).
Pour lier SIOC et la page Web j'ai créé un serveur web en Python (Le KaTZ-Link) qui communique d'un côté avec SIOC et de l'autre avec la page web via la technologie WebSocket.
Cela offre toutes les flexibilités (page Web multiples, Postes multiples géographiquement délocalisés etc etc ....).

Aujourd'hui ... tous ces liaisons fonctionnent dans les deux sens :
DCS <<-->> SIOC
SIOC <<-->> KaTZ-Link (début Septembre)
KaTZ-Link <<->> Page Web : le KaTZ-Pit (fin Septembre)

Un grand merci à LeCréole dont les fichiers m'ont permit de comprendre comment implémenter une websocket entre le KaTZ-Link et le KaTZ-Pit.
C'est un vrai bordel ces systèmes apparemment assez récents, et super mal documentés.
Idem pour javascript, quelle M..... ce language , le web a vraiment pas été concu pour afficher dynamiquement autre chose que du baratin mad.gif (même le web est devenu pourri par les marketeurs/baratineurs/commerciaux sad.gif ).

Maintenant, il me reste à tester et faire certains choix pour une transmission fluides des données.
J'essaye aussi d'avoir une structure claire, pour permettre une évolutivité du système à tous les module de DCS, et des données facilement manipulable par tous ceux qui voudrait se faire leur config perso.

Donc il reste à faire le travail un peu fastidieux des tableaux/listes de valeurs, etc etc, pour alimenter le KaTZ-Pit.
Après les affichages de valeurs, et les Switch de commande, on s'occupera de faire tourner les aiguilles, d'animer l'ILS etc etc ....

Si tous va bien ce soir, je devrait faire mon premier vol avec la version per-pre-pre-alpha laugh.gif

cheer.gif wavetowel2.gif
gillesdrone
si tu as besoin d'un testeur avec pit hard , je suis dispo ( retour de vacances ) thumbsup.gif

et merci pour ton travail notworthy.gif ( je sais un merci n'étanche pas la soif ) tongue.gif
KaTZe
CITATION(gillesdrone @ 29 Sep 2014, 11:30) *

si tu as besoin d'un testeur avec pit hard , je suis dispo ( retour de vacances ) thumbsup.gif

et merci pour ton travail notworthy.gif ( je sais un merci n'étanche pas la soif ) tongue.gif

Merci Gilles,

En fait, ce qu'il faudrait, c'est que je sache quelle plage de données dans SIOC vous n'utilisez pas.
Perso. j'utilise les offset de DCS, puis j'effectue dans SIOC un certain nombre de calculs, et j'alimente une plage d'export qui est envoyé au KaTZ-Link.

Dans cette plage se trouve
> des données déjà exportée de DCS que je recopie (exemple : IAS, TAS etc etc ...)
> des données calculées depuis les données DCS (exemple: conversion m/ft, durée de vol, status armement ...)
> des flags "voyants" ou "équipement" (exemple engine-fire, position verrière ...)

Pour la clarté du programme c'est plus simple, si je pouvais avoir une plage de 500 positions réservées pour les calculs (exemple 500-1000), et 1000 positions réservées pour les export vers le KaTZ-Pit, (exemple 1000-2000).

Off course il faudrait que çà soit des positions non utilisées par les sim-pitteurs, pour pouvoir juste ajouter les codes dans vos .ssi, sans avoir à décaler vos positions.

Je sais pas si je suis clair blushing.gif

Pour le moment j'utilise toujours mon vieux ".ssi" mais comme je vais devoir profondément le réviser avec FC3, autant partir sur des plages dédiées
gillesdrone


pour ce soir je te mets un dossier avec mes exports et SSI Kamov wink.gif

Lecreole
Salut,

KATZ à quoi sert ton 'KaTZ-Link' ?
Pourquoi ne pas utiliser LUA DCS pour la liaison entre SIOC et Page web?

LUA <------> SIOC
|<------> Page web

Moi j'utilise le svg pour le coté graphique un example l'interface est créée dynamiquement et pilotable par javascript :
CITATION

// Création
g_alt_1 = panel.gauge(20,60,1.4,altGaugeOptions);
g_alt_2 = panel.gauge(20,400,1.4,altGaugeOptions);
g_rpm_1 = panel.gauge(340,127,1,rpmGaugeOptions);
g_rpm_2 = panel.gauge(520,127,1,rpmGaugeOptions);
g_rpm_ru = panel.gauge(400,400,1,rpmRUGaugeOptions);
l_led1 = panel.led(700,450,10,"green","off");
l_led2 = panel.led(800,450,10,"red","on");
l_led3 = panel.led(900,450,10,"green",1);
l_led4 = panel.led(1000,450,10,"red",0);
// interactivité
l_led1.setValue(1) // pour allumer la led 1
g_alt_1.setValue(4260); // pour afficher l'odometre et rotation de l'aiguille.
g_rpm_ru.setValue([57,69]); // pour afficher valeur rpm left et right.

L'avantage la même qualités d'affichage pour toutes les résolutions laugh.gif .
Je continue à travailler sur mes prochains instruments, ADI, HSI, VSD.
gillesdrone
pour Katz

si tu veux j'ai mis dans /public/Gillesdrone/EXPORT_DIVERS
un zip export
il contient tous ce qui cons=cerne export et Sioc SSI
tu pourras voir ains les plages utilisées au moins par Bad , Oeil de faucon,et moi wink.gif
KaTZe
@Gilles : Merci je vais pouvoir utiliser des plages libres afin de ne pas chevaucher avec vos plages de commandes de pit.
Je pense que je reviendrai vers toi, because j'ai vu que certain export ont changé depuis FC2, plutôt que de perdre mon temps, je regarderai ton script d'export DCS

@LeCréole : Encore merci pour tes info. WS thumbsup.gif
Je garde SIOC dans la boucle y compris pour le Pit, because je préfère ne pas exporter directement depuis DCS vers le pit.

- J'ai pas mal de calculs intermédiaires effectués par SIOC (consommation moyenne, armement panel, conversion metrique/imperiale, chrono, durée de misson ....)
Bien sur je pourrais effectuer ces calcul en lua dans l'export DCS, mais ils ne sont pas tous utile à chaque 200ms, çà surcharge DCS, et surtout côté debug, c'est un enfer (alors que sous SIOC il suffit de regarder le résultat dans le numéro de plage.
En plus tous ces calculs sont déjà fait, donc je préfère me brancher dessus plutot que de tout reecrire dans DCS.

- Le KaTZ-Link me permet aussi d'effectuer quelques conversions, et surtout de charger un fichier .ini avec les correspondances SIOC/KaTZ-Pit
C'est un fichier texte (.csv), donc facilement consultable/editable

C'est vrai que çà morcelle la chaine, mais çà la rend transparente, et permet de debugger chaque étape, ainsi que de l'adapter ainsi facilement à tous les (futurs) avions DCS.

C'est ce que je reproche à tous les outils que l'on a vu naitre depuis quelques années (gaugecomposer, helios etc etc ...) c'est qu'il y a toujours une part propriétaire ou custom made qui rend l'évolutivité ou l'adaptation compliquée. Dans mon système, les jauges ne sont pas recréés avec un logiciel type perfectwidgets etc etc, mais c'est une image (.gif) du cadran tel qu'il est dans DCS, affichée maintenant par la page web, avec juste une image d'aiguille en rotation. Idem pour les voyants, c'est ceux du jeu allumés ou éteints, via jquery.


- Finalement dans la perspective d'un écolage (ou vol DC) à distance, la gestion websocket entre un serveur Python et le Client Web, me parait plus simple à gérer que de d'avoir le serveur WS directement dans DCS.


Ceci dit j’admets bien volontiers, que çà n'est peut être pas optimal (je suis un amateur complet en programmation), mais c'est à ma portée blushing.gif , et donc à celle de tout gars qui voudra customiser, en investissant un minimum de temps wink.gif

KaTZe
@Gilles,

Bon j'ai testé et réfléchi tongue.gif
Notre échange m'a donné une idée.

Dèjà, j'utilisais le KaTZ-Link pour convertir les numéro d'offset de SIOC en étiquettes clairement compréhensibles pour le KaTZ-Pit.

En fait, j'ai créé un fichier de configuration texte (.csv), dans lequel se trouve la correspondance offSet/étiquette/Gain. Je charge ce fichier au démarrage du KaTZ-Link, ce lui permet :

1> de faire la déclaration à SIOC :Arn.Vivo des offset qui seront écoutés
2> de transformer les messages de SIOC avec une étiquette intelligible vers KaTZ-Pit
3> d'effectuer les conversions d'unité avec les valeurs gains, ce qui fait que le Pit recoit directement les bonnes valeurs prêtes à être affichées sans faire de calcul en javascript (qui est une vrai m.... comparé à Python).
4> d'effectuer des transformations plus complètes : par exemple pour l'heure/le temps de vol/ de mission, où la donnée secondes est converti directement en hh:mm:ss et envoyé telle qu'elle au KaTZ-Pit.

Ainsi, quand on adaptera d'un pit à l'autre au besoin, il suffira de mettre à jour des offset et les gains dans le fichier texte utilisé par Python wink.gif
gillesdrone
Cool thumbsup.gif
KaTZe
Petit point d'avancement blushing.gif

Gestion SIOC <> KaTZ-Link
@Gilles : Pour la question des offset SIOC, j'ai mis dans le fichier "siocConfig.lua" , l'indication de la plage utilisée dans SIOC. Les exports sont alors redirigés vers la plage en question.
Ainsi je vais pouvoir optimiser mon programme SIOC, sur une plage quelconque, et il sera facile de l'intégrer dans un SIOC existant.


Par exemple si j'indique "plageSioc = 1000 dans le "siocConfig.lua", les exports sont alors décalé
CODE
envoyerInfo("22",LoGetIndicatedAirSpeed()*100)

sera envoyé vers la plage 1000 + 22 >> 1022

Il suffit alors éventuellement pour chacun de mettre à jour son Sioc.ssi, en copiant le block KaTZ-Pit vers la plage de son choix.

Idem côté KaTZ-Link, les offset sont transformés en noms spécifiques.
Donc un message recu de SIOC sous la forme "1022:325", sera converti en "22:325", puis envoyé sur la websocket au KaTZ-Pit en format Json sous la forme {'IAS':325}
Ainsi, la feuille web KaTZ-Pit est complètement indépendante des configurations SIOC et DCS export.
Avec ce format, on pourra même si n le désire utiliser la communication WebSocket directe depuis DCS (le programme de LeCréole), sans passer par SIOC.

On perdra juste certains calculs intermédiaires que je faisais sur SIOC (par exemple le calculateur de positions des cibles vs bulls, ou certain calcul de playtime). Ceci dit, j'essaye de reporter au maximum ces calculs dans la feuille web, afin de maximiser la compatibilité.

Le KaTZ-Pit, feuille web

Cliquez pour voir le fichier-joint

Depuis hier toutes les jauges fonctionnent (sous Firefox).
Ca va vite grace au choix de réutiliser les jauges de DCS.
J'utilise juste les fonctions de jquery, en Rotation (aiguilles) - Translation (ILS,Turn), Scale (jauges)

Ce soir je travaille sur les voyants restants à faire fonctionner (en particulier le panel armement), et vérification des calculs de playtime/ETA/Autonomie ...
Demain çà sera le Panel Target (en haut à droite)

Puis viendront les tests de stabilité ... si c'est pas trop mauvais, je "releaserai" une version alpha, pour ceux qui voudront tester.

Miaou wavetowel2.gif
Photun
Projet très très intéressant !


Question de néophyte :
Il n'est pas possible de passer par une liaison filaire (USB) pour faire la connexion entre l'ordinateur et la tablette ?
gillesdrone
D' ailleurs faudra qu on voit car pour les exports des modules hors ED , Style Belsimtek ce sera un peu plus complex vu qu' ils n'on pas la meme logique de clickabledata et mainpanel ini

Faudra qu' on en parle sur TS wink.gif
KaTZe
CITATION(Photun @ 9 Oct 2014, 15:09) *

Projet très très intéressant !
Question de néophyte :
Il n'est pas possible de passer par une liaison filaire (USB) pour faire la connexion entre l'ordinateur et la tablette ?


Les serveurs export (DCS, SIOC, Websocket, ... ) passent tous par connection IP
(Donc je ne pense pas qu'un liaison USB puisse le faire)

Si tu utilise deux PC (ou un PC + un portable), Il suffit de mettre les deux machines en réseau.
Donc possible via liaison filaire (cable RJ47) avec un hub, ou alors liaison Wifi
Pour la Lan, il suffit de demander deux cables RJ47 , une pour la machine de jeu et une pour la machine KaTZ-Pit.
Une fois le KaTZ-Pit, sur le LAN, tu peux regarder n'importe quelle machine qui est équipé d'export+SIOC.

Pour l'utilisation tablette, en fait, il faudra faire tourner le KaTZ-Link sur la machine de jeu, et connecter la tablette en Wifi. Pour la Lan, il suffit de brancher un modem-wifi dans la salle.
Lynx
Hello Katz, mein schatz, dis moi, sera-ce utilisable en adressage local (un seul ordi...) et pour tous les appareils ???

Superbe boulot en tous cas...!!!
Postal2
Aurai tu une variante avec les instrument US F-15C etc ?? please !

Merci

KaTZe
@Lynx,

Ca fonctionne off-course sur une seule machine.
C'est d’ailleurs comme çà que je fais tout le développement ... (surtout depuis que j'ai le super écran large de Postal ... wub.gif ).

Si tu as deux (trois) écrans, tu peux afficher le Pit sur un écran dédié.

Le seul problème, c'est quand tu veux cliquer sur le KaTZ-Pit , par exemple pour utiliser le Target-Panel, tu perds le focus (comme dit Tacno avec sa radio). Chez moi c'est même pire puisque ma fenêtre DCS se ferme (mais je ne suis peut être pas configuré de façon optimal).
Donc en monoPC, le KaTZ-Pit s'utilise principalement en lecture (ce qui est un peu dommage, on trouve aujourd'hui assz facilement des vieux PC portables).

Note : Le Target-Panel c'est çà
Cliquez pour voir le fichier-joint

Quand tu passes au dessus d'une target (ou d'un point d'entrée de passe de strike) tu appuies sur M1, M2 ou M3 et çà met la position en mémoire.
Par la suite en appuyant sur le voyant "1", "2", "3" çà sélectionne ce point, et la distance/bearing (par rapport à ta position) pour le rejoindre s'affiche au dessus.

En dessous, c'est les coordonnées de ce point par rapport au BullsEye de mission (pour le transmettre à tes coéquipiers).
Tu peux également rentrer manuellement les coordonnées (données par le controleur de mission, ou par un coéquipier) par rapport à ce même BullsEye de mission.

J'avais créé ce système avant que le KA50 ne soit sorti par DCS, mais c'est le même principe de repérage/échange de cible. Plutôt pratique pour les Navions.

@Postal :
A chaque instant, pour cette version, je m'efforce de rendre le système le plus évolutif possible, et non lié à un soft (comme gauge composer, ou perfect widget... ), ou un type d'appareil.

La partie SIOC, KaTZ-Link est totalement indépendante du type d'appareil (de FC3) utilisé.
Cette chaine , finalement envoie à la page web des messages jSon clair du type :
CODE

{'Gear_Pos': 0, 'TimeFly': '00:00:17', 'Vario': 2, 'WP_dist': 0, 'ETA': '07:00:44', 'TAS': 362, 'Bank': 1, 'TimeMis': '00:00:34', 'Fuel_e': 1147, 'Time_2_WP': 10, 'Clock': '07:00:34', 'Way': 250, 'Chrono': '00:00:34'}

Ces messages sont envoyés chaque 200 milli-seconde (uniquement avec les valeurs qui ont changées depuis le dernier envoi).

Le KaTZ-Pit stocke ces valeurs dans une table interne qui est mise à jour à chaque réception.

Toute les 100 millisecondes, trois subroutine mettent à jour
> les données
> les voyants
> les animations (rotation aiguille, translation aiguille, scale des jauges).
de nouveaux toutes ces valeurs sont indépendantes du type d'avion ... ou presque wink.gif

En fait ces subroutines effectuent certains calculs (autonomie, playtime etc etc ...).
Elles représentent en fait les calculs mentaux qu'un pilote fait dans sa tête, et utilisent parfois des données spécifiques à chaque avion.
Mais j'ai regroupé ces données spécifiques, dans un fichier.ini qui est lancé au démarrage de la page.
Donc si on vol en F15, au lancement du pit F15, c'est les données F15 qui seront chargées (et facilement modifiable).

Reste finalement l'habillage de la page web qui va afficher ces valeurs.
Pour celà, je reprends soit les jauges du jeu (par exemple Moteur F15)
Cliquez pour voir le fichier-joint

Soit les panneaux armement, que j'avais créé pour le KaTZ-Pit V2
Armement F15
Cliquez pour voir le fichier-joint

Armement SU25, avec les boutons d'ajustement de ripple+interval/ripple+quantité/Laser etc etc ...
Cliquez pour voir le fichier-joint

Reste " juste gap.gif ", à adapter
> les positions d'affichage des données pour chaque panneau.
> Pour les aiguille, à rentrer le zero et le gain

Donc un peu de boulot mais beaucoup plus simple que s'il fallait tout refaire à chaque fois wink.gif
KaTZe
Juste pour compléter.

Voici pour le panel fuel, à quoi ressemble :

> le module html, de positionnement des zones de données, des voyants aiguilles ...
chaque éléments animé (data, images, ) est positionné, et repéré par un nom (id)

Cliquez pour voir le fichier-joint

> le module javascript de mise à jour des données
les données importé, sont stockées dans le tableau KaTZ-Pit_data["nom de la donnée"]
tous les 100msec, tous les "id" créé ci-dessus sont mis à jour en fonction des données du tableau.

1) les données valeurs

Cliquez pour voir le fichier-joint

2) le module d'animation (jauges)

Cliquez pour voir le fichier-jointCliquez pour voir le fichier-joint

et

Cliquez pour voir le fichier-joint

3) le module de gestion des voyant avec calcul et allumage du bingo fuel

Cliquez pour voir le fichier-joint


Et voilà, le résultat final
Cliquez pour voir le fichier-joint

Le plus long, c'est de mettre au point le 1er appareil, mais après sortir une version par appareil, çà va relativement plus vite, puisqu'il suffit juste de mettre à jour les images à afficher (que j'ai déjà), et les positions d'affichage (le premier code tout en haut de ce post en html).

Sauf si on veux créer un nouveau élément de panel spécifique (pour le F15, TEWS ? çà peut être une idée ???)

Miaou ... bon j'y retourne wavetowel2.gif
Lynx
Merci de ta réponse, il s'agit d'un boulot superbe.... notworthy.gif
Postal2
Méga boulot !! fait nous en un complet et tout et je te le paie!!! evidement ! . wink.gif
Lecreole
Bravo katz du très bon boulot thumbsup.gif
Mon projet aussi avance bien, j'aurai besoin de ton aide très bientôt.
Lecreole.

PS : un ptit coucou à tout la 3rd wavetowel2.gif
Postal2
Salt lecreole !!!

Hâte de voir ton projet !! .

Donc pour reprendre ce que proposais Katze c'est juste pas mal du tout même extrême !


Mais ne peut on pas exporter des image type animer ? position du switch etc ??? . wink.gif
KaTZe
CITATION(Postal2 @ 11 Oct 2014, 08:29) *


Mais ne peut on pas exporter des image type animer ? position du switch etc ??? . wink.gif


Si bien sur, avec l'approche Web-Page çà fonctionne ainsi :

1> Sur ta page Web tu affiches une image de cockpit (fond d'écran)
Ou plus exactement je travail module par module (Fuel Panel, Moteur Panel, HSI Panel, ...)
pour pouvoir customiser chaque KaTZ-Pit

Par exemple pour le panel moteur :

CODE
<img src="images/Motor_Panel_29.gif" width="380" height="340" border="0" usemap="#Panel_Motor">  


2> Tu définies alors dans ce panel des zones spécifiques

2-a> Soit des "zones clickables" qui lancent un script (javascript)
CODE
<!-- Mapping des boutons de demarrage left (311), right (312)-->
    <map name="Panel_Motor">
        <area shape="rect" coords="110,290,160,320" href="java script:Start_Eng_L()">
        <area shape="rect" coords="220,290,270,320" href="java script:Start_Eng_R()">
    </map>

Quand ta souris passe au dessus de ces zones, le pointeur devient "une petite main"

2-b> Soit des "zones images" pour afficher une image (voyant) par dessus le fond.
CODE
<!-- Voyants de demarrage moteur Left -->
    <SPAN style="position: absolute; left: 40px; top: 290px; width: 50px; height: 30px">
    <img src="images/M_StartEngineOn.gif" width="50" height="30" border="0" id="VM_Start_L">
    </SPAN>  


Ces images peuvent être des voyants, des aiguilles, des jauges, des lignes (ILS) ...
CODE
<!-- Aiguilles compte Tour -->
    <SPAN style="position: absolute; left: 20px; top: 70px; width: 160px; height: 160px">
    <img src="images/M_Aiguille-RPM29_01trans.gif" width="160" height="160" border="0" id="AM_RPM_L">
    </SPAN>


2-c> Soit des "zones texte" pour afficher du texte, des valeurs
CODE
<!-- Zone Data compte Tour -->
    <SPAN style="position: absolute; left: 65px; top: 25px; width: 50px; height: 30px; color:white; font-size:1.2em" id="RPM_L"> </SPAN>
    <SPAN style="position: absolute; left: 245px; top: 25px; width: 50px; height: 30px; color:white; font-size:1.2em" id="RPM_R"> </SPAN>


Toutes ces zones sont repérées, par leurs coordonnées (left-top) par rapport à l'image de début.
Elles sont dimensionnées par (width-height)

Les "zones clickables", lancent directement le script javascript, qui est stocké dans un fichier "mes-script.js"

Pour les zones, image, et texte, tu remarques que chacune de ces zone porte un "ID"
id="VM_Start_L" , pour mon Voyant Moteur Left
id="AM_RPM_L, pour mon Aiguille Moteur , compte tour Left
id="RPM_L", pour ma zone d'affichage de la valeur RPM Left

Avec javascript, on peut alors mettre à jour, manipuler comme on veut les images, ou le texte

Par exemple pour mettre à jour , la valeur RPM_L, dans sa "zone texte", il suffit d'avoir dans son script
CODE
document.getElementById('RPM_L').innerHTML = KaTZPit_data["RPM_L"].toFixed(0)


La valeur de la zone ID "RPM_L" est mise à jour avec la donnée [RPM_L] stockée dans le tableau KaTZPit_data. Je fais tourner ce script toutes les 100 milliseconde, et le tour est joué.
Le tableau KaTZPit_data est mis à jour avec les exports recus de SIOC/DCS.

Pour les "zones images", on peut par exemple changer l'image affichée (la source), ou allumer, éteindre "la zone image".

Ainsi pour mon voyant de démarrage moteur :
CODE
if (KaTZPit_data["RPM_L"] > 45) {$("#VM_Start_L").fadeOut()}

On éteint le voyant quand les rpm passent au dessus de 45%

On peut ainsi avoir de micro script qui gère le panel.
Par exemple pour le Bingo Fuel
CODE
if (KaTZPit_data["Fuel_i"] > Plane_data["Bingo"]) {$("#VM_Fuel_L").fadeOut()} else {$("#VM_Fuel_L").fadeIn()}


La valeur Bingo. est stockée dans une table de spécification , spécifique à chaque avion (800 pour le Mig29), et le pit allume le voyant quand la valeur de l'avion, et dépassée.
Ainsi on a juste à créer une table spécification par appareil, et le pit, s'adapte automatiquement, sans devoir replonger dans le code.

Quand la "zone image", est une aiguille de cadran, on l'anime avec les fonctions de rotation
Par exemple pour l'aiguille RPM du moteur gauche
Une simple ligne de code pour lancer la fonction :
CODE
Rotate_RPM((KaTZPit_data["RPM_L"]), (KaTZPit_data["RPM_R"]));


et l'image de l'aiguille tourne

CODE
function Rotate_RPM(l,r){
    var a_origine = 44
    var a_gain = 3.16

    $("#AM_RPM_L").css({
        '-moz-transform':'rotate('+(a_origine+a_gain*l)+'deg)',
    })
.....................


Là aussi, j'ai concu le truc pour une adaptabilité maximale.
Il suffit de mettre à jour, origine et gain, et on passe d'un cadran Mig29, à un cadran F15.
(Je regrouperai probablement aussi ces valeurs dans une table par avion)


------------------------------


Pour les jauges carburant, j'utilise une fonction de scale-up
la partie colorée de la jauge (représentant le koko, est "strechée" verticalement)

Exemple :
pct-i (représente le %age de remplissage du réservoir interne)
je calcul ce %age en fonction des spec de l'avion
CODE
var i_Fuel_ipct = KaTZPit_data["Fuel_i"] / Plane_data["Fuel_imax"]


Puis je "strech" la jauge colorée de la bonne valeur (scale-Y)
CODE

function Jauge_Fuel(pct_i, pct_e){
    var a_origine = 0
    var a_gain = 5

    // On fixe l'origine du "scale down" en bas
    $("#FA_Gauge_Main").css({
    '-moz-transform-origin':'bottom left',
    })

    // Scale down %age restant = hauteur barre orange
    $("#FA_Gauge_Main").css({
    '-moz-transform':'scaleY('+pct_i+')',
    })
.............................


------------------------------


Pour l'ILS, j'utilise la fonction de translation pour les aiguilles verticales/horizontales
CODE
Translate_ILS(KaTZPit_data["ILS_up"],KaTZPit_data["ILS_lat"])


CODE
// Translation ILS Up/Down
function Translate_ILS(valup, valat){
    var a_origine = 0
    var a_gain = 0.75

    // valup : positif = Translation vers le bas , changement du signe DCS
    $("#IA_Up").css({
    '-moz-transform':'translate(0px,'+(a_origine - a_gain * valup)+'px)',
    })
.............................


------------------------------


Bref, excusez cet exposé un peu long, mais comme çà vous voyez ce que l'on peut faire.

Pour revenir à ta question Postal, avec l'utilisation d'une page Web ... et je ne remercierai jamais assez LeCréole de m'avoir donné l'idée, et le courage de me plonger dans le javascript thumbsup.gif , les possibilités sont infinies.

Ont peut, très bien recréer un FMS, avec zone clickables qui changent l'image du milieu, et anime des valeurs, points, etc etc ....
Bien sur, on peut créer un switch (il suffit d'avoir les deux images, posit_haute et posit_basse),
Par exemple, tu met la "posit_haute" sur ton image de fond, et tu fait un "FadeIn" de l'image "posit_Basse" quand on click dessus, en démarrant le script de ton choix.

En fait les seules contrainte, c'est d'être super rigoureux sur les noms d'ID, les variables, procédures , sinon on passe des heures à retrouver les bugs crash.gif
C'est pour çà que j'ai écrit chaque ligne du programme sans utiliser le moindre "plugin" pour créer les jauges, qui te pond du code complètement abscon.

L'autre contrainte, c'est de bien séparer les scripts pour s'y retrouver
Perso j'ai :


> serverws.js : récupéré sur le projet de LeCréole, qui gère la communication websocket avec le KaTZ-Link

> panel.js : qui gère les évènement principaux (démarrage, arrèt)
> panel_0_init : qui charge les tables, et initialise les valeurs
> plane_init.js : qui charge les données de spéc des avions

> panel_data.js : qui gère la mise à jour de toutes les valeurs
> panel_light.js : qui gère les voyants
> panel_animation.js : qui gère les images en mouvement (aiguille, jauge ...)
> panel_routine.js : qui effectue les procédures (démarrage) , calculs d'autonomie, le module panel armement ...

Bref, si vous avez des idées Extrèèème, le mieux c'est de réfléchir à un petit cahier des charges pour les décrire simplement ... la suite c'est juste du temps de travail gap.gif

Miaou wavetowel2.gif
Lecreole
CITATION(KaTZe @ 29 Sep 2014, 10:13) *

C'est un vrai bordel ces systèmes apparemment assez récents, et super mal documentés.
Idem pour javascript, quelle M..... ce language , le web a vraiment pas été concu pour afficher dynamiquement autre chose que du baratin mad.gif

CITATION(KaTZe @ 11 Oct 2014, 11:02) *

avec l'utilisation d'une page Web ... et je ne remercierai jamais assez LeCréole de m'avoir donné l'idée, et le courage de me plonger dans le javascript thumbsup.gif , les possibilités sont infinies.

De rien gap.gif

De mon coté j'ai pris une direction différente.
Moi aussi j'ai laissé tomber perfectWidget (même si j'utilise snap.svg.js comme plugin open source) et dévelloper mon propre code javascript pour concevoir les gauges ou tous autres éléments du cockpit et mon choix à pencher pour le svg qui je pense est un avantage pour une qualitée d'affichage optimale que des images bmp, jpg ou png.
En plus tous les éléments peuvent être modifier à la volée, couleur, taille, même sa forme sans perte de qualité.
Une petite démo parlera plus qu'un grand discours
(a part le fond d'ecran du SU27 aucunes images n'est utilisées et pensez a metre en plein écran F11 pour google chrome)

Voila le type de résultat qu'on pourrais avoir au final, mais comme helios, plusieurs boutons pourraient faire afficher d'autres modules sur l'écran : panel moteur, panel mecas etc...
J'ai pas encore optimiser pour l'affichage sur mobile ou tablette mais dèja c'est pas mal(c'est mon avis personnel gap.gif )

Je termine le HSI, l'ADI et le SPO puis je m'attaque au panel F-15 usflag.gif
Encore beaucoup de boulot mais on aime ça gap.gif
A trés bientôt.
Maraudeur
Wow!! Superbe travail pour tous les deux!! wub.gif wub.gif Bravo notworthy.gif notworthy.gif notworthy.gif

Lecréole, n'oublie pas d'animer également la bille sous d'ADI thumbsup.gif
Et tu peux aussi prévoir l'affichage du calage de pression sur l'altimètre innocent.gif
KaTZe
En fait il y a le fond et la forme.
Sur le fond nos projets sont effectivement différents.
J'avais commencé par vouloir reproduire les pits réels comme LeCreole.
Mais j'ai vite été confronté à des problèmes de lisibilité sur un écran moyen.
Donc depuis le début les KaTZ-Pit sont a mis chemin entre un pit classique et un glass cockpit avec une présentation améliorée des données.

Par contre sur la forme on est pas très loin.
Je vais d'ailleurs jeter un coup d'oeil sur snap.svg, pour créer des jauges qui changent de couleur par exemple ca peut etre intéressant.

Merci de l'info
wavetowel2.gif
gillesdrone
bravo à tous les deux impressionnant la vidéo blink.gif
Postal2
j'atend le panel F-15 avec imaptience !!! avec tout les sous menu etc !!!! bon sa ! sur l'écran tactile sa va être une tuerie ! .
wink.gif wink.gif wavetowel2.gif thumbsup.gif thumbsup.gif
Lecreole
CITATION(gillesdrone @ 11 Oct 2014, 23:30) *

bravo à tous les deux impressionnant la vidéo blink.gif

Vidéo?? quel vidéo?
Si tu parle du lien plus haut c'est le resultat qu'on pourrait avoir au final tongue.gif
C'est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.