mercredi 10 mars 2021

Arduino problème avec le driver du port série de Windows 7

Quel le problème avec le driver série Arduino pour Windows ? Le Driver s'installe avec l'ensemble du logiciel Arduino mais cela ne fonctionne pas bien longtemps.

Vous êtes sans cesse en train de pluguer, déplugguer votre module Arduino et un moment donnée :

Problème port série Windows avec le module Arduino
Problème port série Windows avec le module Arduino

En plus ce n'est pas tout à fait le bon message, depuis il a évolué et j'ai le message suivant :


Alors la solution c'est de réinstaller le driver en désinstallant puis réinstallant tout le logiciel Arduino "correctement". Prendre soin de déplugguer pour que le port série soit "libre" pour désintaller proprement. Un fois résintallé le logiciel complet Arduino, le port est vierge et lors du prochain plugging de votre module Arduino. Windows répondra par un  :

Arduino le pilote de périphérique a été installé
Arduino le pilote de périphérique a été installé

Et vous pourrez continuer à jouer avec votre module Arduino mais ce n'est pas simple avec l'utilisation du port série et des logiciels de développement, il arrivera que le driver "plante" à nouveau et votre module ne sera plus reconnu par Windows !

Ceux qui galèrent :

Un autre Ici :


Ils galèrent mais ils arrivent toujours à faire quelque chose pour le Port_COM refonctionne...

La seule solution ?

Résinstaller le logiciel complet Arduino !!! Ça fonctionne mais c'est curieux non ? 

Attention : ne pas oublier de faire un petit redémarrage de Windows avant de replugguer votre module Arduino sinon il risque de ne pas prendre le bon driver..

Comment le logiciel peut-il se mettre à planter alors que ce n'est "que du soft". Et bien la réponse est dans la question.

Ce n'est pas tout à fait "que du soft", l'UART serial COM est sollicitée et l'on sait que sous Windows avant Windows 10 ce module est très perfectible. Il manque notamment une couche de virtualisation qui vous permettrait de connecté à une machine de cloud mais cela non plus ne fonctionne pas.

Mais j'ai peut-être une autre solution il vous faut savoir que le driver arduino se trouve dans :

\\Program Files (x86)\Arduino\drivers\arduino.inf

Ce qui peut vous permettre de le réinstaller en faisant :

Démarrer -> Périphériques et imprimantes :

Je vois mon module Arduino dans mon système windows

Où dans :

Menu Démarrer -> Panneau configuration -> Système -> Gestionnaire de périphérique 

Vous pouvez alors faire bouton droit mettre à jour et aller chercher le .inf ci-dessus cité. Mais en général si vous voyez votre module dans Windows, c'est que tout va bien ... Grrrrr !

Sinon vous pensez que tous ces caractères chinois ont quelques chose à voir avec ces plantages ...

Mauvaise gestion du port série ce communication avec le module Arduino
Mauvaise gestion du port série ce communication avec le module Arduino

Vous avez le site officiel arduino qui raconte en gros la même chose ...


Le problème c'est que quand votre module n'est pas reconnu "unknown device" vous ne pouvez pas le mettre à jour. Le message que j'ai eu en essayant de mettre à jour c'est :

"il n'existe pas de driver compatible avec windows 64 bits"

Autre dépannage

Si un driver "Unknown device" devait s'installer à la plage de "Arduino ..." n'hésitez pas à désinstaller le driver correspondant et à redémarrer votre machine lorsque vous enficherez votre module dans le port USB, windows devrait reprendre le bon driver ...

Franchement, c'est de très mauvaise augure. Comment peut-on imaginer de réaliser un développement de bonne qualité dans ces conditions... 

Les Athéniens s'atteignirent...

lundi 8 mars 2021

Arduino primordial links

Des liens importants vers les sites arduino ... des liens officiels mais aussi quelques pépites.

Arduino Lien primordiaux
Arduino Lien primordiaux

Sites de référence

https://www.arduino.cc
Site Officiel Open source Arduino

https://www.locoduino.org/
Qui signifie littéralement : "dingue de arduino"

