écrire un caractère sur le port USB avec visual C++ express vers arduino

Bonjour,

je suis un grand débutant en programmation, en faite j'y connais pas grand chose, je suis en train de réaliser un petit logiciel sans prétention pour piloter une carte arduino afin de faire fonctionner le moteur de mise au point de mon télescope. il existe déjà pleins de chose mais j'ai besoins de quelques chose de très simple.

pour l'instant ça fonctionne déjà mais pas tout à fait comme je le voudrais. j'ai créé 4 boutons qui me permettent de gérer l'avance rapide puis l'avance lente de mon moteur et cela en envoyant les lettre a ou b ou c et enfin c sur le port usb. et ça fonctionne très bien, mais voilà ...

lorsque j’appuie sur un des boutons c'est lorsque je relâche le bouton que le caractère voulu est envoyé, ce n'est pas très grave ça fonctionne très bien . Mais ce fonctionnement est bien pour envoyer une impulsion à mon moteur et faire une mise au point précise.

par contre je voudrais créer 4 autres boutons qui, lorsque je reste appuyé dessus continuent d'envoyer le caractère voulu via le port usb afin de faire des déplacements continue de mon porte oculaire, et ça fait 2 jours que je cherche et je ne trouve pas, je vous met le code de mon interface, côté arduino c'est bon ça fonctionne parfaitement quand j'envoie des trains de caractères via la console arduino

je vous met mon bout de code :

#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 serialPort1->Open();
                 serialPort1->Write("a");
                 serialPort1->Close();
			 }
	private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
              serialPort1->Open();
                 serialPort1->Write("b");
                 serialPort1->Close();
			 }
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
			   serialPort1->Open();
                 serialPort1->Write("c");
                 serialPort1->Close();
		 }
private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
			   serialPort1->Open();
                 serialPort1->Write("d");
                 serialPort1->Close();
		 }

private: System::Void numericUpDown1_ValueChanged(System::Object^  sender, System::EventArgs^  e) {
			 serialPort1->PortName = "COM"+numericUpDown1->Value;
		 }
};
}

merci d'avance

Ne vous embêtez pas...

Au lieu d'envoyer continuellement le code des touches (forcément limité par la vitesse du port série, donc vos moteurs vont avoir des à-coups), envoyez une lettre spéciale pour mouvement continu et côté Arduino n'arrêtez pas le moteur tant que vous n'avez pas reçu une autre lettre.

par exemple z,x,q,d (en croix) fait bouger dans les 4 directions d'un cran
8,2,4,6 sur le pavé numérique déclenche le mouvement continu dans les 4 directions
barre d'espace arrête le movement

comme ça c'est le même code C++ que vous avez déjà, juste une façon de gérer la commande différemment côté Arduino

merci pour l'astuce

mais le problème c'est que le porte oculaire n'as pas un débattement infini et un appuis involontaire sur une touche qui ferait démarrer le moteur sans que je m'en aperçois et cela pourrait êtres destructif pour le moteur et le porte oculaire.

j'utilise un shields à base de l298n sur lequel on peut récupérer l'intensité et donc utiliser l'info pour couper le moteur au delà d'un certain seuil.

il n'y a pas moyen que l'application envois une lettre lors de l’appui du bouton avec la souris et une autre lorsqu'on relâche la souris ce qui éviterait effectivement la contrainte de vitesse du port usb.

dans mes recherche j'ai rencontré les évènements MouseDown et MouseUp j'ai l'impression que c'est par là qu'il faut que je cherche, mais je trouve pas de code d'exemple ou alors ce n'est pas en c++

bien sûr c'est possible - mais ici c'est le forum Arduino, pas Visual C++.. Vaudrait mieux aller poster sur un forum dédié. (il faut regarder les évènement KeyDown (quand on appuie), KeyPress (se produit plusieurs fois tant qu'on tient la touche appuyée) et KeyUp quand on relâche...)

ok merci,

mais je suis venue ici, car je n'ai pas eu de réponse sur les forum de visual c++ ... en tout cas qui ont fait avancer mon projet

merci encore