<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2700358355515191996</id><updated>2011-07-30T07:48:11.012-07:00</updated><category term='DEBIAN'/><category term='BAF'/><category term='BLACK SHARK'/><category term='VFAT'/><category term='COCKPIT_RESEAU'/><category term='LOCK ON'/><category term='v4l/python'/><category term='Musique'/><category term='ARTS'/><category term='COCKPIT'/><category term='Nine Inch Nails'/><category term='FC2'/><category term='DELTA 3D'/><title type='text'>LE BLOG DE YOANN</title><subtitle type='html'>Lock on, Python &amp;amp; musique</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-1527025213670185732</id><published>2010-10-31T07:13:00.000-07:00</published><updated>2010-10-31T07:22:36.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Alice In Chains</title><content type='html'>Petit retour sur un groupe mythique des années 80/90, Alice In Chains, le blog de yusuf retrace l'histoire de ce groupe (très bien détaillé)&lt;br /&gt;&lt;a href="http://yusuf-filth.blogspot.com/2008/12/alice-in-chains.html"&gt;http://yusuf-filth.blogspot.com/2008/12/alice-in-chains.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;un de ses membre, layne staley, mort en 2002&amp;nbsp; a écrit /interprété&amp;nbsp; quelques excellentissimes morceau de ce groupe &lt;br /&gt;&lt;br /&gt;nutshell:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=alsUu-MGE9g&amp;amp;feature=related"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lfFtyOpwQkQ?fs=1&amp;amp;hl=fr_FR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lfFtyOpwQkQ?fs=1&amp;amp;hl=fr_FR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=alsUu-MGE9g&amp;amp;feature=related"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=alsUu-MGE9g&amp;amp;feature=related"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Would ?:&lt;br /&gt;&lt;a href="http://www.blogger.com/goog_1001520443"&gt;&lt;/a&gt;&lt;a href="http://www.youtube.com/watch?v=QA8Vq4nEkQc&amp;amp;ob=av2n"&gt;http://www.youtube.com/watch?v=QA8Vq4nEkQc&amp;amp;ob=av2n&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-1527025213670185732?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/1527025213670185732/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=1527025213670185732' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1527025213670185732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1527025213670185732'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/10/rip-layne-staley.html' title='Alice In Chains'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2377857611702048168</id><published>2010-05-11T14:33:00.000-07:00</published><updated>2010-05-11T14:33:43.700-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>FC2 : module TEWS</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Ce module est très simple, il avance très vite, il reste à implémenter les affichages graphique en fonction du type de signal (tracking/scan/missile) et surtout tester les différentes cibles afin de renseigner le fichier text de donnée cible&lt;/div&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ExXotvuyQG4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ExXotvuyQG4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;petite copie d'écran avec le module carte :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_94n36WbkF2I/S-nNIHRPX5I/AAAAAAAAL9c/UJbH0ga7rF4/s1600/copie_ecran.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_94n36WbkF2I/S-nNIHRPX5I/AAAAAAAAL9c/UJbH0ga7rF4/s320/copie_ecran.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2377857611702048168?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2377857611702048168/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2377857611702048168' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2377857611702048168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2377857611702048168'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/05/fc2-module-tews.html' title='FC2 : module TEWS'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_94n36WbkF2I/S-nNIHRPX5I/AAAAAAAAL9c/UJbH0ga7rF4/s72-c/copie_ecran.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-6123507712110675992</id><published>2010-05-10T10:02:00.000-07:00</published><updated>2010-05-10T10:02:11.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>FC2 : Application Carte</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;L'application carte fonctionne , la fonction de corrélation est débuggée, voilà ce que cela donne en préparation de mission :&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7X1edQdcfiA&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7X1edQdcfiA&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;et voilà ce que cela donne lors du déroulement du jeux :&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7ycXUWBrlTU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7ycXUWBrlTU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;La fonction "BRAA" n'est pas implémentée, elle sera peut être nécessaire à voir à l'usage ....&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;L'utilisation d'icônes spécifiques est peut être à envisager&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-6123507712110675992?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/6123507712110675992/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=6123507712110675992' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6123507712110675992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6123507712110675992'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/05/fc2-application-carte.html' title='FC2 : Application Carte'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-3054139429863507532</id><published>2010-05-09T13:21:00.000-07:00</published><updated>2010-05-09T13:21:00.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DEBIAN'/><title type='text'>LINUX : CONVERSION DE FICHIER VIDEO</title><content type='html'>Petit lien qui rappelle comment convertir des fichiers en utilisant Mencoder (mplayer) &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.commentcamarche.net/faq/8183-comment-convertir-un-clip-video-en-flv-et-inversement#sous-linux"&gt;http://www.commentcamarche.net/faq/8183-comment-convertir-un-clip-video-en-flv-et-inversement#sous-linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;mencoder&amp;nbsp; -ovc help&lt;br /&gt;donne la liste des codec utilisables en ecriture ...&lt;br /&gt;mencoder out-1.ogv -ovc lavc -o video2.avi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-3054139429863507532?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/3054139429863507532/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=3054139429863507532' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3054139429863507532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3054139429863507532'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/05/linux-conversion-de-fichier-video.html' title='LINUX : CONVERSION DE FICHIER VIDEO'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5784094255985923224</id><published>2010-05-09T02:33:00.001-07:00</published><updated>2010-05-09T02:34:02.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DEBIAN'/><title type='text'>LINUX DEBIAN : installation du drivers propriétaire debian</title><content type='html'>petit article bien clair qui explique installation des drivers nvidia sous débian testing :&lt;br /&gt;&lt;a href="http://geekeries.de-labrusse.fr/?p=31#comments"&gt;http://geekeries.de-labrusse.fr/?p=31#comments&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5784094255985923224?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5784094255985923224/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5784094255985923224' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5784094255985923224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5784094255985923224'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/05/linux-debian-installation-du-drivers.html' title='LINUX DEBIAN : installation du drivers propriétaire debian'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-4498189222247672372</id><published>2010-05-08T07:58:00.000-07:00</published><updated>2010-05-09T02:37:15.395-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>FC2 : Application Carte, mise à jour du terrain (Mise à Jour)</title><content type='html'>après modification du script de conversion et récupération des données du site USGS voici la nouvelle carte&lt;br /&gt;les corrections d'erreur ont été automatisée dans le nouveaux script et le gain de temps est important.&lt;br /&gt;L'interface avec lock on FC2 est fonctionnelle et permet l'affichage des avions + piste d'atterrissage&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;- afficher des infos groupée si on a des vols en  formations (&amp;lt;500m et vecteur vitesse similaire)--&amp;gt; &lt;span style="color: lime;"&gt;Fonctionnel &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;- afficher le nom  des bases/aéroports --&amp;gt; &lt;span style="color: lime;"&gt;Fonctionnel &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;- calcul de BRAA&lt;/div&gt;- changer en fonction de la  mission la coalition des aeroport (nouveaux avec FC2) --&amp;gt; &lt;span style="color: lime;"&gt;Fonctionnel&lt;/span&gt;&lt;br /&gt;@+ &lt;br /&gt;Nota&amp;nbsp; : il est compatible windows et linux ....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-4498189222247672372?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/4498189222247672372/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=4498189222247672372' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4498189222247672372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4498189222247672372'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/fc2-application-carte-mise-jour-du.html' title='FC2 : Application Carte, mise à jour du terrain (Mise à Jour)'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8560998809644496810</id><published>2010-05-06T22:54:00.000-07:00</published><updated>2010-05-06T22:54:56.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>FC2 : application carte en cours de jeux</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_94n36WbkF2I/S-Oq03yZJbI/AAAAAAAAL8Y/7-cvDQeHtW4/s1600/capture+d%27%C3%A9cran14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_94n36WbkF2I/S-Oq03yZJbI/AAAAAAAAL8Y/7-cvDQeHtW4/s320/capture+d%27%C3%A9cran14.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_94n36WbkF2I/S-Oq7hl3YRI/AAAAAAAAL8g/Vpvkva9URVk/s1600/capture+d%27%C3%A9cran15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_94n36WbkF2I/S-Oq7hl3YRI/AAAAAAAAL8g/Vpvkva9URVk/s320/capture+d%27%C3%A9cran15.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8560998809644496810?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8560998809644496810/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8560998809644496810' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8560998809644496810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8560998809644496810'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/05/fc2-application-carte-en-cours-de-jeux.html' title='FC2 : application carte en cours de jeux'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_94n36WbkF2I/S-Oq03yZJbI/AAAAAAAAL8Y/7-cvDQeHtW4/s72-c/capture+d%27%C3%A9cran14.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2756291407736596491</id><published>2010-04-15T13:00:00.000-07:00</published><updated>2010-04-16T02:52:40.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>FC2 : Installation de Tacview et modification proposée</title><content type='html'>Le tacview black shark fonctionne très bien pour FC2, toutefois le fichier généré est énorme car sont stockés :&lt;br /&gt;- les&amp;nbsp; même objets que pour FC1&lt;br /&gt;- les éclats et trajectoires obus !!!!&lt;br /&gt;&amp;nbsp;voici le film pour l'install&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=gOYJ33oFbTo"&gt;http://www.youtube.com/watch?v=gOYJ33oFbTo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;en complément ci dessous le fichier tacview modifié :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-- Tacview ACMI - Universal Flight Analysis Tool 0.94&lt;br /&gt;-- Export script for DCS: Black Shark&lt;br /&gt;-- Copyright (C) 2006-2009 - Stra Software&lt;br /&gt;-- See http://lomac.strasoftware.com/lomac-acmi.php for more info&lt;br /&gt;&lt;br /&gt;-- ACMI text files are exported to [/Black Shark/Temp/] folder&lt;br /&gt;&lt;br /&gt;-- TO ENABLE THIS SCRIPT:&lt;br /&gt;--&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Set [EnableExportScript = true] in [/Black Shark/Config/export/config.lua]&lt;br /&gt;--&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Add [dofile("./Config/Export/TacviewExportBlackShark.lua")] at the end of [/Black Shark/Config/Export/Export.lua]&lt;br /&gt;&lt;br /&gt;-- Headers&lt;br /&gt;dofile("./Config/World/World.lua")&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Required to get mission date&lt;br /&gt;dofile("./Scripts/Database/wsTypes.lua")&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Required to get object types definitions&lt;br /&gt;&lt;br /&gt;-- Debug tools&lt;br /&gt;function table.val_to_str ( v )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "string" == type( v ) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v = string.gsub( v, "\n", "\\n" )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return "'" .. v .. "'"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return '"' .. string.gsub(v,'"', '\\"' ) .. '"'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return "table" == type( v ) and table.tostring( v ) or tostring( v )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function table.key_to_str ( k )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return k&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return "[" .. table.val_to_str( k ) .. "]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function table.tostring( tbl )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local result, done = {}, {}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for k, v in ipairs( tbl ) do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.insert( result, table.val_to_str( v ) )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; done[ k ] = true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for k, v in pairs( tbl ) do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not done[ k ] then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.insert( result,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table.key_to_str( k ) .. "=" .. table.val_to_str( v ) )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "{" .. table.concat( result, "," ) .. "}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- Terrain exporter&lt;br /&gt;function ExportTerrain()&lt;br /&gt;&lt;br /&gt;--[[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- ge (Black Shark)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(40,41);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(40,42);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(40,43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(40,44);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(41,41);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(41,42);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(41,43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(41,44);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(42,40);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(42,41);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(42,42);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(42,43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(42,44);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- ru (Black Shark)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,39);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,40);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,41);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,42);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(43,44);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,37);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,38);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,39);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,40);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,41);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,42);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,44);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,37);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,38);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,39);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,40);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- ua (Flaming Cliffs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,33);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,34);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(44,35);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,32);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,33);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,34);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,35);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExportSector(45,36);&lt;br /&gt;--]]&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function ExportSector(Latitude,Longitude)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local TerrainFile=io.open(string.format("./Temp/N%02uE%03u.hgt.txt",Latitude,Longitude),"wb");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for y=1200,0,-1 do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CurrentLatitude=Latitude+y/1200;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for x=0,1200 do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CurrentLongitude=Longitude+x/1200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local DCSCoordinates=LoGeoCoordinatesToLoCoordinates(CurrentLongitude,CurrentLatitude);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TerrainFile:write(LoGetAltitude(DCSCoordinates.x,DCSCoordinates.z).."\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; io.close(TerrainFile);&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- ACMI Log&lt;br /&gt;AcmiData=&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log parameters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultObjectsUpdatePeriod=1/10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Delay between two log updates (in seconds) for default objects, use [0] to force update at each frame&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BallisticObjectsUpdatePeriod=1/2,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Delay between two log updates (in seconds) for ballistic objects, use [0] to force update at each frame&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LatitudeOffset=41,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- To improve log resolution&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LongitudeOffset=36,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- To improve log resolution&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Convert Lock-On Object_Type To Tacview Object_Type&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectTypeLookupTable=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Destroyed]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Air]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Helicopter]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x18,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Helicopters (including rotary-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Airplane]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Fighter]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_F_Bomber]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Intercepter]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Intruder]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Cruiser]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Battleplane]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aeroplanes (including fixed-wing drones)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Free_Fall]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Snars]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Chaff]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x50,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Chaff (obviously a chaff cluster)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Flare]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x54,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Flare&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Parts]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [203]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x60,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Minor object (e.g. cartridge)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_FuelTank]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Ground]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Tank]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_NoWeapon]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypePredator_GCS] &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypePredator_TrojanSpirit]=0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Gun]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeSandbox]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeBunker]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeAutogun]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Infantry&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeSoldier_AK]&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Infantry&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_MissGun]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeRPG]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Infantry&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsTypeSoldier_RPG]&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Infantry&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_SAM]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Anti-aircraft warfare (usually: SAM and AAA)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Moving]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_NoWeapon]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Gun]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Miss]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_ChildMiss]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_MissGun]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armored fighting vehicle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Civil]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x28,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed vehicles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Standing]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_NoWeapon]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Gun]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Miss]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Anti-aircraft warfare (usually: SAM and AAA)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_ChildMiss]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Anti-aircraft warfare (usually: SAM and AAA)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_MissGun]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Anti-aircraft warfare (usually: SAM and AAA)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Civil]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Navy]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x30,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armed Watercraft (including submarines)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Ship]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x30,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armed Watercraft (including submarines)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AirCarrier]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x34,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aircraft carrier (including Helicopter carrier)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_HCarrier]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x34,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aircraft carrier (including Helicopter carrier)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_ArmedShip]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x30,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Armed Watercraft (including submarines)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_CivilShip]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x38,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Light/Unarmed Watercraft&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Weapon]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Missile]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AA_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AS_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_SA_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_SS_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AA_TRAIN_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AS_TRAIN_Missile]&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Missile (guided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_A]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Guided]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_BetAB]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Cluster]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Antisubmarine]&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_ODAB]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Fire]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Nuclear]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Bomb_Lighter]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4c,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Bomb (guided and unguided)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Shell]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x48,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shell&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Shell_A]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x48,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shell&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_NURS]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x44,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Rocket (unguided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Container]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x44,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Rocket (unguided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Rocket]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x44,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Rocket (unguided missiles)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Static]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_AirdromePart]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_WingPart]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Building&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Free_Fall]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Parts]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [255]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; -1,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Particles (e.g. landing gear dust on runway)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Airdrome]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aerodrome&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_RW1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aerodrome&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_RW2]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aerodrome&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Heliport]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Aerodrome&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Explosion]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_GroundExp]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_GContainer]=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [-1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Control_Cont]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Jam_Cont]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Cannon_Cont]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Support]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Snare_Cont]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [wsType_Smoke_Cont]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x46,&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Shrapnel (e.g. Cluster-bomb fragments or exploded plane parts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Convert Lock-On Coalition_ID To Tacview Coalition_ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CoalitionLookupTable=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ["Allies"]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ["Enemies"]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Convert Lock-On Country_Name To ISO Country_Code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CountryCodeLookupTable=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 0]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "ru",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 1]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "ua",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 2]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "us",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 3]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "tr",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 4]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "uk",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 5]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "fr",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 6]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "de",&lt;br /&gt;--&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 7]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 8]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "ca",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [ 9]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "es",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [10]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "nl",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [11]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "be",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [12]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "no",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [13]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "dk",&lt;br /&gt;--&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [14]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [15]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "il",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [16]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "ge",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [17]&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp; "xi",&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- [Insurgents] (free for use ISO code)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Reduce ID size (to compact text log)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- OptimizedID=ID^0x1000000&amp;nbsp; (free in C, hard to do with LUA...)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetOptimizedID=function(ID)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if math.mod(math.floor(ID/0x1000000),2)==1 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ID-0x1000000;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Clear bit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ID+0x1000000;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Set bit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Trim Given String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Trim=function(StringToTrim)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return string.gsub(StringToTrim,"^%s*(.-)%s*$","%1");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add escape characters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DecorateName=function(Name)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Name then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Name=string.gsub(Name,"\\","\\\\");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Name=string.gsub(Name,",","\\,");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Name=string.gsub(Name,"=","\\=");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Trim and decorate name for log output&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CleanupName=function(Name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AcmiData.DecorateName(AcmiData.Trim(Name));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Convert Lock-On unit type to Tacview unit type&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConvertObjectType=function(LockOnObjectType)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local TacviewObjectType;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TacviewObjectType=AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not TacviewObjectType then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AcmiData.ObjectTypeLookupTable[-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if type(TacviewObjectType)~="table" then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return TacviewObjectType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TacviewObjectType=AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][LockOnObjectType.level2];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not TacviewObjectType then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if TacviewObjectType and type(TacviewObjectType)~="table" then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return TacviewObjectType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TacviewObjectType=AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][LockOnObjectType.level2][LockOnObjectType.level3];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not TacviewObjectType then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][LockOnObjectType.level2][-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if TacviewObjectType and type(TacviewObjectType)~="table" then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return TacviewObjectType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TacviewObjectType=AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][LockOnObjectType.level2][LockOnObjectType.level3][LockOnObjectType.level4];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not TacviewObjectType then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AcmiData.ObjectTypeLookupTable[LockOnObjectType.level1][LockOnObjectType.level2][LockOnObjectType.level3][-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return TacviewObjectType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Begin to log ACMI data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BeginLog=function(self)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Reset objects lists&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LastObjectsStatus={};&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Last frame object status&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LoggedObjectsStatus={};&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Last logged object status (usually older than LastObjectsStatus)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Reset tools&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.NextDefaultObjectsUpdateTime=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.NextBallisticObjectsUpdateTime=0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Create a new log file for each mission&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile=io.open("./Temp/Tacview-"..os.date("%Y%m%d-%H%M%S")..".txt.acmi","wb");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not self.AcmiFile then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- UTF-8 BOM header&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(string.char(0xEF,0xBB,0xBF));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Core Header&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("FileType=text/acmi/tacview\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("FileVersion=1.2\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("Source=LOCK ON Flaming Cliff 2.0\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("Recorder=Tacview 0.94\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("RecordingTime="..os.date("!%Y-%m-%dT%H:%M:%SZ",now).."\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local PlayerName=LoGetPilotName();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PlayerName then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("Author="..self.CleanupName(PlayerName).."\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Declarations&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if MissionDate then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Crimea Time Zone: Winter(UTC+2) Summer(DST=UTC+3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- 3 hours time shift calculation (assume summer Crimea time shift)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local LocalRefTime=os.time{year=2004,month=6,day=22,hour=0};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local UTCRefTime=os.time{year=2004,month=6,day=21,hour=21};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local TimeShift=LocalRefTime-UTCRefTime;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Need to manualy apply DST bias because nothing is simple with LUA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CurrentDate=os.date("*t",now);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local IsDst;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if CurrentDate and CurrentDate.isdst==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IsDst=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IsDst=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Substract 3 hours from the current mission time (not easy with lua)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local LocalMissionTime=os.time{year=MissionDate.Year,month=MissionDate.Month,day=MissionDate.Day,hour=0,isdst=IsDst};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local UTCMissionTime=LocalMissionTime-TimeShift+LoGetMissionStartTime();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local MissionTimeTable=os.date("*t",UTCMissionTime);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("MissionTime="..string.format("%04u-%02u-%02uT%02u:%02u:%02uZ",MissionTimeTable.year,MissionTimeTable.month,MissionTimeTable.day,MissionTimeTable.hour,MissionTimeTable.min,MissionTimeTable.sec).."\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("LatitudeOffset="..self.LatitudeOffset.."\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("LongitudeOffset="..self.LongitudeOffset.."\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("Coalition=Allies,Red\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("Coalition=Enemies,Blue\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write("ProvidedEvents=Removed\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Additional Information&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local PlayerID=LoGetPlayerPlaneId();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PlayerID then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(string.format("MainAircraftID=%x\n",self.GetOptimizedID(PlayerID)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Update ACMI log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateLog=function(self)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Check parameters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not AcmiData.AcmiFile then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Format current frame time&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CurrentTime=LoGetModelTime();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local FormatedTime=string.format("#%.2f\n",CurrentTime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ShouldUpdateLog=true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add/Update default objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if CurrentTime&amp;gt;=self.NextDefaultObjectsUpdateTime then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ShouldUpdateLog=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.NextDefaultObjectsUpdateTime=CurrentTime+self.DefaultObjectsUpdatePeriod;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local DefaultObjectsList=LoGetWorldObjects();&amp;nbsp;&amp;nbsp;&amp;nbsp; -- LoGetWorldObjects("units");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if self:AddUpdateObjects(DefaultObjectsList,FormatedTime,ShouldUpdateLog)==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add/Update ballistic objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if CurrentTime&amp;gt;=self.NextBallisticObjectsUpdateTime then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ShouldUpdateLog=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.NextBallisticObjectsUpdateTime=CurrentTime+self.BallisticObjectsUpdatePeriod;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local BallisticObjectsList=LoGetWorldObjects("ballistic");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if self:AddUpdateObjects(BallisticObjectsList,FormatedTime,ShouldUpdateLog)==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Remove destroyed objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self:RemoveObjects(DefaultObjectsList,BallisticObjectsList,FormatedTime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add/Update objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddUpdateObjects=function(self,CurrentObjectsList,FormatedTime,ShouldUpdateLog)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Check parameters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not CurrentObjectsList then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Dump objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local LogWasUpdated=false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for ID,Object in pairs(CurrentObjectsList) do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Check Object Type&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ObjectType=self.ConvertObjectType(Object.Type);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType~=-1 then&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Ignore some objects (like particles clouds)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Reduce ID size (to compact text log)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local OptimizedID=self.GetOptimizedID(ID);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add new object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not self.LastObjectsStatus[ID] then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local LogLine;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Time prefix&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if FormatedTime then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogLine=FormatedTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogLine="";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Object/Pilot Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ObjectName=Object.Name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local PilotName;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Object.UnitName then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PilotName=Object.UnitName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PilotName="";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Object Type&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ObjectTypeFormated;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType and type(ObjectType)=="number" then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectTypeFormated=string.format("%x",ObjectType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- This will help to track unknown types&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectTypeFormated=string.format("%s.%s.%s.%s",Object.Type.level1,Object.Type.level2,Object.Type.level3,Object.Type.level4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Coalition&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CoalitionID;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType==0x48 or ObjectType==0x50 or ObjectType==0x54 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CoalitionID="?";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Chaff/Flare/Shell coalition is not reliable in DCS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Object.Coalition then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CoalitionID=self.CoalitionLookupTable[Object.Coalition];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not CoalitionID then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CoalitionID="?";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CoalitionID="?";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Country&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local CountryCode;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Object.Country then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CountryCode=self.CountryCodeLookupTable[Object.Country];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not CountryCode then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CountryCode="?";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CountryCode="?";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Group Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local GroupName;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Object.GroupName then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GroupName=Object.GroupName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GroupName="?";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- modification yoann suppression des shrapnels&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType ~= 0x46 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Declare new object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(LogLine..string.format("+%x,?,%s,%s,%s,%s,%s,%s,?\n",OptimizedID,ObjectTypeFormated,CoalitionID,CountryCode,self.CleanupName(ObjectName),self.CleanupName(PilotName),self.CleanupName(GroupName)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogWasUpdated=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Update object data as required&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; --&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- modification yoann suppression des shrapnels&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType ~= 0x46 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if self:UpdateObject(ID,Object,ObjectType,self.LoggedObjectsStatus[ID],FormatedTime,ShouldUpdateLog)==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogWasUpdated=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Completed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return LogWasUpdated;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Fix Yaw (because FC/BS map is a 2D projection, not a true 3D sphere)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FixedYaw=function(Yaw,RefX,RefZ,Latitude,Longitude)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ToNorthPos=LoGeoCoordinatesToLoCoordinates(Longitude,Latitude+.001);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ToNorthX=ToNorthPos.z-RefZ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ToNorthY=ToNorthPos.x-RefX;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ToNorthLength=math.sqrt(ToNorthX*ToNorthX+ToNorthY*ToNorthY);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ToNorthLength&amp;gt;0 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Yaw-math.asin(ToNorthX/ToNorthLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Yaw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Update one object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateObject=function(self,ID,CurrentObjectData,ObjectType,PrevObjectData,FormatedTime,ShouldUpdateLog)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log object dynamic properties&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ChangeDetected=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local LogWasUpdated=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local Log="";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Latitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.LatLongAlt.Lat~=PrevObjectData.LatLongAlt.Lat then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..string.format(",%.6f",CurrentObjectData.LatLongAlt.Lat-self.LatitudeOffset);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Longitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.LatLongAlt.Long~=PrevObjectData.LatLongAlt.Long then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..string.format(",%.6f",CurrentObjectData.LatLongAlt.Long-self.LongitudeOffset);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Altitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.LatLongAlt.Alt~=PrevObjectData.LatLongAlt.Alt then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..string.format(",%.2f",CurrentObjectData.LatLongAlt.Alt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Roll/Pitch/Yaw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType==0x48 or ObjectType==0x50 or ObjectType==0x54 then&amp;nbsp;&amp;nbsp;&amp;nbsp; -- flare/chaff/shell&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Do not log roll/pitch/yaw to reduce recording size&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",0,0,0\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",,,\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ObjectType==0x4c and CurrentObjectData.Name=="" then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Emulate bomblets orientation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",?,?,?\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",,,\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Roll&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.Bank~=PrevObjectData.Bank then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local NewFormatedRoll=string.format(",%.1f",math.mod(math.deg(CurrentObjectData.Bank),360));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local RollIsDifferent=true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevObjectData then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local OldFormatedRoll=string.format(",%.1f",math.mod(math.deg(PrevObjectData.Bank),360));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if NewFormatedRoll==OldFormatedRoll then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RollIsDifferent=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if RollIsDifferent==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..NewFormatedRoll;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- not different enougth to be dumped&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Pitch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.Pitch~=PrevObjectData.Pitch then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local NewFormatedPitch=string.format(",%.1f",-math.mod(math.deg(-CurrentObjectData.Pitch),360));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local PitchIsDifferent=true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevObjectData then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local OldFormatedPitch=string.format(",%.1f",-math.mod(math.deg(-PrevObjectData.Pitch),360));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if NewFormatedPitch==OldFormatedPitch then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PitchIsDifferent=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PitchIsDifferent==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..NewFormatedPitch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- not different enougth to be dumped&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Yaw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or CurrentObjectData.Heading~=PrevObjectData.Heading then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local NewFormatedYaw=string.format(",%.1f\n",math.mod(math.deg(AcmiData.FixedYaw(CurrentObjectData.Heading,CurrentObjectData.Position.x,CurrentObjectData.Position.z,CurrentObjectData.LatLongAlt.Lat,CurrentObjectData.LatLongAlt.Long)),360));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local YawIsDifferent=true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevObjectData then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local OldFormatedYaw=string.format(",%.1f\n",math.mod(math.deg(AcmiData.FixedYaw(PrevObjectData.Heading,PrevObjectData.Position.x,PrevObjectData.Position.z,PrevObjectData.LatLongAlt.Lat,PrevObjectData.LatLongAlt.Long)),360));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if NewFormatedYaw==OldFormatedYaw then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; YawIsDifferent=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if YawIsDifferent==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..NewFormatedYaw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeDetected=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",\n";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- not different enougth to be dumped&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=Log..",\n";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if not PrevObjectData or ( ChangeDetected==true and ShouldUpdateLog==true ) then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local OptimizedID=self.GetOptimizedID(ID);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if FormatedTime then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(FormatedTime..string.format("%x",OptimizedID)..Log);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(string.format("%x",OptimizedID)..Log);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogWasUpdated=true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Remember Last Logged Object Properties&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LoggedObjectsStatus[ID]=CurrentObjectData;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Remember Current Frame Object Properties&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LastObjectsStatus[ID]=CurrentObjectData;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Complete&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return LogWasUpdated;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Remove any destroyed objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RemoveObjects=function(self,DefaultObjectsList,BallisticObjectsList,FormatedTime)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local Log;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for ID,Object in pairs(self.LastObjectsStatus) do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (not DefaultObjectsList or not DefaultObjectsList[ID]) and (not BallisticObjectsList or not BallisticObjectsList[ID]) then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log last position if required&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; local ObjectType=self.ConvertObjectType(Object.Type);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if self:UpdateObject(ID,Object,ObjectType,self.LoggedObjectsStatus[ID],FormatedTime,true)==true then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Prefix event with time if required&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if FormatedTime then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log=FormatedTime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FormatedTime=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log="";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log Event&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.AcmiFile:write(Log..string.format("!20,%x\n",self.GetOptimizedID(ID)));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- Remove object from lists&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LoggedObjectsStatus[ID]=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.LastObjectsStatus[ID]=nil;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Stop ACMI logging&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EndLog=function(self)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if self.AcmiFile then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; io.close(self.AcmiFile);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-- (Hook) Works once right before mission start.&lt;br /&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local PrevLuaExportStart=LuaExportStart;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LuaExportStart=function()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExportTerrain();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AcmiData:BeginLog();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevLuaExportStart then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PrevLuaExportStart();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- (Hook) Works right after every simulation frame.&lt;br /&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local PrevLuaExportAfterNextFrame=LuaExportAfterNextFrame;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LuaExportAfterNextFrame=function()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AcmiData:UpdateLog();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevLuaExportAfterNextFrame then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PrevLuaExportAfterNextFrame();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- (Hook) Works once right after mission stop.&lt;br /&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local PrevLuaExportStop=LuaExportStop;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LuaExportStop=function()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AcmiData:EndLog();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if PrevLuaExportStop then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PrevLuaExportStop();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;end&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2756291407736596491?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2756291407736596491/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2756291407736596491' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2756291407736596491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2756291407736596491'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/fc2-installation-de-tacview-et.html' title='FC2 : Installation de Tacview et modification proposée'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5388580317496905844</id><published>2010-04-15T12:52:00.000-07:00</published><updated>2010-04-16T02:33:12.605-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><title type='text'>Premiers vol avec la BAF sous FC2</title><content type='html'>la premiere mission sous FC2 est un succès, reste à s'adapter à l'IA qui est moins "predicitible" que sur l'ancienne version, le radar du F15 est également plus pointu, notamment sur la gestion de la PRF&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_94n36WbkF2I/S8dudLvCJJI/AAAAAAAALy8/xGs5FAmqnLc/s1600/ScreenShot_002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_94n36WbkF2I/S8dudLvCJJI/AAAAAAAALy8/xGs5FAmqnLc/s320/ScreenShot_002.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5388580317496905844?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5388580317496905844/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5388580317496905844' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5388580317496905844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5388580317496905844'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/premiers-vol-avec-la-baf-sous-fc2.html' title='Premiers vol avec la BAF sous FC2'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_94n36WbkF2I/S8dudLvCJJI/AAAAAAAALy8/xGs5FAmqnLc/s72-c/ScreenShot_002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8190172475257386715</id><published>2010-04-05T13:46:00.000-07:00</published><updated>2010-04-06T14:11:18.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Module carte "in progress²" il est presque terminé</title><content type='html'>&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Le module carte est en bonne voie :&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;la com avec lock on est fonctionnelle&amp;nbsp;&lt;/li&gt;&lt;li&gt;l'affichage des symbole est possible&lt;/li&gt;&lt;li&gt;la suppression de symbole est possible&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;reste à faire :&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;la supression de objets qui n'existe plus (suite à crash/destruction)&lt;/li&gt;&lt;li&gt;l'affichages des pistes&lt;/li&gt;&lt;li&gt;affichage BRAA&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_94n36WbkF2I/S7pLgF3WadI/AAAAAAAALxA/4kmnlgrtOZo/s1600/module_carte.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/_94n36WbkF2I/S7pLgF3WadI/AAAAAAAALxA/4kmnlgrtOZo/s320/module_carte.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8190172475257386715?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8190172475257386715/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8190172475257386715' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8190172475257386715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8190172475257386715'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/module-carte-in-progress-il-est-presque.html' title='Module carte &quot;in progress²&quot; il est presque terminé'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_94n36WbkF2I/S7pLgF3WadI/AAAAAAAALxA/4kmnlgrtOZo/s72-c/module_carte.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-6027594192426900539</id><published>2010-04-04T02:07:00.000-07:00</published><updated>2010-04-04T02:09:29.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARTS'/><title type='text'>LCDPIX</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;profil facebook et myspace d'un photographe qui a de l'avenir .... ;-)&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;a href="http://www.facebook.com/home.php#%21/lcdpix?ref=nf"&gt;http://www.facebook.com/home.php#!/lcdpix?ref=nf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.facebook.com/home.php#%21/photo.php?pid=4281578&amp;amp;id=122273562395"&gt;http://www.facebook.com/home.php#!/photo.php?pid=4281578&amp;amp;id=122273562395&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lcdpix.fr/"&gt;www.lcdpix.fr&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-6027594192426900539?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/6027594192426900539/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=6027594192426900539' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6027594192426900539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6027594192426900539'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/lcdpix.html' title='LCDPIX'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-6715582933258211087</id><published>2010-04-02T11:05:00.000-07:00</published><updated>2010-04-04T02:11:46.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>RAFALE : vidéo des briochins</title><content type='html'>vu&lt;span class="title" title="Rafale @ 22 d\'Auron à Bourges, Electro Party par FQCB !"&gt; en live au 22 d'Auron à Bourges eh eh pas mal du tout &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="270" width="480"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/video/xakxq1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xakxq1" width="480" height="270" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/xakxq1_rafale-drive-clip-officiel_music"&gt;RAFALE - DRIVE (clip officiel)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;envoyé par &lt;a href="http://www.dailymotion.com/RISE_RECORDINGS"&gt;RISE_RECORDINGS&lt;/a&gt;. - &lt;a href="http://www.dailymotion.com/fr/channel/music"&gt;Regardez la dernière sélection musicale.&lt;/a&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-6715582933258211087?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/6715582933258211087/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=6715582933258211087' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6715582933258211087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6715582933258211087'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/04/rafale-des-potes-briochins.html' title='RAFALE : vidéo des briochins'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5311137076217131367</id><published>2010-03-31T13:37:00.000-07:00</published><updated>2010-03-31T13:37:00.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Script de conversion DTED vers image tiff</title><content type='html'>J'ai écrit ce script pour convertir les fichiers DTED nasa en image , le traitement est très lent mais peut importe 13000*6000 en 20min sur un athlon 2200 + ,&lt;br /&gt;ce script a été testé sur debian "testing" à la date du message&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;# -*- coding: utf-8 -*-&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;### yoann &lt;yoyoingrid@gmail.com&gt;&lt;br /&gt;### conversion des fichier dted contenu dans un repertoire puis concatenation pour en faire un fichier tiff&lt;br /&gt;### inspiré par un example GDAL (voir licence ci dessous)&lt;br /&gt;&lt;/yoyoingrid@gmail.com&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;###############################################################################&lt;br /&gt;# $Id$&lt;br /&gt;#&lt;br /&gt;# Project:&amp;nbsp; GDAL Python samples&lt;br /&gt;# Purpose:&amp;nbsp; Script to replace specified values from the input raster file&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with the new ones. May be useful in cases when you don't like&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value, used for NoData indication and want replace it with other&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value. Input file remains unchanged, results stored in other file.&lt;br /&gt;# Author:&amp;nbsp;&amp;nbsp; Andrey Kiselev, dron@remotesensing.org&lt;br /&gt;#&lt;br /&gt;###############################################################################&lt;br /&gt;# Copyright (c) 2003, Andrey Kiselev &lt;dron@remotesensing.org&gt;&lt;br /&gt;# &lt;br /&gt;# Permission is hereby granted, free of charge, to any person obtaining a&lt;br /&gt;# copy of this software and associated documentation files (the "Software"),&lt;br /&gt;# to deal in the Software without restriction, including without limitation&lt;br /&gt;# the rights to use, copy, modify, merge, publish, distribute, sublicense,&lt;br /&gt;# and/or sell copies of the Software, and to permit persons to whom the&lt;br /&gt;# Software is furnished to do so, subject to the following conditions:&lt;br /&gt;#&lt;br /&gt;# The above copyright notice and this permission notice shall be included&lt;br /&gt;# in all copies or substantial portions of the Software.&lt;br /&gt;#&lt;br /&gt;# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&lt;br /&gt;# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL&lt;br /&gt;# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING&lt;br /&gt;# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER&lt;br /&gt;# DEALINGS IN THE SOFTWARE.&lt;br /&gt;###############################################################################&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;from PIL import Image&lt;br /&gt;import sys&lt;br /&gt;import math&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from osgeo import gdal&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from osgeo.gdalconst import *&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gdal.TermProgress = gdal.TermProgress_nocb&lt;br /&gt;except ImportError:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import gdal&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from gdalconst import *&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import numpy as Numeric&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Numeric.arrayrange = Numeric.arange&lt;br /&gt;except ImportError:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import Numeric&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from osgeo import gdal_array as gdalnumeric&lt;br /&gt;except ImportError:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import gdalnumeric&lt;br /&gt;&lt;br /&gt;ny=1200&lt;br /&gt;nx=1200&lt;br /&gt;max_Latitude=0&lt;br /&gt;min_Latitude=90&lt;br /&gt;max_Longitude=0&lt;br /&gt;min_Longitude=90&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# usage&lt;br /&gt;# python gdal_3.py *.dt1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;## parcourt des fichier DTED pour établir les limites de la matrice résultante&lt;br /&gt;&lt;br /&gt;for i in sys.argv[1:]:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; indataset = gdal.Open( i, GA_ReadOnly )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print indataset.GetGeoTransform()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; information = indataset.GetGeoTransform()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude= float(information[3])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution_lati=abs(float(information[5]))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude = int(Numeric.rint(Latitude))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude= float(information[0])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution_longi=abs(float(information[1]))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude = int(Numeric.rint(Longitude))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Latitude&amp;gt;max_Latitude:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max_Latitude=Latitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Latitude&lt;min_latitude:&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; min_Latitude=Latitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Longitude&amp;gt;max_Longitude:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max_Longitude=Longitude&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Longitude&lt;min_longitude:&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; min_Longitude=Longitude&lt;br /&gt;min_Latitude=min_Latitude-1200*resolution_lati&lt;br /&gt;max_Longitude=max_Longitude+1200*resolution_longi&lt;br /&gt;&lt;br /&gt;nb_pixel_Lati = (max_Latitude-min_Latitude)/resolution_lati&lt;br /&gt;nb_pixel_Longi = (max_Longitude-min_Longitude)/resolution_longi&lt;br /&gt;&lt;br /&gt;print "nb pixel",nb_pixel_Lati,nb_pixel_Longi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print 'max_Latitude',max_Latitude,'min_Latitude',min_Latitude&lt;br /&gt;print 'max_Longitude',max_Longitude,'min_Longitude',min_Longitude&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;datas_dted=Numeric.zeros((1200,1200,3),dtype=Numeric.uint8)&lt;br /&gt;scanline_totale=Numeric.zeros((nb_pixel_Lati+1,nb_pixel_Longi),dtype=Numeric.uint32)&lt;br /&gt;max_altitude=0&lt;br /&gt;## parcourt des fichier DTED pour remplir la matrice&lt;br /&gt;for i in sys.argv[1:]:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; indataset = gdal.Open( i, GA_ReadOnly )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; information = indataset.GetGeoTransform()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude= float(information[3])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution_lati=abs(float(information[5]))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude = int(Numeric.rint(Latitude))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude= float(information[0])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution_longi=abs(float(information[1]))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude = int(Numeric.rint(Longitude))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; index_lati=(max_Latitude-Latitude)*ny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; index_longi=(Longitude-min_Longitude)*nx&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'index',index_lati,index_longi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nom_du_fichier="DTED_LAT_"+str(Latitude)+"_LONG_"+str(Longitude)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print nom_du_fichier&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for iBand in range(1, indataset.RasterCount + 1):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; inband = indataset.GetRasterBand(iBand)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for i in range(inband.YSize - 1, -1, -1):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline = inband.ReadAsArray(0, i, inband.XSize, 1, inband.XSize, 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; seuil_alt=0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline[0][scanline[0]&amp;lt;=seuil_alt]=0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if Numeric.max(scanline)&amp;gt;max_altitude:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; max_altitude=Numeric.max(scanline)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # on supprime systèmatiquement le dernier indice&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline_2=Numeric.delete(scanline,-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gradient=scanline_2[1:]-scanline_2[:-1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while Numeric.min(gradient)&amp;lt;-500:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline_2[Numeric.argmin(gradient)+1]=scanline_2[Numeric.argmin(gradient)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gradient=scanline_2[1:]-scanline_2[:-1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # on ajjoute des lignes à gauche et à droite pour le padding en fonction de la longi actuelle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tmp_ligne_deb=Numeric.zeros((index_longi))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tmp_ligne_fin=Numeric.zeros((nb_pixel_Longi-index_longi-nx))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline_2=Numeric.insert(scanline_2,tmp_ligne_deb,0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline_2=Numeric.append(scanline_2,tmp_ligne_fin)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scanline_totale[index_lati+i]=scanline_totale[index_lati+i]+scanline_2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del indataset&lt;br /&gt;print max_altitude&lt;br /&gt;&lt;br /&gt;# on construit une image RVB&lt;br /&gt;scanline_totale_r=Numeric.zeros((nb_pixel_Lati+1,nb_pixel_Longi),dtype=Numeric.uint8)&lt;br /&gt;scanline_totale_v=Numeric.zeros((nb_pixel_Lati+1,nb_pixel_Longi),dtype=Numeric.uint8)&lt;br /&gt;scanline_totale_b=Numeric.zeros((nb_pixel_Lati+1,nb_pixel_Longi),dtype=Numeric.uint8)&lt;br /&gt;&lt;br /&gt;indices=scanline_totale[(scanline_totale&amp;gt;0)]&lt;br /&gt;## gestion de l'altimétrie (variation de couleur)&lt;br /&gt;scanline_totale_r[scanline_totale&amp;gt;0]=150&lt;br /&gt;scanline_totale_v[scanline_totale&amp;gt;0]=Numeric.asarray(scanline_totale[scanline_totale&amp;gt;0]*(150-75)/max_altitude+75,dtype=Numeric.uint8)&lt;br /&gt;scanline_totale_b[scanline_totale&amp;gt;0]=Numeric.asarray(scanline_totale[scanline_totale&amp;gt;0]*(150)/max_altitude,dtype=Numeric.uint8)&lt;br /&gt;scanline_totale_r[scanline_totale==0]=0&lt;br /&gt;scanline_totale_v[scanline_totale==0]=0&lt;br /&gt;scanline_totale_b[scanline_totale==0]=170&lt;br /&gt;scanline_totale_r[scanline_totale&amp;lt;0]=0&lt;br /&gt;scanline_totale_v[scanline_totale&amp;lt;0]=255&lt;br /&gt;scanline_totale_b[scanline_totale&amp;lt;0]=0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# sauvegarde&lt;br /&gt;donnee_dted=Numeric.dstack((scanline_totale_r,scanline_totale_v,scanline_totale_b))&lt;br /&gt;image=Image.fromarray(donnee_dted)&lt;br /&gt;image.save("sortie" + ".tif", "TIFF")&lt;/min_longitude:&gt;&lt;/min_latitude:&gt;&lt;/dron@remotesensing.org&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5311137076217131367?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5311137076217131367/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5311137076217131367' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5311137076217131367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5311137076217131367'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/script-de-conversion-dted-vers-image.html' title='Script de conversion DTED vers image tiff'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-4618568035558948616</id><published>2010-03-31T12:47:00.000-07:00</published><updated>2010-03-31T12:47:18.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Module carte "in progress"</title><content type='html'>&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/PM7JXnLU3MSjNdGQw733vw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_94n36WbkF2I/S7OmhYGXCeI/AAAAAAAALwA/NstRKv1Jg-U/s400/module_map.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-4618568035558948616?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/4618568035558948616/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=4618568035558948616' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4618568035558948616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4618568035558948616'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/module-carte-in-progress.html' title='Module carte &quot;in progress&quot;'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_94n36WbkF2I/S7OmhYGXCeI/AAAAAAAALwA/NstRKv1Jg-U/s72-c/module_map.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-3939316266451680539</id><published>2010-03-26T23:25:00.000-07:00</published><updated>2010-03-26T23:25:18.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LO FC 2 est dispo !!!!!</title><content type='html'>comme c'est zoli !!!!!&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8B-H_pGIvi4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8B-H_pGIvi4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-3939316266451680539?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/3939316266451680539/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=3939316266451680539' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3939316266451680539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3939316266451680539'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/lo-fc-2-est-dispo.html' title='LO FC 2 est dispo !!!!!'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2656442113050148789</id><published>2010-03-24T14:05:00.000-07:00</published><updated>2010-03-24T14:05:27.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>FONCTIONS PREVUES POUR L'AFFICHAGE DE LA CARTE</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;La carte est fonctionnelle et affiche la carte vectorielle 8 niveau &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;les fonctions suivantes sont prévues pour le module d'affichage des cartes :&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;calcul de "bullseye"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;calcul de "bearing / angle"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;affichage d'annotation sur la carte&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Affichage des bases&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;affichage des pistes (symboles Mil - Std like)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2656442113050148789?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2656442113050148789/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2656442113050148789' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2656442113050148789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2656442113050148789'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/fonctions-prevues-pour-laffichage-de-la.html' title='FONCTIONS PREVUES POUR L&apos;AFFICHAGE DE LA CARTE'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-1431845006578790386</id><published>2010-03-20T09:49:00.001-07:00</published><updated>2010-03-20T09:50:03.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT_RESEAU'/><title type='text'>Récepteur UDP</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;ci joint le code du récepteur UDP, pas d'astuce particulières sauf en ce qui concerne le lancement de plusieurs récepteurs sur un seul PC&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;import socket&lt;br /&gt;&lt;br /&gt;UDP_IP="192.168.0.11"&lt;br /&gt;UDP_PORT=8123&lt;br /&gt;&lt;br /&gt;sock = socket.socket( socket.AF_INET, # Internet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket.SOCK_DGRAM ) # UDP&lt;br /&gt;# permet de lancer plusieurs abonné sur un meme PC&lt;br /&gt;sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)&lt;br /&gt;sock.bind( (UDP_IP,UDP_PORT) )&lt;br /&gt;&lt;br /&gt;while True:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data, addr = sock.recvfrom( 1024 ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Message :", data&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-1431845006578790386?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/1431845006578790386/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=1431845006578790386' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1431845006578790386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1431845006578790386'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/recepteur-udp.html' title='Récepteur UDP'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8223132215942152527</id><published>2010-03-20T08:30:00.000-07:00</published><updated>2010-03-21T13:01:10.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Vectorisation de la carte DTED</title><content type='html'>pour l'affichage futur via cairo, j'ai vectorisé la carte au format svg en utilisant inkscape :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;pas de problème lors des zooms&lt;/li&gt;&lt;li&gt;gestion accélérée par cairo&lt;/li&gt;&lt;/ul&gt;elle ne pèse plus que&amp;nbsp; 300ko !!!&lt;br /&gt;&lt;br /&gt;la lecture du fichier sera réalisée par rsvg , le rendu par cairo, un exemple est disponible en suivant le lien ci dessous&lt;br /&gt;&lt;a href="http://www.cairographics.org/pyrsvg/"&gt;&lt;b&gt;http://www.cairographics.org/pyrsvg/&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/DOPmmSyg8Zcz_q9r8gP8PA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_94n36WbkF2I/S6TdoiuB1dI/AAAAAAAALqc/TOMAX3mqGm8/s144/carte2.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;les étapes sont :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;generation au format tiff :&lt;/li&gt;&lt;li&gt;redimensionnement de l'image (9 environ) pour passer en 2000x1000&amp;nbsp;&lt;/li&gt;&lt;li&gt;filtrage sous gimp (antiparasite filtre récursif de rayon 7) permettant de faciliter la vectorisation (surtout l'alléger)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/Sz85uxml4KhKEOnIbnlwGA?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_94n36WbkF2I/S6TlGCfN30I/AAAAAAAALq8/V-unU9v_ILc/s144/config_gimp.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;puis enfin utilisez inkskape pour vectoriser le résultat (couleur , 16 passes)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/2edq8XpzP3eT8JwH-yZ81g?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_94n36WbkF2I/S6TlGXG1UOI/AAAAAAAALrA/FdT63b_hHGI/s144/config_inkskape.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8223132215942152527?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8223132215942152527/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8223132215942152527' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8223132215942152527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8223132215942152527'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/vectorisation-de-la-carte-dted.html' title='Vectorisation de la carte DTED'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_94n36WbkF2I/S6TdoiuB1dI/AAAAAAAALqc/TOMAX3mqGm8/s72-c/carte2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-1474633395312706581</id><published>2010-03-13T09:58:00.000-08:00</published><updated>2010-03-20T09:43:06.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT_RESEAU'/><title type='text'>convertisseur TCP pour diffusion vers l'UDP</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Le code ci dessous permet l'interface avec lock et le transfert sur le réseau des trames UDP en broadcast...&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;elle fonctionne au rythme des envois de lock on &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;# -*- coding: cp1252 -*-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import threading&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import math&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import os&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import string&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import re&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import time&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import socket&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import sys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import csv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import SocketServer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;import struct&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;###socket&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;socket_udp=None&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;###hosts pour diffusion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;EMETTEUR_UDP_host = None&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;###port pour diffusion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;EMETTEUR_UDP_port = None&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;'''&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;HANDLER TCP, prend en charge l'initialisation du dialogue avec lock on , arn... + la prise en compte des messages pour diffusion sur le réseau en UDP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;'''&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;class MyTCPHandler(SocketServer.BaseRequestHandler):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def handle(self):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # reception des information de lock on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.data = self.request.recv(2048).strip()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # demande d'init de lock on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.data == "Arn.Inicio:0:1:2:" :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.request.send("Arn.Vivo:\n")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # reponse suite a la demande d'init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif self.data == "Arn.Vivo:" :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'connexion de lockon'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.request.send("Arn.Vivo:\n")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; heure=time.time()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # on envoie simplement les trames sur le réseau&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket_udp.sendto(self.data, (EMETTEUR_UDP_host, EMETTEUR_UDP_port))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(self.data)==0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;# Main program&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;def main():&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global socket_udp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global EMETTEUR_UDP_host&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global EMETTEUR_UDP_port&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # valeur d'initialisation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVEUR_TCP_host = "localhost"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVEUR_TCP_port = 8092&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMETTEUR_UDP_host = '192.168.0.255'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMETTEUR_UDP_port = 8123&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Application de routage des informations lock on UNCAST --&amp;gt; BROADCAST'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flags = sys.argv[1:]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(flags)&amp;gt;0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVEUR_TCP_ad=flags[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVEUR_TCP_port=int(flags[1])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMETTEUR_UDP_host=flags[2]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EMETTEUR_UDP_port=int(flags[3])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ CONFIGURATION DE L EMETTEUR UDP VERS LE RESEAUX ############'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ host : ',EMETTEUR_UDP_host&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ port : ',EMETTEUR_UDP_port&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # creation des sockets UDP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket_udp.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # creation du serveur TCP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ OUVERTURE DU SERVEUR TCP POUR LOCKON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ############'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ host : ',SERVEUR_TCP_host&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print '############ port : ',SERVEUR_TCP_port&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serveur_tcp = SocketServer.TCPServer((SERVEUR_TCP_host, SERVEUR_TCP_port), MyTCPHandler)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serveur_tcp.serve_forever()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;main()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-1474633395312706581?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/1474633395312706581/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=1474633395312706581' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1474633395312706581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1474633395312706581'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/exemple-de-code-broadcast-en-python.html' title='convertisseur TCP pour diffusion vers l&apos;UDP'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-326864119166413376</id><published>2010-03-13T03:10:00.000-08:00</published><updated>2010-03-13T09:59:40.084-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>SHAKAPONK : homage au clip de RHCP (give it away) et en plus ça réveille !!!!</title><content type='html'>&lt;object height="275" width="480"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/x81eth"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.dailymotion.com/swf/x81eth" width="480" height="275" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/x81eth_shaka-ponk-how-we-kill-stars_music"&gt;Shaka Ponk - How we kill stars&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;envoyé par &lt;a href="http://www.dailymotion.com/totoutard"&gt;totoutard&lt;/a&gt;. - &lt;a href="http://www.dailymotion.com/fr/channel/music"&gt;Regardez la dernière sélection musicale.&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;dommage pour les victoires de la musique ........ &lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-326864119166413376?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/326864119166413376/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=326864119166413376' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/326864119166413376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/326864119166413376'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/homage-au-clips-de-rhcp-et-ca-reveille.html' title='SHAKAPONK : homage au clip de RHCP (give it away) et en plus ça réveille !!!!'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2400519499188259696</id><published>2010-03-12T12:33:00.000-08:00</published><updated>2010-03-15T02:26:47.459-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Carte de la CRIMEE, Fin de la conversion de la carte DTED</title><content type='html'>&lt;div style="text-align: left;"&gt;la carte est convertie au format jpeg , reste à placer les aéroport et les indication qui vont bien , et bien sur l'afficher&lt;/div&gt;&lt;br /&gt;version "brut de fonderie", remarquez les erreurs du DTED (faut pas se plaindre c'est gratuit merci la NASA :-) )&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/2iK7yNf_wFqbj76Ft1Y5bg?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_94n36WbkF2I/S5qejMU_6UI/AAAAAAAALoA/Zl__10Y1Z8I/s400/sortie.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;version avec correction des erreurs dans le DTED (algo simple)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/Zcj8O3OiTr9izNp5nojtdQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_94n36WbkF2I/S5u90KFntFI/AAAAAAAALpE/gijEhgknPgA/s400/sortie.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Dted?feat=embedwebsite"&gt;dted&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2400519499188259696?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2400519499188259696/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2400519499188259696' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2400519499188259696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2400519499188259696'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/fin-de-la-conversion-de-la-carte-dted.html' title='Carte de la CRIMEE, Fin de la conversion de la carte DTED'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_94n36WbkF2I/S5qejMU_6UI/AAAAAAAALoA/Zl__10Y1Z8I/s72-c/sortie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2956390418031647090</id><published>2010-03-11T10:51:00.000-08:00</published><updated>2010-03-11T12:34:27.093-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>Avancement Visu déportées pour LOCK ON</title><content type='html'>conformément à l'architecture décrite précédemment les fonctions suivante sont prévues :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;affichage des fonctions moteurs et commande --&amp;gt; reprise du proto &lt;/li&gt;&lt;li&gt;affichage MPCD + commande --&amp;gt; reprise du proto&lt;/li&gt;&lt;li&gt;affichage TEWS + commande --&amp;gt; reprise du proto&lt;/li&gt;&lt;li&gt;affichage VSD --&amp;gt; attente lock on FC2&lt;/li&gt;&lt;li&gt;affichage de la carte avec avion du joueur + autres objets AWACS / F15/ A10&lt;/li&gt;&lt;ul&gt;&lt;li&gt;affichage d'un bullseye et calculs qui s'en suive&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;actuellement je récupère la crimée à partir du site &lt;a href="http://edcsns17.cr.usgs.gov/EarthExplorer/"&gt;EARTH EXPLORER (US GS)&lt;/a&gt;&lt;br /&gt;les fichiers récupérés sont au format DTED 1 et sont convertis pour affichage&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2956390418031647090?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2956390418031647090/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2956390418031647090' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2956390418031647090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2956390418031647090'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/avancement-visu-deportees-pour-lock-on.html' title='Avancement Visu déportées pour LOCK ON'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8770107582483271005</id><published>2010-03-09T13:55:00.001-08:00</published><updated>2010-03-09T13:55:51.220-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLACK SHARK'/><title type='text'>petite vidéo Black Shark</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8r1sOakdMAU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8r1sOakdMAU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8770107582483271005?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8770107582483271005/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8770107582483271005' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8770107582483271005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8770107582483271005'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/petite-video-black-shark.html' title='petite vidéo Black Shark'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-7036697695831037589</id><published>2010-03-07T12:05:00.000-08:00</published><updated>2010-03-14T08:26:25.923-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT_RESEAU'/><title type='text'>Modification de l'architecture</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;suite au différents problèmes rencontrés tant avec les scripts lua et les débits j'ai choisi de modifier l'architecture en tenant compte des contraintes suivantes :&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;chaque application correspond à une fonction, par exemple le MPCD devient une application spécifique &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;il est possible d'exécuter plusieurs fonctions sur un PC, et de répartir les fonctions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;le PC LOCK devient totalement serveur&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;en terme de modification cela n'est pas anodin, toute l'architecure est à revoir, mais je considère que la version actuelle est un prototype fonctionnel,&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;l'architecture visée est la suivante :&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/_94n36WbkF2I/S5QGqzDEyyI/AAAAAAAALmQ/znoIqoGRWYo/s1600-h/diagramme.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="163" src="http://2.bp.blogspot.com/_94n36WbkF2I/S5QGqzDEyyI/AAAAAAAALmQ/znoIqoGRWYo/s400/diagramme.png" width="400" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;les grands choix sont&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;architecture UDP multicast pour la distribution des information (voir peut être corba)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;architecture TCP pour les envois vers le PC LOCK ON&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-7036697695831037589?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/7036697695831037589/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=7036697695831037589' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/7036697695831037589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/7036697695831037589'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/modification-de-larchitecture.html' title='Modification de l&apos;architecture'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_94n36WbkF2I/S5QGqzDEyyI/AAAAAAAALmQ/znoIqoGRWYo/s72-c/diagramme.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-9059358848050264915</id><published>2010-03-07T10:45:00.000-08:00</published><updated>2010-03-07T11:44:59.762-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FC2'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : vidéo de FC 2 !!</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;FC 2 ne saurait tarder commme l'indique ces différentes vidéos de l'entraînement sur &lt;/span&gt;&lt;span style="font-size: small;"&gt;A-10/F-15/Su-25 ,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;la balistique des obus est modifiée, et l'effet des tracante est pas mal rendu&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;reste à voir la date de sortie .&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/i63fFShqEGU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/i63fFShqEGU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-9059358848050264915?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/9059358848050264915/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=9059358848050264915' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9059358848050264915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9059358848050264915'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/lock-on-video-de-fc-2.html' title='LOCK ON : vidéo de FC 2 !!'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5623287658486619048</id><published>2010-03-03T11:47:00.000-08:00</published><updated>2010-03-13T07:05:13.746-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nine Inch Nails'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Petite vidéo sympa de Nine inch nails</title><content type='html'>montage réalisé par un prof , superbe et adaptée à la musique&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MyCFi7lbw50&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/MyCFi7lbw50&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5623287658486619048?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5623287658486619048/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5623287658486619048' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5623287658486619048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5623287658486619048'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/petite-video-sympa-de-nine-inch-nails.html' title='Petite vidéo sympa de Nine inch nails'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-9163178876024392786</id><published>2010-03-01T13:11:00.000-08:00</published><updated>2010-03-02T11:46:04.976-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>LOCK ON : Radar</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;le mode TWS pose des problèmes car aucune informations n'est alors transmise par lock on (la question est posée sur le forum ED sans réponse pour l'instant &lt;a href="http://forums.eagle.ru/showthread.php?t=50496"&gt;http://forums.eagle.ru/showthread.php?t=50496&lt;/a&gt; ) &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;si pas de réponse alors la solution envisagée pour l'émulation du radar en mode TWS est la suivantes :&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;transmission de l'intégralité des cibles de type avions hélico au serveur&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;filtrage en fonction des paramètres suivants :&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;affichage si en mode TWS uniquement&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;affichage en fonction de l'azimut/site de l'antenne F15&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;affichage en fonction de la distance de la cible &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;si cela pose un problème de charge réseau, il faudra envisager de réduire la récurence d'envois ou de filtrer en distance&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;on verra bien &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-9163178876024392786?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/9163178876024392786/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=9163178876024392786' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9163178876024392786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9163178876024392786'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/03/lock-on-radar.html' title='LOCK ON : Radar'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-28463040968375930</id><published>2010-02-28T09:35:00.001-08:00</published><updated>2010-02-28T09:35:14.760-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Emilie Simon</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Z8wwuyFyjEo&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Z8wwuyFyjEo&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-28463040968375930?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/28463040968375930/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=28463040968375930' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/28463040968375930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/28463040968375930'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/emilie-simon.html' title='Emilie Simon'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-6089479480855694066</id><published>2010-02-27T09:22:00.000-08:00</published><updated>2010-02-27T09:22:44.690-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Ca envoie copieux .........</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/133t-GKy_ZI&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/133t-GKy_ZI&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-6089479480855694066?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/6089479480855694066/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=6089479480855694066' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6089479480855694066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6089479480855694066'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/ca-envoie-copieux.html' title='Ca envoie copieux .........'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8272698189573634366</id><published>2010-02-27T08:51:00.000-08:00</published><updated>2010-03-13T10:01:24.531-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : l'interface fonctionne nickel</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Plus de problèmes réseau !! quelques soucis avec le radar car lock on ne semble pas délivrer d'information en mode TWS&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pTp5m_JdNP0&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pTp5m_JdNP0&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8272698189573634366?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8272698189573634366/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8272698189573634366' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8272698189573634366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8272698189573634366'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/lock-on-linterface-fonctionne-nickel.html' title='LOCK ON : l&apos;interface fonctionne nickel'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5104854505111869692</id><published>2010-02-27T08:47:00.001-08:00</published><updated>2010-02-27T08:47:56.899-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Chris Cornell , tous simplement impressionnant :-o</title><content type='html'>&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/epXN1eUkFGU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/epXN1eUkFGU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5104854505111869692?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5104854505111869692/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5104854505111869692' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5104854505111869692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5104854505111869692'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/chris-cornell-tous-simplement.html' title='Chris Cornell , tous simplement impressionnant :-o'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8986634859489975307</id><published>2010-02-17T11:36:00.000-08:00</published><updated>2010-02-17T11:36:53.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : finalisation de l'interface sous glade</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;voila, l'interface est fonctionnelle et tourne bien avec lock on hors partie réseau&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_94n36WbkF2I/S3xE3KLFQZI/AAAAAAAALBw/Vdoifb4JKio/s1600-h/capture+d%27%C3%A9cran6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_94n36WbkF2I/S3xE3KLFQZI/AAAAAAAALBw/Vdoifb4JKio/s320/capture+d%27%C3%A9cran6.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;reste :&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;voir pourquoi en reseau cela lag (pb de config / routeur ?)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;à ajouter des informations concernant l'avionique dans la place qu'il reste&lt;/span&gt;&lt;/li&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;altitude baro&lt;/li&gt;&lt;li&gt;altitude radar&lt;/li&gt;&lt;li&gt;vitesse&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8986634859489975307?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8986634859489975307/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8986634859489975307' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8986634859489975307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8986634859489975307'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/lock-on-finalisation-de-linterface-sous.html' title='LOCK ON : finalisation de l&apos;interface sous glade'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_94n36WbkF2I/S3xE3KLFQZI/AAAAAAAALBw/Vdoifb4JKio/s72-c/capture+d%27%C3%A9cran6.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-4174910936727440495</id><published>2010-02-16T09:52:00.001-08:00</published><updated>2010-02-16T09:52:35.089-08:00</updated><title type='text'>LOCK ON : vidéo</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;remise en ligne de ma deuxième vidéo sur dailymotion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="275" width="480"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/xc91tu"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.dailymotion.com/swf/xc91tu" width="480" height="275" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/xc91tu_clip-lock-on_videogames"&gt;Clip Lock On&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;envoyé par &lt;a href="http://www.dailymotion.com/yoannq45"&gt;yoannq45&lt;/a&gt;. - &lt;a href="http://www.dailymotion.com/fr/channel/videogames"&gt;Plus de jeux vidéo !&lt;/a&gt;&lt;/i&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-4174910936727440495?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/4174910936727440495/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=4174910936727440495' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4174910936727440495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/4174910936727440495'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/lock-on-video.html' title='LOCK ON : vidéo'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5222019218132504638</id><published>2010-02-10T13:30:00.000-08:00</published><updated>2010-02-10T22:49:03.968-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : AMELIORATION DU RENDU VISUEL</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;changement des images et modifications sous glade afin d'améliorer le rendu, il est à noter que sous glade&lt;br /&gt;les widgets sont organisé de la façon suivante &lt;br /&gt;- Drawing area en haut &lt;br /&gt;- image&lt;br /&gt;- bouton en bas &lt;br /&gt;&lt;br /&gt;voila ce que cela donne :&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/qbDL_TG3FNN24VdMzMIx8Q?authkey=Gv1sRgCLfildm-m7C0zQE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_94n36WbkF2I/S3MlShhZpQI/AAAAAAAAK-Y/y65bqjMpLSc/s144/capture%20d%27%C3%A9cran4.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/LEBLOGDEYOANN?authkey=Gv1sRgCLfildm-m7C0zQE&amp;amp;feat=embedwebsite"&gt;LE BLOG DE YOANN&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5222019218132504638?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5222019218132504638/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5222019218132504638' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5222019218132504638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5222019218132504638'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/02/blog-post.html' title='LOCK ON : AMELIORATION DU RENDU VISUEL'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_94n36WbkF2I/S3MlShhZpQI/AAAAAAAAK-Y/y65bqjMpLSc/s72-c/capture%20d%27%C3%A9cran4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-559724113003806073</id><published>2010-01-24T09:18:00.000-08:00</published><updated>2010-01-24T09:20:31.866-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><title type='text'>LOCK ON : PROJET DE COCKPIT , le MPCD fonctionne</title><content type='html'>La liaison entre lock on et mon interface est fonctionnelle !!!!&lt;br /&gt;la partie affichage MPCD fonctionne, petite copie d'écran&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_94n36WbkF2I/S1yAiIf7qYI/AAAAAAAAKzE/hjTlxWH9-EA/s1600-h/capture+d%27%C3%A9cran2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_94n36WbkF2I/S1yAiIf7qYI/AAAAAAAAKzE/hjTlxWH9-EA/s320/capture+d%27%C3%A9cran2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;le seul problèmes est un délais de mise à jour des emports (requête sur les emports toutes les 300ms et il y'en a 11)&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;prochaine étape, récupérer les informations du TEWS pour affichage &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-559724113003806073?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/559724113003806073/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=559724113003806073' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/559724113003806073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/559724113003806073'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-projet-de-cockpit-le-mpcd.html' title='LOCK ON : PROJET DE COCKPIT , le MPCD fonctionne'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_94n36WbkF2I/S1yAiIf7qYI/AAAAAAAAKzE/hjTlxWH9-EA/s72-c/capture+d%27%C3%A9cran2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-7376796470421987372</id><published>2010-01-21T12:07:00.000-08:00</published><updated>2010-01-21T12:07:30.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : PROJET DE COCKPIT point au 21-01-10</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_94n36WbkF2I/S1iz4SSy1cI/AAAAAAAAKyM/B4ZcKWHuLsQ/s1600-h/capture+d%27%C3%A9cran1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_94n36WbkF2I/S1iz4SSy1cI/AAAAAAAAKyM/B4ZcKWHuLsQ/s320/capture+d%27%C3%A9cran1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;le projet avance (lentement) je commence à maitriser l'aspect graphique mais je n'ai pas trop le temps d'avancer sur le sujet , une petite copie d'écran pour montrer la partie MFD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-7376796470421987372?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/7376796470421987372/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=7376796470421987372' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/7376796470421987372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/7376796470421987372'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-projet-de-cockpit-point-au-21.html' title='LOCK ON : PROJET DE COCKPIT point au 21-01-10'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_94n36WbkF2I/S1iz4SSy1cI/AAAAAAAAKyM/B4ZcKWHuLsQ/s72-c/capture+d%27%C3%A9cran1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-6293991918521587792</id><published>2010-01-12T12:54:00.000-08:00</published><updated>2010-01-14T14:13:48.608-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON, gestion des projections</title><content type='html'>quelques lien donné par YODA sur les changements de repere et la projection réalisée dans lock on&lt;br /&gt;&lt;a href="http://www.blogger.com/goog_1263507112690"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.eagle.ru/showthread.php?t=44427"&gt;http://forums.eagle.ru/showthread.php?t=44427&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.eagle.ru/showpost.php?p=53829&amp;amp;postcount=7"&gt;http://forums.eagle.ru/showpost.php?p=53829&amp;amp;postcount=7&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.eagle.ru/showthread.php?t=34937&amp;amp;highlight=Curvature"&gt;http://forums.eagle.ru/showthread.php?t=34937&amp;amp;highlight=Curvature&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.eagle.ru/showthread.php?t=34937&amp;amp;highlight=Curvature"&gt;http://forums.eagle.ru/showthread.php?t=34937&amp;amp;highlight=Curvature&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;afficher des trucs dans les layout , il faut utiliser cr = widgets['layout3'].&lt;b&gt;bin_window&lt;/b&gt;.cairo_create() sinon cela ne fait pas grand chose&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-6293991918521587792?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/6293991918521587792/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=6293991918521587792' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6293991918521587792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/6293991918521587792'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-gestion-des-projections.html' title='LOCK ON, gestion des projections'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-2037025772541635566</id><published>2010-01-03T13:29:00.000-08:00</published><updated>2010-01-12T13:38:14.712-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COCKPIT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : PROJET DE COCKPIT partie 1</title><content type='html'>petits pièges :&lt;br /&gt;- lock on émet constamment le temps scénario&lt;br /&gt;- il faudra faire un thread de réception&lt;br /&gt;&lt;br /&gt;gestion des threads avec gtk&lt;br /&gt;&lt;a href="http://forum.hardware.fr/hfr/Programmation/Python/pygtk-thread-rafraichissement-sujet_99872_1.htm"&gt;http://forum.hardware.fr/hfr/Programmation/Python/pygtk-thread-rafraichissement-sujet_99872_1.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://faq.pygtk.org/index.py?req=show&amp;amp;file=faq20.006.htp"&gt;http://faq.pygtk.org/index.py?req=show&amp;amp;file=faq20.006.htp&lt;/a&gt;&lt;br /&gt;image dans le bouton&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=439954"&gt;http://ubuntuforums.org/showthread.php?t=439954&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;commande="Arn.Resp:0=129:1=31\n" attention les commandes analogique sont à donner avec X-500&lt;br /&gt;&lt;br /&gt;utiliser une eventbox pour le changement de couleut d'un label&lt;br /&gt;cairo &lt;br /&gt;&lt;a href="http://www.tortall.net/mu/wiki/PyGTKCairoTutorial"&gt;http://www.tortall.net/mu/wiki/PyGTKCairoTutorial&lt;/a&gt;&lt;br /&gt;&amp;nbsp;dessin d'une image en utilisant cairo&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/775528/drawing-a-pixbuf-onto-a-drawing-area-using-pygtk-and-glade"&gt;http://stackoverflow.com/questions/775528/drawing-a-pixbuf-onto-a-drawing-area-using-pygtk-and-glade&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;exemple pour utiliser cairo &lt;a href="http://zetcode.com/tutorials/pygtktutorial/drawingII/"&gt;http://zetcode.com/tutorials/pygtktutorial/drawingII/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;A tester :&lt;br /&gt;- masque en utilisant une image&lt;br /&gt;-&amp;nbsp; zone de détection ?&lt;br /&gt;&lt;br /&gt;transparence&lt;br /&gt;&lt;a href="http://faq.pygtk.org/index.py?req=show&amp;amp;file=faq08.013.htp"&gt;http://faq.pygtk.org/index.py?req=show&amp;amp;file=faq08.013.htp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-2037025772541635566?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/2037025772541635566/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=2037025772541635566' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2037025772541635566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/2037025772541635566'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-projet-de-cockpit-partie-1.html' title='LOCK ON : PROJET DE COCKPIT partie 1'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-5375996711496789883</id><published>2010-01-01T07:32:00.000-08:00</published><updated>2010-01-02T09:34:28.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : édition vidéo</title><content type='html'>&amp;nbsp;pour la réalisation de vidéo sur lock on&lt;br /&gt;&lt;ul&gt;&lt;li&gt;remplacer&amp;nbsp; avimaker.dll&lt;a href="http://www.fichier-dll.fr/avimaker.dll,6440"&gt; http://www.fichier-dll.fr/avimaker.dll,6440&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Utiliser l'encodeur x264vfw de très bonne qualité&lt;/li&gt;&lt;li&gt;1024x768 sinon c'est une galère (même sur un E8500@3.16ghz) &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;how to pour l'édition des tracks&amp;nbsp; &lt;br /&gt;&lt;a href="http://flankertraining.com/lomac/Making_Tracks.html#back"&gt;http://flankertraining.com/lomac/Making_Tracks.html#back&lt;/a&gt; &lt;br /&gt;&lt;a class="cssButton" href="javascript:void(0)" id="publishButton" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['postingForm'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}" target=""&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="cssButtonInner"&gt;&lt;a class="cssButton" href="javascript:void(0)" id="publishButton" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['postingForm'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}" target=""&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-5375996711496789883?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/5375996711496789883/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=5375996711496789883' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5375996711496789883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/5375996711496789883'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-edition-video.html' title='LOCK ON : édition vidéo'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8117756834537712140</id><published>2010-01-01T07:12:00.000-08:00</published><updated>2010-01-01T07:19:40.716-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON Problèmes graphiques</title><content type='html'>Ci dessous quelques liens intéressants pour la résolution de problèmes graphique sur lock on&lt;br /&gt;&lt;br /&gt;Nuage pas beau&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.checksix-forums.com/showthread.php?t=154257&amp;amp;highlight=nuages&amp;amp;page=2"&gt;http://www.checksix-forums.com/showthread.php?t=154257&amp;amp;highlight=nuages&amp;amp;page=2&lt;/a&gt;&lt;br /&gt;&amp;amp;&lt;br /&gt;&lt;a href="http://www.escadrille-kobra.fr/article/article.php?T=1222629946"&gt;http://www.escadrille-kobra.fr/article/article.php?T=1222629946&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;plantage si la densité des nuages est trop forte &lt;br /&gt;&lt;a href="http://forums.eagle.ru/showthread.php?t=9020&amp;amp;page=2"&gt;http://forums.eagle.ru/showthread.php?t=9020&amp;amp;page=2&lt;/a&gt; mais en fait il faudra rester sur moyen au niveau de l'eau&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8117756834537712140?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8117756834537712140/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8117756834537712140' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8117756834537712140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8117756834537712140'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/lock-on-problemes-graphiques.html' title='LOCK ON Problèmes graphiques'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-9091421425029697404</id><published>2010-01-01T07:03:00.001-08:00</published><updated>2010-01-02T09:20:31.203-08:00</updated><title type='text'>Meilleurs Voeux 2010!</title><content type='html'>&lt;object width="853" height="505"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QghUk4q3nxY&amp;hl=fr_FR&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/QghUk4q3nxY&amp;hl=fr_FR&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="853" height="505"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-9091421425029697404?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/9091421425029697404/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=9091421425029697404' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9091421425029697404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9091421425029697404'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2010/01/meilleurs-voeux-2010.html' title='Meilleurs Voeux 2010!'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-148916673099920783</id><published>2009-12-31T09:52:00.000-08:00</published><updated>2010-02-27T08:54:38.708-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nine Inch Nails'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>NINE INCH NAILS, Another Version of the Truth: The Gift</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thisoneisonus.org/sites/all/themes/zen/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://thisoneisonus.org/sites/all/themes/zen/logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Nine Inch Nails / Trent Reznor a mis en ligne sous différents format (DVD / vidéo HD et bientôt BluRay) des films des concerts "&lt;span class="description"&gt;Lights In The Sky Tour 2008" &lt;/span&gt;de Portland, Sacramento et Victoria&amp;nbsp; gratuitement !!!&lt;br /&gt;Les masters ont été montés par des fans, 12 personnes volontaires calée en montage vidéo !&lt;br /&gt;le résultat est téléchargeable à l'adresse suivante :&lt;a href="http://thisoneisonus.org/node/34"&gt; http://thisoneisonus.org/node/34&lt;/a&gt;&lt;br /&gt;il est a noter que NIN avait déjà mis en ligne "The SLIP" en FLAC haute qualité et des masters (piste séparées) pour favoriser les remix pas des volontaires (mis en ligne ensuite)&lt;br /&gt;après plusieurs heure de télé-chargement, le resultat est de bonne qualité (même en DVD), je regrette encore plus d'avoir manqué leur concert à Paris &lt;br /&gt;le trailer est visible sur youtube &lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4jVPiROnJ-0&amp;hl=fr_FR&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4jVPiROnJ-0&amp;hl=fr_FR&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-148916673099920783?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/148916673099920783/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=148916673099920783' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/148916673099920783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/148916673099920783'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2009/12/nine-inch-nails-another-version-of.html' title='NINE INCH NAILS, Another Version of the Truth: The Gift'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-9177562190953039112</id><published>2009-12-31T09:22:00.000-08:00</published><updated>2009-12-31T09:29:07.870-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON, contribution</title><content type='html'>J'ai réalisé une note pour la BAF concernant l'évitement des missiles dans le jeux&lt;br /&gt;cette note reprend quelques techniques déjà décrites par mitor74 (voir les références à la fin ) : &lt;a href="https://docs.google.com/fileview?id=0B263kbYa7xtGYjg2MmQwZjYtNTVhMS00NTlkLTgwODMtY2Q3OGU4ZjY3Yzk3&amp;amp;hl=fr"&gt;note&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.fr/lh/photo/S1BVPMLyh17oJhrc5UhD2g?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_94n36WbkF2I/SutRde88UsI/AAAAAAAAIQw/zjhEaBkFicw/s400/ScreenShot_028.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;De &lt;a href="http://picasaweb.google.fr/yoyoingrid/Divers?feat=embedwebsite"&gt;divers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-9177562190953039112?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/9177562190953039112/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=9177562190953039112' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9177562190953039112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/9177562190953039112'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2009/12/lock-on-contribution.html' title='LOCK ON, contribution'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_94n36WbkF2I/SutRde88UsI/AAAAAAAAIQw/zjhEaBkFicw/s72-c/ScreenShot_028.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-3750545235338021974</id><published>2009-12-31T08:52:00.000-08:00</published><updated>2010-02-28T12:06:15.626-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BAF'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON, j'ai rejoint la BAF</title><content type='html'>Après une longue hésitation :-) je me suis décidé a postuler dans une escadrille virtuelle, j'ai donc fait une demande pour intégrer la =BAF= alias la "Boulet Air Force" . On vole toutes les semaines les lundi et jeudi soir sur LOCK ON Flaming cliff (1.12a) à partir de 21h.&lt;br /&gt;&lt;a href="http://www.zedroopy.net/"&gt;&lt;br /&gt;http://www.zedroopy.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-3750545235338021974?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/3750545235338021974/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=3750545235338021974' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3750545235338021974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3750545235338021974'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2009/12/lock-on-jai-rejoint-la-baf.html' title='LOCK ON, j&apos;ai rejoint la BAF'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-8686289899009447637</id><published>2009-12-31T02:55:00.001-08:00</published><updated>2009-12-31T08:50:45.579-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DELTA 3D'/><title type='text'>DELTA3D : essais de réalisation 3D</title><content type='html'>J'ai récemment entrepris de réaliser des essais avec delta 3D sous LINUX, ce fut "sportif" car il fallu dans un premier temps compiler delta3D qui nécessite la compilation de pas mal de librairie qui ne sont pas présentes sur Debian.&lt;br /&gt;La page suivante donne la procédure à réaliser&lt;br /&gt;&lt;a href="http://sourceforge.net/apps/mediawiki/delta3d/index.php?title=Debian_Testing_Edition"&gt;http://sourceforge.net/apps/mediawiki/delta3d/index.php?title=Debian_Testing_Edition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;quelques conseils&lt;br /&gt;&lt;ul&gt;&lt;li&gt;compiler l'ensemble en étant utilisateur lambda (utiliser CMAKE) pour ne pas tous casser sur la debian, utiliser un environnement de travail&lt;br /&gt;&lt;/li&gt;&lt;li&gt;installer la dernière version d'openscenegraph car la version livrée avec debian est buggée&lt;/li&gt;&lt;li&gt;utiliser les dépendances mises à disposition sur le site delta3D&lt;br /&gt;&lt;/li&gt;&lt;li&gt;être patient (1 journée en gros pour la création d'un environnement)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Pour mes tests je voulais afficher un terrain en 3D avec des modèles d'avion 3D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Terrain :&lt;/span&gt;&lt;br /&gt;j'ai utilisé des DTED issus d'un site gouvernemental US (USGS) :&lt;br /&gt;&lt;a href="http://edcsns17.cr.usgs.gov/EarthExplorer/"&gt;http://edcsns17.cr.usgs.gov/EarthExplorer/&lt;/a&gt;&lt;br /&gt;ce site est bien organisé et permet la selection de différents format et notamment DTED, sélectionner pour cela "digital elevation" puis "SRTM", le reste est assez simple a utiliser&lt;br /&gt;pour la france on obtient du DTED 1 pour les USA DTED 2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Avion :&lt;/span&gt;&lt;br /&gt;j'ai utilisé les modèles 3D disponible sur Google (&lt;a href="http://sketchup.google.com/"&gt;http://sketchup.google.com/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;quelques lignes de C++ plus tard voilà le résultat :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IzkU8Jvrayw&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/IzkU8Jvrayw&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rq : le fait que cela soit en noir et blanc est voulu (look &amp;amp; feel IR)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ensuite j'ai testé quelques traitement graphique directement dans la carte graphique (shader) en utilisant le mode prérender de DELTA 3D,&lt;br /&gt;&lt;br /&gt;le principe est :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;on crée une caméra filmant la scène (l'avion + le terrain)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;on récupère l'image &lt;/li&gt;&lt;li&gt;on crée une deuxième caméra , filmant un plan&lt;/li&gt;&lt;li&gt;on utilise l'image pour la texture du plan &lt;/li&gt;&lt;li&gt;on traite le plan en utilisant le shader  3D (GLSL)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;cela donne :&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2h51ygeP10Y&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2h51ygeP10Y&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;en conclusion :&lt;br /&gt;&lt;br /&gt;pour ce genre de traitement, il est nécessaire d'avoir une bonne carte graphique (type Geforce 7600Gt) car le shader bouffe pas mal de ressource toutefois on pourrait envisager de faire du traitement d'image haute performance en utilisant cette fonction, avec du matériel bas coût&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-8686289899009447637?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/8686289899009447637/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=8686289899009447637' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8686289899009447637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/8686289899009447637'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2009/12/essais-dintegration-dune-video-youtube.html' title='DELTA3D : essais de réalisation 3D'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-3298118978047251962</id><published>2009-12-04T12:10:00.000-08:00</published><updated>2009-12-31T09:54:26.680-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VFAT'/><category scheme='http://www.blogger.com/atom/ns#' term='LOCK ON'/><title type='text'>LOCK ON : VFAT 2009</title><content type='html'>&lt;span style="font-family: arial;"&gt;pour savoir ce que l'on peut faire avec une jeux comme lock on et des pilotes virtuel rendez vous sur le site &lt;a href="http://www.virtual-airshows.com/english/vfattv"&gt;&lt;span style="font-weight: bold;"&gt;http://www.virtual-airshows.com/english/vfattv&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-3298118978047251962?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/3298118978047251962/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=3298118978047251962' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3298118978047251962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/3298118978047251962'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2009/12/lock-on-vfat-2009.html' title='LOCK ON : VFAT 2009'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-1322597214727836485</id><published>2008-11-09T13:52:00.001-08:00</published><updated>2008-11-09T14:02:10.877-08:00</updated><title type='text'>Suite des manips</title><content type='html'>&lt;span style="font-family:arial;"&gt;Pour le traitement, je renonce à utiliser PIL qui finalement est très limitée, je m'oriente donc vers la librairie open_cv de intel qui dispose d'une api sous python (SWIG). Cette librairie intègre d'origine des algorithmes de flot optique (lucas kanadi et 2 autres), je ferais donc mes essais avec cette librairie.&lt;br /&gt;Pour info open_cv ne date pas d'hier et pose des soucis d'utilisation sous debian, notamment elle demande une fonction "img_read" qui n'existe plus dans ffmpeg, la manip pour s'en sortir est décrite à l'addresse suivante :&lt;br /&gt;&lt;a href="http://wiki.nuigroup.com/Installing_Multitouch_and_fixing_OpenCV_on_Debian_Lenny"&gt;http://wiki.nuigroup.com/Installing_Multitouch_and_fixing_OpenCV_on_Debian_Lenny&lt;/a&gt;&lt;br /&gt;un bug a été signalé, à suivre&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-1322597214727836485?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/1322597214727836485/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=1322597214727836485' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1322597214727836485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/1322597214727836485'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2008/11/suite-des-manips.html' title='Suite des manips'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2700358355515191996.post-782546017875485907</id><published>2008-10-21T11:01:00.000-07:00</published><updated>2010-04-04T02:10:25.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='v4l/python'/><title type='text'>Essais d'acquisition vidéo sous linux python</title><content type='html'>&lt;span style="font-size: 180%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: #999999; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #999999; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;span style="font-family: arial;"&gt;Objectifs :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;réaliser un système de détection d'intrusion vidéo fournissant les fonctions suivantes :&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;détection/ estimation de mouvement&lt;br /&gt;&lt;/li&gt;&lt;li&gt;enregistrement des images suite à la détection (durée configurable)&lt;/li&gt;&lt;li&gt;envois sur un site ftp des données&lt;/li&gt;&lt;li&gt;envois d'un email suite à la détection&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;et aussi :&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;comprendre l'architecture d'acquisition Linux "vidéo for linux 1 "&lt;br /&gt;&lt;/li&gt;&lt;li&gt;réaliser un début d'interface video4linux/python via du C&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #999999; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #999999; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;span style="font-family: arial;"&gt;Architecture fonctionnelle :&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial; text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_94n36WbkF2I/SRVpddnqAnI/AAAAAAAABow/EDscZtfwzDU/s1600-h/fonctionnel.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="font-family: arial;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266231294167745138" src="http://3.bp.blogspot.com/_94n36WbkF2I/SRVpddnqAnI/AAAAAAAABow/EDscZtfwzDU/s400/fonctionnel.png" style="cursor: pointer; display: block; height: 135px; margin: 0px auto 10px; text-align: center; width: 527px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;Réalisation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;le matériel d'essais est le suivant :&lt;/span&gt;&lt;br /&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;PC Pentium4 sous linux&lt;br /&gt;&lt;/li&gt;&lt;li&gt;une carte d'acquisition ADS Tech Instant TV&lt;/li&gt;&lt;li&gt;une caméra CCIR noir et blanc 352/288 25i/s avec capacités nocturnes (diodes IR)&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: arial;"&gt;pour le soft j'ai installé sur le PC (non exhaustive):&lt;/span&gt;&lt;br /&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;une debian testing noyaux 2.6.26 avec drivers V4l pour la carte ADS tech&lt;/li&gt;&lt;li&gt;logiciel de gestion de v4l&lt;br /&gt;&lt;/li&gt;&lt;li&gt;suite de dev pour V4l&lt;/li&gt;&lt;li&gt;python 2.5&lt;/li&gt;&lt;li&gt;package PIL (imagerie) pour python&lt;/li&gt;&lt;li&gt;package imagemagick pour python&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: arial;"&gt;les premiers essais consiste en :&lt;/span&gt; &lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;l'installation de la carte et branchement  de la caméra&lt;/li&gt;&lt;li&gt;vérification des drivers (video4linux) et identification des devices&lt;br /&gt;&lt;/li&gt;&lt;li&gt;vérification de la chaîne d'acquisition par des logiciels éprouvés (vérification fonctionnelle)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: arial;"&gt;j'utilise pour ces tests les outils suivants (&lt;/span&gt;&lt;span style="font-family: arial;"&gt;dispo sur debian testing) :&lt;/span&gt; &lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;dmesg (vérification de la gestion de la carte par le noyaux linux)&lt;/li&gt;&lt;li&gt;v4l-info&lt;br /&gt;&lt;/li&gt;&lt;li&gt;transcode&lt;/li&gt;&lt;li&gt;xawtv&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;Vérification des drivers (dmesg/v4l-info)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;br /&gt;Dans une console, on lance la commande "dmesg|less" et on récupère une sortie du type :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: 78%; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new; font-size: 78%; font-style: italic;"&gt;[   14.307392] saa7133[0]: found at 0000&lt;/span&gt;&lt;span style="font-family: courier new; font-size: 78%; font-style: italic;"&gt;:02:07.0, rev: 240, irq: 16, latency: 64, mmio: 0xfe1ff800&lt;br /&gt;[   14.307476] saa7133[0]: subsystem: 1421:0350, board: ADS Tech Instant TV (saa7135) [card=58,autodetected]&lt;br /&gt;[   14.307567] saa7133[0]: board init: gpio is 7f&lt;br /&gt;...&lt;br /&gt;[   14.860097] tuner' 1-004b: chip found @ 0x96 (saa7133[0])&lt;br /&gt;[   14.940048] tda829x 1-004b: setting tuner address to 61&lt;br /&gt;[   15.096045] tda829x 1-004b: type set to tda8290+75&lt;br /&gt;[   19.348322] saa7133[0]: registered device video0 [v4l2]&lt;br /&gt;[   19.348425] saa7133[0]: registered device vbi0&lt;/span&gt;  &lt;/blockquote&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;br /&gt;ces informations indiques que la carte d'acquisition est bien reconnue (tuner et acquisition) en tant que périphérique /dev/video0 (attention peut être supérieur si plusieurs périphérique sont présents) , on peut donc connecter la caméra et vérifier l'acquisition&lt;/span&gt;&lt;span style="font-family: arial;"&gt;  &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;V4l-info,&lt;/span&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;span style="font-family: arial;"&gt;cet ou&lt;/span&gt;&lt;span style="font-family: arial;"&gt;til donne plus d'informations sur la carte d'acquisition et ses capacités, notamment sur le codage de couleur exploitable par la carte d'acquisition et les normes TV supportées&lt;/span&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;span style="font-family: arial;"&gt;la partie intéressante (entre autres) est la description des canaux disponibles pour l'acquisition (partie "channel" ) :&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 78%; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: arial; font-size: 78%; font-style: italic;"&gt;channels&lt;br /&gt;VIDIOCGCHAN(0)&lt;br /&gt;channel                 : 0&lt;br /&gt;name                    : "Television"&lt;br /&gt;tuners                  : 1&lt;br /&gt;flags                   : 0x1 [TUNER]&lt;br /&gt;type                    : TV&lt;br /&gt;norm                    : 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: 78%; font-style: italic;"&gt; VIDIOCGCHAN(1)&lt;br /&gt;channel                 : 1&lt;br /&gt;name                    : "Composite1"&lt;br /&gt;tuners                  : 0&lt;br /&gt;flags                   : 0x0 []&lt;br /&gt;type                    : CAMERA&lt;br /&gt;norm                    : 0&lt;br /&gt;VIDIOCGCHAN(2)&lt;br /&gt;channel                 : 2&lt;br /&gt;name                    : "S-Video"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: 78%; font-style: italic;"&gt;     tuners                  : 0&lt;br /&gt;flags                   : 0x0 []&lt;br /&gt;type                    : CAMERA&lt;br /&gt;norm                    : 0&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;cette carte fournit 1 entrée tuner, 1 entrée composite, 1 entrée S-vidéo Y/C (voir &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Y/C" style="font-family: arial;"&gt;wikipédia&lt;/a&gt;&lt;span style="font-family: arial;"&gt; pour plus d'explication), en gros une caméra Y/C sépare la couleur de la luminance afin de profiter d'une plus grande bande passante --&amp;gt; meilleure qualité, ici on a pas le choix la caméra est NB et la connectique est de type composite (1 coax)&lt;/span&gt;&lt;span style="font-family: arial;"&gt;   &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;Essais d'acquisition (transcode/xawtv)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Une fois la caméra connectée on peut faire quelques essais, on utilise pour cela l'outil "&lt;/span&gt;&lt;a href="http://www.transcoding.org/cgi-bin/transcode" style="font-family: arial;"&gt;transcode&lt;/a&gt;&lt;span style="font-family: arial;"&gt;" qui permet l'acquisition simple d'image issues d'un périphériques. la ligne de commande à utiliser est la suivante : &lt;/span&gt;&lt;span style="font-family: courier new; font-style: italic;"&gt;&lt;br /&gt;transcode -i /dev/video0 -g 352x288  -y jpg&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Après le lancement cette commande lance l'acquisition et génère des images JPEG à partir de l'acquis&lt;/span&gt;&lt;span style="font-family: arial;"&gt;ition d'image sur le périphérique video0 au format 352*288.&lt;/span&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;span style="font-family: arial;"&gt;Cela fonctionne sans problème à 25hz (fréquence caméra), signifiant que transcode sélectionne automatiquement le canal à utiliser ainsi que la norme ...&lt;/span&gt;&lt;span style="font-family: arial;"&gt;  &lt;/span&gt;&lt;span style="font-family: arial; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;xawtv&lt;/span&gt; &lt;span style="font-family: arial;"&gt;fournit une interfac&lt;/span&gt;&lt;span style="font-family: arial;"&gt;e permettant la visualisation en temps réel de la vidéo numérisée par la carte.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_94n36WbkF2I/SRWMVZ2doYI/AAAAAAAABo4/npjC3KzoToo/s1600-h/xawtv.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="font-family: arial;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266269638624125314" src="http://2.bp.blogspot.com/_94n36WbkF2I/SRWMVZ2doYI/AAAAAAAABo4/npjC3KzoToo/s400/xawtv.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 396px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;attention, si xawtv est lancé sans option, alors il prendra par défaut le périphérique video0 et le canal/norme par défaut, ces paramètres sont modifiables dans l'interface (sauf le périphérique fixé lors du lancement par l'option "-c /dev/videoX" voir dmesg)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;Accès à la carte d'acquisition :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;L'accès au périphérique d'acquisition sont réalisés par l'api video4linux évidemment si un drivers existe pour le périphérique en question voir &lt;a href="http://linux.bytesex.org/v4l2/"&gt;http://linux.bytesex.org/v4l2/&lt;/a&gt;&lt;br /&gt;cette API existe en C et Perl et un début existe pour Python. Je me suis donc inspiré d'exemple et documenté en python pour réaliser une interface simplifiée pour Video4linux, le fichier en C ci dessous permet cette interfacage (fichier interface_v4l_py.c)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-style: italic;"&gt;// fichier interface_v4l_py.c&lt;br /&gt;#include "&lt;python.h&gt;"&lt;br /&gt;&lt;br /&gt;#include "&lt;stdio.h&gt;"&lt;br /&gt;#include "&lt;stdlib.h&gt;"&lt;br /&gt;#include "&lt;unistd.h&gt;"&lt;br /&gt;#include "&lt;signal.h&gt;"&lt;br /&gt;#include "&lt;errno.h&gt;"&lt;br /&gt;#include "&lt;sys h=""&gt;"&lt;br /&gt;#include "&lt;fcntl.h&gt;"&lt;br /&gt;#include "&lt;sys h=""&gt;"&lt;br /&gt;#include "&lt;sys h=""&gt;"&lt;br /&gt;#include "&lt;linux h=""&gt;"&lt;br /&gt;#include "&lt;sys h=""&gt;"&lt;/sys&gt;&lt;/linux&gt;&lt;/sys&gt;&lt;/sys&gt;&lt;/fcntl.h&gt;&lt;/sys&gt;&lt;/errno.h&gt;&lt;/signal.h&gt;&lt;/unistd.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/python.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define VIDEO_DEV    "/dev/video0"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define WIDTH        352&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define HEIGHT        288&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#define CHANNEL        1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static int variable_locale=0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static int fdv;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static unsigned char *framebuf;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static struct video_capability vcap;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static struct video_channel    vc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static struct video_mmap       mm;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static int height;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static int width;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// static char video_device[16];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static struct video_mbuf vid_mbuf;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static void rgb_swap(char *mem, int n)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     cette fonction permet l'inversion des couleur bleur et rouge (problème de certaine webcam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     elle n'est pas accessible par python&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     mem : pointeur sur des pixels codés RVB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     n : nombre de pixels&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     mem : pointeur sur des pixels codés RVB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static void rgb_swap(char *mem, int n)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    char  c;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    char *p = mem;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    int   i = n;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    //printf("swap\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    while (--i) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        c = p[0]; p[0] = p[2]; p[2] = c;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        p += 3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static PyObject* v4l_initalize_device(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     cette fonction permet l'initialisation d'un périphérique vidéo 4 linux,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     elle est accèssible par python&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     video_device : chaine définissant le device&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     channel : numéro du canal (int)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     width : largeur de l'acquisition (int)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     height : hauteur de l'acquisition (int)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     -1 : si échec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     1 : si OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyObject* v4l_initalize_device(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    char *video_device;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    int channel;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if(!PyArg_ParseTuple(args, "siii", &amp;amp;video_device,&amp;amp;channel,&amp;amp;width,&amp;amp;height))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        // Init V4l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//    printf("DEBUG INTERFACE %s,%d\n",video_device,channel);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    fdv = open (video_device, O_RDWR);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (fdv &amp;lt;= 0){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror (VIDEO_DEV);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl (fdv, VIDIOCGCAP, &amp;amp;vcap) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("VIDIOCGCAP");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    vc.channel = channel;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    vc.norm = VIDEO_MODE_PAL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl(fdv, VIDIOCSCHAN, &amp;amp;vc) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("VIDIOCSCHAN");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    ioctl(fdv, VIDIOCGMBUF, &amp;amp;vid_mbuf);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    framebuf = (unsigned char*)mmap(0, vid_mbuf.size, PROT_READ | PROT_WRITE, MAP_SHARED, fdv, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if ((unsigned char *)-1 == (unsigned char *)framebuf) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("mmap");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    return Py_BuildValue("i", 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static PyObject* v4l_close_device(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     cette fonction permet la fermeture du device et la suppression du map memeoire&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     aucune&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     1 : si OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyObject* v4l_close_device(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// on ferme le device&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (close(fdv))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      perror("close(fdv) ");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// on realise l'unmap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (munmap(framebuf, vid_mbuf.size) != 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror("munmap()");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        exit(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    framebuf = NULL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    return Py_BuildValue("i", 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static PyObject* v4l_set_brightness(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     permet la modification de la luminance sur le périphérique&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     valeur de luminance entre 0 et 100%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     retour de IOCTL : si OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyObject* v4l_set_brightness(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    struct video_picture vpic;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    int newbright;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if(!PyArg_ParseTuple(args, "i", &amp;amp;newbright))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    variable_locale++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl (fdv, VIDIOCGPICT, &amp;amp;vpic) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("grab_bright_set");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    vpic.brightness = (unsigned int)newbright * 65536 / 100;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    return Py_BuildValue("i", ioctl (fdv, VIDIOCSPICT, &amp;amp;vpic));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static PyObject* v4l_set_contrast(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     permet la modification du contrast sur le périphérique&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     valeur de contraste entre 0 et 100%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     retour de IOCTL : si OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyObject* v4l_set_contrast(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    struct video_picture vpic;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    int newcontrast;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if(!PyArg_ParseTuple(args, "i", &amp;amp;newcontrast))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    variable_locale++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl (fdv, VIDIOCGPICT, &amp;amp;vpic) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("grab_contrast_set");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i",-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    vpic.contrast = (unsigned int)newcontrast * 65536 / 100;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    return Py_BuildValue("i", (int)ioctl (fdv, VIDIOCSPICT, &amp;amp;vpic));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// fonction &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     static PyObject* v4l_acquisition(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// description&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     permet l'acquisition d'une image complete&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// E&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     1 : inversion des couleurs R/B &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     0 : pas d'inversion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//     les pixels en codage RVB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyObject* v4l_acquisition(PyObject* self, PyObject* args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      int swap;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    swap=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if(!PyArg_ParseTuple(args, "i", &amp;amp;swap))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    mm.frame  = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    mm.height = height;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    mm.width  = width;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    mm.format = VIDEO_PALETTE_RGB24;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    /* Get frame */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl(fdv, VIDIOCMCAPTURE, &amp;amp;mm) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("VIDIOCMCAPTURE");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i", -1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        /* Wait frame to be completed */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (ioctl(fdv, VIDIOCSYNC, &amp;amp;mm.frame) &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        perror ("VIDIOCSYNC");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return Py_BuildValue("i", -1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    if (swap)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        rgb_swap (framebuf, width * height);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        //printf("swap\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    /*on retourne la valeur de*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    return Py_BuildValue("s#", framebuf, mm.height*mm.width*3);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// definition du paquet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;static PyMethodDef fonctions[]={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {"v4l_initalize_device"   , v4l_initalize_device, METH_VARARGS, "initialise le peripherique"},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {"v4l_set_brightness"     , v4l_set_brightness, METH_VARARGS, "definit la luminance"},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {"v4l_set_contrast"       , v4l_set_contrast, METH_VARARGS, "definit le contraste"},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {"v4l_acquisition"        , v4l_acquisition, METH_VARARGS, "acquisition d une image"},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {"v4l_close_device"       , v4l_close_device, METH_VARARGS, "ferme le peripherique"},&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  {NULL, NULL, 0, NULL}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PyMODINIT_FUNC init_interface_v4l(void)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  PyObject* m;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  m = Py_InitModule("_interface_v4l", fonctions);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: arial;"&gt;la compilation de ce genre d'interface n'est pas réalisée directement mais elle est assistée par python, pour le compiler il faudra creer un fichier setup.py contenant le code suivant :&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-size: 78%;"&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: cp1252 -*-&lt;br /&gt;# lancer python setup.py build_ext --inplace&lt;br /&gt;&lt;br /&gt;from distutils.core import setup, Extension&lt;br /&gt;setup(name="_interface_v4l", version="1.0",ext_modules=[Extension("_interface_v4l", ["interface_v4l_py.c"])])&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: arial;"&gt;on lance ensuite la compilation par la commande "&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;python setup.py build_ext --inplace" , un fichier &lt;/span&gt;&lt;span style="font-family: arial;"&gt;_interface_v4l.so est&lt;/span&gt; &lt;span style="font-family: arial;"&gt;créé donnant accès a vidéo4linux&lt;/span&gt;&lt;br /&gt;maintenant on accède au périphérique via un simple script python&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-style: italic;"&gt;import _interface_v4l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;device = "/dev/video0"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;channel = 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;swap = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;_interface_v4l.v4l_initalize_device(device,channel,352,288)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;_interface_v4l.v4l_set_brightness(70)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;_interface_v4l.v4l_set_contrast(70)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print "P6"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print "352 288"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print "255"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print _interface_v4l.v4l_acquisition(swap)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;_interface_v4l.v4l_close_device()&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: arial;"&gt;si on lance ce script la sortie créée est un flux de pixel au format PPM&lt;/span&gt;&lt;br /&gt;reste donc à réaliser les traitements&lt;span style="color: #999999; font-family: arial; font-size: 130%; font-style: italic; font-weight: bold;"&gt;.........&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2700358355515191996-782546017875485907?l=theblogyoann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblogyoann.blogspot.com/feeds/782546017875485907/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2700358355515191996&amp;postID=782546017875485907' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/782546017875485907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2700358355515191996/posts/default/782546017875485907'/><link rel='alternate' type='text/html' href='http://theblogyoann.blogspot.com/2008/10/partage-dexprience-sous-linux-et-autre.html' title='Essais d&apos;acquisition vidéo sous linux python'/><author><name>yoann_ingrid</name><uri>http://www.blogger.com/profile/11137556585426454977</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://3.bp.blogspot.com/_94n36WbkF2I/Sz-Br4RO4oI/AAAAAAAAKtQ/Y3-XsNWQnjI/S220/17_09__072.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_94n36WbkF2I/SRVpddnqAnI/AAAAAAAABow/EDscZtfwzDU/s72-c/fonctionnel.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