Très bon site Arduino - très complet

Librairies de référence

Information sur les librairies de référence :

https://www.arduino.cc/en/reference/libraries

https://platformio.org/lib/show/5597/ArduinoTrace

Librairie de Traces

Je cherche une librairie Trace :

https://platformio.org/lib/search?query=trace

Arduino Trace dans Github bblanchon :

https://github.com/bblanchon/ArduinoTrace

Mémoire des cartes mères Arduino




Arduino Simulateurs

Si vous développez en C++ pour Arduino et que votre matériel est un peu complexe notamment si ce matériel n'est pas toujours disponible car trop encombrant ou difficile à mettre en oeuvre vous allez vouloir vous tourner vers un simulateurs qui va vous permettre de "faire tourner" votre code sans avoir tout le bazar autour.

Ma recherche Internet : "arduino simulateur" me conduit naturellement vers :

https://leresteux.net/simulateur-arduino/

Qui nous explique pas à pas le simulateur 123D Circuits mais j'ai l'impression qu'il n'existe plus même plus chez Autodesk library.io. Chez eux le simulateur de tout cela c'est TINKERCAD et vous devez vous enregistrer.

Autodesk Tinkercad

Dans le simulateur, si l'on écrit le bon code : 

/*
  Clignotement
  Allume la LED pendant 1 seconde,
  puis l'éteint pendant 1 seconde.

*/

// Numéro de la broche à laquelle est
// connectée la LED

int led = 13;

// le code dans cette fonction est exécuté une fois au début

void setup() {

  // indique que la broche de la LED une sortie :
  // on va modifier sa tension
  pinMode(led, OUTPUT);

}

// le code dans cette fonction est exécuté en boucle

void loop() {

  digitalWrite(led, HIGH);   // allumer la LED (tension 5V sur la broche)
  delay(1000);               // attendre 1000ms = 1s
  digitalWrite(led, LOW);    // éteindre la LED (tension 0V sur la broche)
  delay(1000);               // attendre à nouveau 1seconde

}

Vous verrez clignoter la LED.

Pour poursuivre, je vous propose l'article suivant : 

windowsreport - Les 5 meilleurs simulateurs Arduino pour PC

1 - Autodesk Eagle
Free download, toujours cette même accroche cela signifie que l'on vous donne le droit de télécharger mais après vous ne pourrez pas faire grand chose que d'acheter une licence.

2 - Proteus
Idem, free donwload mais on vous explique ce qui est limité sur la version "free" là encore on n'ira pas loin vous ne pouvez par exemple pas sauvegarder votre travail.

3 - Virtronics 
Je trouve pas pro ... pas cher non plus 19.99 $ ???

4 - PSpice
Pour le pris il vous faudra contacter le service client, moi je trouve toujours cela gênant on a l'impression d'être un marchant de tapis le commercial en face essaye de vous vendre 100 000 exemplaire alors que vous n'avez besoin que d'un seul !

5 - Fritzing
Initiative Open source deux version à 8 € et une autre à 25 € ... ??? 
Un petit tuto rapide ça à l'air ludique graphique fun sans plus accessible que les autres solutions.

Conclusion

Oui, il faut investir en temps, en argent je pense même qu'il faut démarrer un projet Arduino par la simulation plutôt qu'un kit hardware
Avec mon kit hardware, j'ai actuellement de sérieux problème avec le port COM, je dois vous avouer que je suis avec une machine Windows 7 mais la gestion du port COM avec Arduino est un peu tuchy...

D'où l'utilité d'un simulateur.

mercredi 3 mars 2021

Connaissez-vous Arduino IDE for Visual Studio (Visual Micro) ?

Je suis à la recherche du meilleur IDE pour Arduino et je trouve : Arduino IDE for Visual Studio (Visual Micro). Un outil d'édition de construction de déploiement et de débogage pour Arduino entièrement compatible cross plateforme et gestionnaire de Librairie. 

Plusieurs moniteurs série. Projets de code partagé, bibliothèques personnalisées, tests unitaires, GIT, CLI. Matériel GDB et débogage WiFi.

