Bonjour je m’intéresse a la programmation bas niveaux en C#, je rencontre quelques problèmes de performance quant à traiter des trames CAN à 500KBauds.
Depuis peu je me remémore mes connaissances du C++, VC++ VS.Net et BCB6, Je viens de débuter la prog asm même si je pensais faire un trait dessus.
En parallèle je bricole à l’occasion sur un PIC24F en C++ aussi mais sous MPLAB
Je pensais les capturer correctement toutes les trames CAN mais j’ai réalisé des essais comparatifs que je mettrais rapidement en ligne. Le logiciel CAN Monitor Pro 2 semble capturer entre 10 à 40% plus de trame que mes maquettes C# ou BCB
Pour résumer j’utilise une interface CANUSB qui fonctionne bien. Le problème c’est certainement mon code et ce que je demande à la rossinante x86 qui doit subir mes excès de fougue..
J’en suis a considérer un applicatif de type console qui lirait les données, en émettant des requêtes selon les réponses précédentes ex protocole OBD : On lit les PID disponibles puis ont lit les PID supportés
Tout devra être sauvegardé dans une base de données sql server par exemple
J’avais fait une application pour lire les trames GPS sur IP depuis un PDA A696 avec deux buffers circulaires permutées en écriture puis en lecture alternativement, cette solution était suffisante pour un GPS à 4800Bauds.
Maintenant cette solution fonctionne toujours avec le CAN mais est ce la meilleure ??Pour le moment j’utilise les callbacks C++ et delegate C#, l’interface ne semble pas se plaindre (Tampon entrée n’est jamais trop plein NO BUFFER OVERFLOW)
Enfin jusqu’au moment ou j’ai tenté de lui faire bouffer du thread a mon pauvre C# en BCB la mise a jour de l’ihm par timer n’est guère plus efficace.
A l’heure H ce jour J je reprends les fondamentaux en ne perdant pas de vue la portabilité des mes applicatifs. J’en ai marre de faire la java avec ou sans script même si je considère les navigateurs pour ce qu’ils sont une ouverture sur le monde et les technologies.
J’avais bien bossé sur le VRML avec wings3D puis je espérer en faire quelque chose en C++ ou C# ?De préférence avec BS contatc mes essais en JavaScript EAI avaient pas mal avancé. Par contre ne VC# j’ai jamais réussis à appeler une fonction défini en C# depuis le plugin VRML (ActiveX)
A ce stade je viens de m’apercevoir d’une curiosité sous VC++ VS.Net en effet lorsque je compile deux boucles for imbriqués contenant une simple multiplication ex : 2*5 et que je bascule en release avec optimisation de la vitesse j’obtiens des résultats surprenants. Mon compilateur serait il si intelligent qu’il est compris que cette boucle ne sert a rien ?VC++ semble carrément ignorés les boucles for tout en faisant le calcul, alors qu’il faut un temps certain pour faire la boucle sous BCB alors que le code généré en VC++ s’execute en quelque nanosecondes
Plus généralement je recherche des personnes maitrisant le C++ mieux que moi-même qui aurait déjà comparé les performances des compilateurs pour m’apporter de précieux conseils sur l’optimisation du code pour obtenir un résultat plus « pro ».
Je pense que le sujet de la programmation optimisée et portable n’est pas une chimère même sous Windows
Ensuite j’ai un projet de cartographie Lambert 93, avec gestion du récepteur GPS a remettre en C++, c’est un projet ardue et franchement seul c’est pas facile import pour la France depuis base fichiers IGN.J’en entais a créer des dalle depuis des copies d’écran géoréférencées sur geoportail,
En plus je veux greffer mon Applicatif CAN pour logger les parametres d'un vehicule au cours d'un trajet en vue de comaprer les performances d'un véhicule par raport à un autre ou sur des parcours différents pour un meme vehicule
Donc voila je m’inscris sur le forum pour trouver de bonnes volontés et des personnes intéressés.
Partager