Arduino IDE for Visual Studio (Visual Micro)

Franchement, moi j'ai installé l'extension directement depuis Visual Studio Community 2019 :

Gestion des extensions dans Visual Studio Community 2019
Gestion des extensions dans Visual Studio Community 2019

Et bien c'est la même chose ! 

Donc autant installer l'extension depuis Visual Studio dans le menu Extensions -> Gérer les extensions.

Une fois l'extension installée, il s'agit de créer un bout de code et de téléverser dans la carte Arduino. 

Pour cela, j'ai trouvé l'option pour créer directement le Blink project un classique d'Arduino qui consiste à faire clignoter la LED de la Carte :

Nenu Fichier -> Nouveau projet, dans la liste des Templates de Projet :

Visual Studio s'ouvre avec le code et vous accédez au menu vMicro (comme Visual Micro) avec la gestion des cartes, suivant le kit Arduino que vous avez commandé :

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

Vous vous retrouvez devant l'environnement nécessaire et suffisant pour développer en C++ pour Arduino.

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

A vous de jouer, personnellement, je vais installer Visual Studio Code avec les même extension.

Have fun!


lundi 1 mars 2021

Développer en C++ avec Arduino Create Agent

Comment démarrer un développement en langage C++ avec Arduino ? Le plus simple c'est de se retrouver sur la site Arduino et de commencer par le Tutorials dans :

arduino.cc

Arduino Tutoriels

Dans DOCUMENTATION -> TUTORIALS, je clique sur GETTING STARTED



Pour mémoire, voilà l'ensemble des Tutos Arduino, j'accède à la première série de Tutos en cliquant sur Getting Started.

Getting Started with Arduino products

Il vous faut vous enregistrer, créez votre compte d'utilisation chez arduino mais à ce prix, vous pouvez utiliser l'éditeur Web Editor... Code online :


Vous reconnaissez les deux fonctions de base de la plateforme Ardunio setup() et loop().

Pour pouvoir téléverser dans une carte arduino, il faut avoir installer sur votre post : 


Installer sur votre post de quoi communiquer avec le Web Editor

Par la suite dans le Web Editor pour Arduino, vous devrez choisir la carte que vous avez connectée par le port USB à votre ordinateur.


Au passage, un driver demande à s'installer sur votre machine ...


Puis un deuxième liée toujours au contrôle de liaison USB entre le Web Editor et votre carte Arduino ...



Et puis un troisième soft désire s'installer...


Et enfin cela y est, votre carte est connecté au Web Editor Arduino


Vous vous retrouvez avec les boutons classiques Verify et Upload pour téléverser votre code HEXA dans votre carte Arduino... Vous pouvez alors récupérer les exemples au moment d'une modification dans l'éditeur Web Editor.

CQFD !

jeudi 25 février 2021

Développer en C++ pour Arduino

Comment je développe et j'implémente mon code compilé sur une carte Arduino ? La programmation en C/C++ est la manière la plus courante de programmer la carte Arduino.

Le logiciel se divise alors en 2 fonctions le setpup() et une fonction loop() qui est la boucle naturelle de l'application.

Programmation en python, il ne s'agit pasz d'une compilation croisée mais d'une application résidente de la carte arduino qui est en communication avec les instructions python.

http://claude.gueganno.free.fr/arch/polyArduino.pdf

Voilà un bon début et un ensemble de généralités pour bien fixer les idées.

Visual Studio Code permet avec trois extension de programmer en C++ pour Arduino...

Pour moi ça commence Ici :

Devenez-pro-en-electronique-PROGRAMMER SON ARDUINO AVEC VISUAL STUDIO

Arduino gestion des ports COM

Je complique ma configuration de développement en essayant d'installer la chaîne de développement Arduino dans une machine du Cloud.

En jouant avec Arduino vous allez devoir maîtriser les affectation des ports COM aussi je vous conseil la page suivante :

http://www.e-novatic.fr/rediriger-les-ports-com-sous-tse/

Redirection des ports COM de l'hôte vers le cloud
Redirection des ports COM de l'hôte vers le cloud

Pour tout savoir sur la commande :

>change port /query

Pour afficher les ports COM et leur caractéristique.

Sur les ports COM de Windows :

Eltima - 2 méthodes pour régler tous les problèmes de ports COM sur Windows 10

Voilà des gens qui maîtrise les ports COM.

Sur l'autorisation des port COM en Remote Desktop :

Modèle d'administration (ordinateurs) - Ne pas autoriser la redirection des ports COM

Il semble bien que ces possibilités de bloquer la redirection des port com date un peu dans le monde Microsoft et que les clefs de registre ne soient plus utilisées :

regedit - Ne pas autoriser la redirection de port COM

Remote Desktop Services - Some USB devices aren't available

On apprend à mettre la ligne :

usbdevicestoredirect:s: RDP

dans le fichier .rdp 

Et à modifier la base de registres mais attention ...

Attention : Sous Windows 7, il est bien sûr impossible de rediriger un port COM vers une machine du cloud le degrés de virtualisation du port COM n'étant pas suffisant.

Visual Studio Code pour Arduino

Installation de l'extension PlatformIO IDE pour VSCode :


Pour pouvoir créer mon premier projet, choix de la carte Arduino : 


Carte Arduino Mega 2560.

PowerShell vs PlaformIO CLI

Il faut faire attention à exécuter les commandes dans le bon environnement. D'ailleurs je travaille avec une machine sous Windows 7 un peu ancien pour PowerShell, j'ai tenté d'installer l'extension proposée mais impossible "une vraie galère" : 

Error installing PowerShell extension on Visual Studio Code

Allez je vous mets le message d'error :

01/03/2021 17:25:51 [NORMAL] - Visual Studio Code v1.53.2 64-bit
01/03/2021 17:25:51 [NORMAL] - PowerShell Extension v2021.2.2
01/03/2021 17:25:51 [NORMAL] - Operating System: Windows 64-bit
01/03/2021 17:25:51 [NORMAL] - Language server starting --
01/03/2021 17:25:51 [NORMAL] -     PowerShell executable: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
01/03/2021 17:25:51 [NORMAL] -     PowerShell args: -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @() 
01/03/2021 17:25:51 [NORMAL] -     PowerShell Editor Services args: Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @() 
01/03/2021 17:25:51 [NORMAL] - powershell.exe started.
01/03/2021 17:25:51 [NORMAL] - Waiting for session file
01/03/2021 17:29:51 [NORMAL] - Timed out waiting for session file to appear.
01/03/2021 17:29:51 [NORMAL] - Language server startup failed.
01/03/2021 17:29:51 [ERROR] - The language service could not be started: 
01/03/2021 17:29:51 [ERROR] - Error: Timed out waiting for session file to appear.

Ce n'est pas ce qu'il faut faire !

Dès que vous ouvrez Visual Studio Code sur un projet Arduino il faut ouvrir un Terminal PlatformIO CLI en cliquant sur le tout petit bouton en bas dans le Barre Arduino :

Visual Studio Code pour Arduino - Terminal PlatformIO CLI
Visual Studio Code pour Arduino - Terminal PlatformIO CLI

Et vous obtenez le bon environnement pour exécuter toutes les commandes PlatformIO :

Visual Studio Code pour Arduino - Terminal PlatformIO CLI
Visual Studio Code pour Arduino - Terminal PlatformIO CLI

Voilà mon environnement de développement avec VSCode pour Arduino fonctionne est maintenant correctement configurer.

Architecture des chaînes de caractères

C'est une drôle de surprise, vous allez tomber sur :

const __FlashStringHelper *format

Il y en a qui pour gagner de la place vont vouloir stocker des variables dans la mémoire programme :

Architecture Harvard vs Von-Neuman

Du coup les chaînes sont illisibles, il faut des manipulation pour s'y retrouver.

Il vous faudra consulter la page suivante pour découvrir quels types de mémoires sont utilisés sur les boards arduino :


Arduino faire des Log et des Traces

Moi j'ai attaqué par une fonction que j'aime bien écrire :

void log_print(char const *aFormat, ...)
{
    char buffer[256];
    va_list args;

    va_start(args, aFormat);
    vsprintf(buffer, aFormat, args);
    va_end(args);

    Serial.print(buffer);
};

Cela ne fonctionne pas le format des doubles et des floats ne fonctionne pas avec les fonctions de la lib standard du C++.

J'ai trouvé la fonction
\\.platformio\packages\framework-arduino-avr\cores\arduino\Print.cpp
size_t Print::printFloat(double number, uint8_t digits)

qui permet d'afficher un Float par le port série ...

Comment comparer __FlashStringHelper* avec char* on Arduino ?


Pour finalement trouver ce que je cherche à faire :



lundi 4 mars 2019

Comment développer en C++ ?

Je cherche le meilleur moyen de développer en C++ car j'ai compris que les librairies graphiques comme DirectX ou plutôt Direct3D, OpenGL, VCL, FireMonkey et autres sont écrites en langage C++ et je cherche une bonne maitrise du temps réel avec mon application, quel choix faire pour développer en C++ ?

Et oui si vous faites du développement 3D C++ pour des gamers par exemple, vous serez amené à développer en Langage C++ alors j'ai moi même quelques expériences de ce langage mais aujourd'hui je suis perplexe devant les possibilités qui s'offrent à moi et je ne sais quelle option choisir alors faisons un tour rapide de toutes ces possibilités.

J'ai travaillé récemment avec Embarcadero dont j'ai fait une abondante critique. Il possède l'avantage de démarrer un développement rapidement bien plus qu'avec Visual Studio C++ MFC par exemple. Le scandale, c'est que Microsoft conserve MFC et n'a rien fait depuis donc si vous cherchez à instancier un nouveau projet avec Visual Studio vous allez tomber sur MFC ... Grrr pas bon, méchant les MFCs !

Qt/C++ est une bonne alternative, je n'y croyais pas mais c'est d'une prise en main rapide et les contrôles utilisateurs sont intelligents, ils permettent plein de choses rapidement, je vous le conseil.

Je lis cet article : Développez.com - Graphique

Le choix est large mais pas simple, la prise en main d'une librairie graphique c'est un investissement lourd. Moi je parlais des chaines de développement associée ici pas de chaine mais alors comment cela se passe t-il ? Vous pouvez démarrer avec Eclipse.

Choix d'une application pour bien développer en C++

Que puis je faire avec Visual Studio ? Instancier un nouveau projet Windows Desktop - Assistant Windows Desktop :

Visual Studio un projet en Langage C++

Et Visual Studio me donne les choix suivants :

Visual Studio créer une application en C++

MFC and ATL
Je vous laisse avec la doc MSDN ... Et toutes ces vieilleries Microsoftiennes ...

What's New for Visual C++ in Visual Studio 2017
Si il y a encore du Nouveau en C++ sous Visual Studio 2017 ...

Microsoft - VCSamples - Visual Studio C++
On retrouve ATL CLR MFC plus d'autres exemples

Microsoft - Visual C++ Samples
On remonte encore plus haut dans les samples bien connus de Microsoft

Mais tout ceci ne nous aide pas beaucoup, je suis certain que nous sommes très très nombreux à regretter qu'il n'y ait pas d'alternative à MFC pour développer rapidement des application Desktop en C++. Depuis tout ce temps Microsoft aurait pu faire un effort.

Voilà, je tombe un peu là dans un trou à cause de Microsoft, je pensais trouver une bonne solution pour développer en C++ avec Visual Studio mais la solution moderne est sans doute ailleurs. La solution moderne pour développer en C++ c'est sans doute Qt/C++.

To Be Continued

jeudi 28 février 2019

MyString CPlusPlus Mes String en C++ StringFormat & StringSplit

StringFormat et StringSplit sont deux fonctions que l'on a toujours besoin d'avoir sous la main. Je me retrouve avec Embarcadero C++ Builder à devoir coder en C++, je tombe donc sur l'UnicodeString hérité de Delphi imaginez un peu mon désarrois.

Coder en C++ StringSplit et StrinFormat

Je l'avoue ça fait un peu mal, même si ce type est très utile sous Embarcadero, il vient du moyen âge ! Pour nous faciliter la vie, je souhaite donc vous livrer ici mes deux fonctions qui à mon goût, n'existent pas ni dans C++ Builder ni dans les STL.

Voici donc StringFormat et StringSplit les deux foncitons C++ qui manquent toujours à l'appel.

L'entête

#ifndef _MyStringH
#define _MyStringH

#include <iostream>
#include <conio.h>
#include <sstream>
#include <vector>
#include <string>


using namespace std;

// ---------------------------------------------------------------------------
// Mangement of Srting's Sizes

#define MAX_STRING 256
// ---------------------------------------------------------------------------
void StringFormat( UnicodeString &str, const char *format, ... );
vector<string> StringSplit( string s, string separator );
// ---------------------------------------------------------------------------
#endif

Corps des fonctions StringFormat et StringSplit en C++

//----------------------------------------------------------------------------
// Format String
//----------------------------------------------------------------------------

void StringFormat( UnicodeString &str, const char *format, ... )
{
   char buffer[ MAX_STRING ];
   va_list args;

   va_start( args, format );

   vsprintf( buffer, format, args );
   str = UnicodeString( buffer);
   perror( buffer );

   va_end( args );
}

//----------------------------------------------------------------------------
// Split string with separator
//----------------------------------------------------------------------------

vector<string> StringSplit( string s, string separator )
{
   size_t pos_start = 0, pos_end, delim_len = separator.length();
   string token;
   vector<string> res;
   while ( (pos_end = s.find( separator, pos_start )) != string::npos )
   {
      token = s.substr( pos_start, pos_end - pos_start );
      pos_start = pos_end + delim_len;
      res.push_back( token );
   }
   res.push_back( s.substr( pos_start ) );
   return res;
}

Utilisation des fonctions StringFormat et StringSplit en C++

UnicodeString b = "blabla";
double d = 2.033256;
StringFormat( b, "d = %.3f", d );
Edit1->Text = b;

//-----------------------------------------

int tab[ 4 ] = { 0, 0, 0, 0 };
string str = "0, 1,  2,  3";
string separator = ",";
vector<string> v = StringSplit( str, separator );
int j = 0;
for ( auto i : v )
{
  tab[ j++ ] = atoi( i.c_str() );
}

Conclusion

Vous pouvez adapter ces fonctions pour une autre chaîne de développement comme Qt ou Visual Studio C++ en utilisant CString à la place d'UnicodeString d'Embarcadero.

Voilà, la prochaine fois que je code en C++, je n'aurais pas à les réécrire ... ;-)


mardi 26 février 2019

Embarcadero 10.3 l'intellisense, l'autocomplétion ne fonctionnent plus

Je travaille avec la version Embarcadero 10.0.3 et la future release est arrivée, c'est la version Embarcadero C++ Builder 10.3 alors je l'installe mais au bout de quelques instant je me rend compte que l'autocomplétion et l'intellisence ne fonctionne plus alors qu'ils ont fonctionnés.

Embarcadero 10.3 - Bugs
Embarcadero 10.3 - Bugs
C'est désastreux plus rien ne fonctionne, déjà que cela ne fonctionnait pas fort alors là je suis pantois les bras m'en tombent. La plus part du temps, je développe avec Visual Studio mais il m'est arrivé de devoir utiliser Embarcadero pour satisfaire l'un ou l'autre de mes clients. Je ne suis pas sectaire, j'aime toutes les chaines de développement qui fonctionnent. J'ai utilisé Qt/C++ avec beaucoup de bonheur.

Mais là, Embarcadero me déçois avec cette nouvelle release v10.3 Modernize with RAD Studio 10.3
Est-ce parce que j'ai laissé la précédente release installée sur le même post ? Ce ne serait pas professionnel de la part d'Embarcadero alors que pourtant la licence n'est pas donnée croyez-moi.

Work Space ou Espace de Travail

C'est amusant comme Embarcdero est obligé de copier sur Visual Studio de Microsoft. Dans Visual Studio on peut faire plein de choses pour améliorer sa productivité notamment particulariser sont Espace de Travail en mettant les fenêtres que l'on souhaite où l'on souhaite.

Dans Embarcadero, on peut faire quasiment faire la même chose mais c'est le quasiment qui est drôle. Si vous particularisez votre espace de travail et que vous l'enregistrez par exemple avec le nom "Mon espace de travail 1". Lorsque vous quittez Embarcadero et que vous le relancez, il se mettra systématiquement sur l'espace de travail "Espace de travail par défaut".

Vous devrez systématiquement allez rechercher votre enregistrement "Mon espace de travail 1" pour retrouvez votre espace de travail ... Mort De Rire. Sinon, vous devez sauvegarder les modifications de votre Espace de Travail dans "Espace de travail par défaut". Ce qui n'est pas logique. Ce qui serait logique c'est par exemple d'avoir un bouton "Définir comme espace de travail par défaut" ...

C'est un peu alambiqué, j'espère que vous avez compris. Embarcadero ne fonctionne pas comme vous voudriez ou comme il serait le simple et efficace de fonctionner. Embacadero fonctionne comme ses idiots de concepteurs l'ont conçu point final.

Le mode Explorateur

Là aussi c'est risible, ce serait drôle si ce n'était pas complétement stupide et du coup inutilisable mais vous avez une barre d'outils nommée à juste titre "Explorateur" alors qu'est censé faire cette barre d'outils avec ses deux boutons "Flèche avant" et "Flèche arrière".

Et bien, quand vous vous déplacez dans les fichiers de code source de votre logiciel vous pouvez "revenir d'où vous venez" en cliquant que "Flèche arrière" et vous pouvez retourner où vous étiez quand vous cliquez sur "Flèche avant". Jusque là nous sommes d'accord je crois.

Alors comment ces idiots de concepteurs d'Embarcadero on conçu leurs Flêches d'exploration ? Et bien si vous vous êtes déplacé dans le même fichier alors retour à la page d'accueil !!! Si vous vous êtes déplacé dans plusieurs fichiers alors on enregistre tout les déplacements du curseur. Non mais vous voyez un peu la stupidité du truc ... ?

Donc, la plupart du temps cette fonction ne sert à rien quand vous êtes dans le même fichier et pourtant vous pouvez avoir des fichiers qui font plusieurs milliers de lignes et vous aimeriez bien retrouver par où vous êtes passé. Et sinon si vous avez cliqué par exemple dix ou douze fois dans le même bloc de code, le fait de cliquer sur le Flèche arrière fera déplacer votre curseur avec tous ses mouvements dans le même bloc de code !!!

Quand j'ai découvert ce fonctionnement, je suis tombé de ma chaise, j'étais mort de rire mais d'un rire nerveux cette fois. Surtout quand ce truc stupide me ramène sans cesse à la page d'accueil. En plus, si elle était fermée, il l'ouvre ...

Alors pour les idiots de concepteurs d'Embacadero, voici un petit pseudo code qu'ils devraient intégrer j'espère dans la prochaine release : si mon curseur se déplace dans un bloc proche alors je n'enregistre pas les déplacements.

J'ai vérifié ce fonctionnement sur Embarcadero 10.3 ! Même stupidité !

L'Intellisense ou autocomplétion

Je suis donc revenu à la version 10.0.3 d'Embarcadero mais c'est une calamité, je ne vous dis pas comment ça rame, j'ai appelé cela : "le kidnapping de mon curseur". Pendant que ce truc rame comme cela n'est pas permis, je ne peux rien faire mon curseur est en mode attente et je ne peux pas développer mon code ! C'est inadmissible comment c'est gens chargés de cet outil Embarcadero peuvent avoir laissé cette fonctionnalité sortir ainsi "Ce n'est pas travaillable".

Je passe mon temps à attendre qu'Embarcadero veuille bien me rendre mon curseur pour travailler ! Et ma machine de développement est des plus puissante actuellement, je n'ose pas imaginer ce que cela donne sur des machines un peu plus anciennes.

Conclusion

Vous souhaitez optimiser votre production avec Embarcedero, c'est vain, vous devrez vous adapter à la lenteur et aux défauts de conception de cet outil qui par ailleurs est un super outil pour développer sous Windows.

Dommage car C++Builder dans les année 90 était le "RAD" le plus sympathique à utiliser, il n'y en avait pas d'autre.

Have fun if it's possible!

mardi 23 octobre 2018

C'est quoi QML en Qt/C++ ?

C'est un langage de description d'interface graphique permettant aux objets décrits dans le QML d'être d'une part affichés dans l'UI et d'autre part d'interagir avec le Code C++ de Qt ou un autre langage comme Python.

Développement Qt/C++

Si vous utilisez Qt Creator la création du projet doit se faire avec l'option "Qt Quick Controls Application". Bon voilà, c'est à peu prêt tout, d'aucuns diront que c'est vraiment différent des projets "standards" mais il n'y a rien de bien sorcier là dedans.

QML est un peu l'équivalent du XAML en C#.NET.

Créer une extension de QML en Qt/C++

Rien de plus facile à la page Suivante : Qt Writing Extensions with C++
Il s'agit de créer une Class qui dérive d'un objet QML de base. C'est vraiment la force de QML c'est l'équivalent des UserControls en C# c'est à dire des .ASCX.

Il y a une partie description graphique de l'objet et une partie Code qui permet de coder le comportement du contrôle utilisateur. C'est ce que l'on trouve de puis puissant.

QML est dit aussi Qt Quick dans la littérature QML.

Voilà, on ira plus loin la prochaine fois !

vendredi 5 octobre 2018

Erreur LNK2019 - Error LNK2019 - symbole externe non résolu __except_handler4_common

Une des difficultés de la coexistence du langage C et du langage C++ ce sont les conventions de nommages du LINKER et cette error LNK2019 en est le résultat. Pour trouver la solution c'est un peu la catastrophe :

Erreur des outils Éditeur de liens LNK2019

Et alors après avoir fait tout ça, je me retrouve avec une erreur :

Gravité Code Description Projet Fichier Ligne État de la suppression
Erreur LNK2019 symbole externe non résolu __except_handler4_common référencé dans la fonction __except_handler4 MFCStarterKit D:\Mabyre\Visual Studio\CPlusPlus\MFCStarterKit4.1\MFCStarterKit\MFCStarterKit\MSVCRTD.lib(_chandler4gs_.obj) 1


Merci ! Heureusement qu'il y des âmes charitables la solution se trouve ici :

https://stackoverrun.com/fr/q/8776145

Dans votre projet de bibliothèque, consultez Propriétés -> C/C++ -> Génération de code -> Runtime Library :

Il y a des chances qu'il soit réglé sur :
DLL multithread de débogage (/ MDd)

Changez cette option et mettez la à :
multithread Debug (/ MTd)

et à la reconstruction l'erreur aura disparue !


L'original de cete article dans :

https://stackoverflow.com/questions/31867018/unresolved-external-symbol-except-handler4-common-in-visual-studio-2015/44498522#44498522

Pfffff, franchement : /MDd à la place de /MTD cela ne me serait pas venu à l'idée ...

Conseil

Lorsque vous suivez les directives de la page suivante :

https://www.developpez.net/forums/d740287/c-cpp/outils-c-cpp/visual-cpp/visual-cpp-ajout-d-bibliotheque/

pour ajouter une librairie à votre projet. N'oubliez pas que vous pouvez mettre les chemins d'accès aux .lib .dll et autres en "relatif", si vous utilisez l'outil de recherche pour aller chercher les objets il mettra le chemin en "absolu" et vous aurez alors des problèmes si vous renommez ou déplacez tout ou partie de votre projet.

Tous ces soucis ont été corrigés avec Visual Studio C#.NET, c'est curieux que cela ne le soit pas pour Visual C++ ...

Have fun!