Demande d'avis pour choix langage de programmation

Demande d'avis pour choix langage de programmation - C - Programmation

Marsh Posté le 20-07-2011 à 17:50:15    

Bonjour à tous !!
 
Je reviens par ici pour avoir votre avis sur l'utilisation de tel ou tel langage.
 
D'abord le projet :
Je possède un écran tactile relié à un automate. Sur cet écran, j'ai en incrustation video le signal venant d'un ordinateur.
Je vais positionner sur la zone video une multitude de boutons qui enverront , par le biais de l'automate, en rs232, des trames (une par bouton).
 
Je dois récupérer ces trames avec le pc, les analyser, et ensuite déplacer la souris puis cliquer sur l'emplacement désigné par la trame.
J'ai tourné le problème dans tous les sens, je suis coincé, j'ai pas d'autre solution matérielle.
 
 
Le seul langage que je connais (et ca fait longtemps) est le C, j'ai eu fait un peu de vb quand j'étais jeune mais rien de très probant.
Ma question est donc par rapport au langage. Le C c'est bien mais qu'en est il des applis sous windows? Je ne sais pas du tout comment prendre le problème. Je n'ai rien contre le fait d'apprendre un nouveau langage, à part le temps que ca va me prendre.
 
Néanmoins, si c'est moins compliqué dans un autre langage, il vaudra peut etre mieux que j'en apprenne un autre...
 
 
En tout cas merci à ceux qui auront pris le temps de me lire :)
Bonne fin de journée
LB

Reply

Marsh Posté le 20-07-2011 à 17:50:15   

Reply

Marsh Posté le 21-07-2011 à 10:51:43    

"déplacer la souris", ca fait peur. Tu peux envoyer des messages à l'autre application sans chercher à déplacer le pointeur.
 
Ensuite, cette application que tu dois contrôler à distance, tu n'as pas son code source ? Tu ne peux pas la contrôler à coup d'arguments en ligne ed commande ?


---------------
last.fm
Reply

Marsh Posté le 21-07-2011 à 12:43:42    

C ou C++ sous windows, ça marche très bien. Sinon, y'a Delphi aussi ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-07-2011 à 14:35:57    

en Ruby.

Reply

Marsh Posté le 26-07-2011 à 19:00:25    

Merci pour vos réponses !
 
En fait le but de la manoeuvre est de piloter wondows (n'importe quel programme) avec l'écran tactile de l'automate.
 
Par exemple, je mets un bluray, le lecteur se lance, et je clique avec mon écran tactile.
C'est pour ca que je pensais a faire bouger la souris.

Reply

Marsh Posté le 26-07-2011 à 20:37:51    

ah ok, alors faut faire ca en Ada.

Reply

Marsh Posté le 27-07-2011 à 09:12:27    

rockeurfoo a écrit :

Merci pour vos réponses !
 
En fait le but de la manoeuvre est de piloter wondows (n'importe quel programme) avec l'écran tactile de l'automate.
 
Par exemple, je mets un bluray, le lecteur se lance, et je clique avec mon écran tactile.
C'est pour ca que je pensais a faire bouger la souris.


 
AutoIt alors ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-07-2011 à 09:12:54    

Tamahome a écrit :

ah ok, alors faut faire ca en Ada.


 
Petit rigolo, va :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-07-2011 à 10:28:58    

Je conseille aussi AutoIt, qui est plus simple que d'autres langages pour faire cela, mais qui demande malgré tout un peu de lecture de sa documentation et d'étude.

Reply

Marsh Posté le 27-07-2011 à 10:54:53    

Sur Korben, j'avais vu aussi 2 autres softs du même genre qu'AutoIt :  
http://korben.info/actions-pour-au [...] coder.html
 
http://sikuli.org/    -> très original, basé sur des captures d'écran pour produire le code ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-07-2011 à 10:54:53   

Reply

Marsh Posté le 17-08-2011 à 21:41:58    

merci pour vos réponses, je poste un peu tard car j'ai déménagé, ce qui m'a pris pas mal de temps.
Je me renseigne sur les languages dont vous avez parlé.
 
Merci !
 
edit : sikuli aurait pu le faire, mais il m'impose de travailler toujours avec le meme logiciel.

Message cité 1 fois
Message édité par rockeurfoo le 17-08-2011 à 21:52:13
Reply

Marsh Posté le 18-08-2011 à 09:30:43    

rockeurfoo a écrit :

merci pour vos réponses, je poste un peu tard car j'ai déménagé, ce qui m'a pris pas mal de temps.
Je me renseigne sur les languages dont vous avez parlé.
 
Merci !
 
edit : sikuli aurait pu le faire, mais il m'impose de travailler toujours avec le meme logiciel.


 
Je comprends pas bien ce que tu veux dire :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-08-2011 à 19:31:32    

c'est vrai, apres relecture c'est vraiment pas compréhensible. :pt1cable:  
 
ce que je veux dire, c'est que l'appli doit pouvoir fonctionner sur n'importe quel logiciel. Je dois pouvoir cliquer sur le bureau, ou sur le logiciel qui lit les blu ray, ou sur mon interface AV... enfin partout quoi.
 
Sikuli fonctionne par capture d'écran, donc ca ne peut fonctionner que si je veux cliquer tout le temps sur le meme logiciel.
 
Ou alors j'ai rien compris  :cry:  
 
 
J'ai commencé a regarder Autolt mais c'est pas gagné l'affaire, surtout pour récupérer les données depuis le port com...

Reply

Marsh Posté le 18-08-2011 à 19:47:38    

tu peux regarder la : http://www.autoitscript.com/forum/ [...] m-port-udf
j'ai pas testé mais ça a l'air intéressant.

Reply

Marsh Posté le 18-08-2011 à 21:19:00    

ok...
 
donc si je fais quelque chose du genre  
 
 

Code :
  1. #include <CommMG.au3>
  2. _CommGetString($valeur)
  3. Switch $valeur
  4. Case "pos1"
  5.        MouseMove( 16, 15, 0)
  6. Case "pos2"
  7.        MouseMove( 55, 16, 0)
  8. EndSwitch


 
 
en le répétant des milliers de fois, ca devrait le faire. (pos1 et pos2 serait les trames envoyées par mon automate)
Ca me parait bien simple, pas de variable spéciale pour du texte? ca va trop vite???

Reply

Marsh Posté le 18-08-2011 à 21:19:08    

Ben c'est autoIt v3 : on a été plusieurs à le proposer.


Message édité par rufo le 18-08-2011 à 21:20:56

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-08-2011 à 21:27:38    

rockeurfoo a écrit :

ok...
 
donc si je fais quelque chose du genre  
 
 

Code :
  1. #include <CommMG.au3>
  2. _CommGetString($valeur)
  3. Switch $valeur
  4. Case "pos1"
  5.        MouseMove( 16, 15, 0)
  6. Case "pos2"
  7.        MouseMove( 55, 16, 0)
  8. EndSwitch


 
 
en le répétant des milliers de fois, ca devrait le faire. (pos1 et pos2 serait les trames envoyées par mon automate)


avec un

Code :
  1. While 1
  2.   Switch  toto
  3.    ...
  4. WEnd


ça devrait être plus simple

rockeurfoo a écrit :


Ca me parait bien simple, pas de variable spéciale pour du texte? ca va trop vite???


En autoit, par défaut, les variables sont 'créées' lors de leur première utilisation mais tu peux les déclarer explicitement avec les mots clés Dim, Local, Global ou Const.
Tu peux aussi désactiver la création automatique avec une commande dont je ne me rappelle plus pour le moment
[edit] pour forcer la déclaration explicite des variables :

Code :
  1. Opt("MustDeclareVars", 1)


Message édité par SquiZZ le 18-08-2011 à 21:37:02
Reply

Marsh Posté le 18-08-2011 à 21:33:47    

Merci pour vos réponses rapides.
 
Le fait d'ajouter une boucle while 1 me permet simplement de jouer le programme en boucle non?
Je suis quand meme obligé d'utiliser un switch case à l'intérieur?  
 
Par contre j'ai des problèmes pour utiliser l'udf. j'ai copié la dll dans le dossier windows, et le au3 dans le dossier include du logiciel, mais il doit y avoir autre chose. Je pensais avoir bien lu pourtant...

Reply

Marsh Posté le 18-08-2011 à 21:51:05    

La DLL ne marche que si ton script est compilé en 32 bits.
Si tu utilises l'éditeur scite fourni avec la dernière version d'autoit, tu peux compiler ton script avec CTRL+F7 et choisir l'option use x86.
 
J'ai juste décompressé le zip dans un répertoire, compilé CommgExample.au3 en x86, et ça m'affiche bien une boite de sélection de port série et les options.
Je peux pas tester plus loin vu que j'ai qu'un port série ;)

Reply

Marsh Posté le 18-08-2011 à 21:58:47    

effectivement ca fonctionne bien, j'ai plus qu'a tirer de tout ca le petit bout qui m'intéresse.
Je pense que je vais aller dormir et repenser a ca plus tard, par ce que ca commence a faire des noeuds.
 
Merci de votre aide, et bonne nuit.  
 
la suite au prochain épisode.

Reply

Marsh Posté le 20-08-2011 à 01:18:28    

Hello, j'ai bricolé un petit truc pour refaire un peu d'autoit, ça utilise directement la dll windows kernel32 donc ça marche sans autre dépendance : http://pastebin.com/t1KzjJh7
Pour l'utiliser :  

Code :
  1. #include "SerialRead.au3"
  2. $com = OpenCom("\\.\COM3", 9600)
  3. If $com = $INVALID_HANDLE_VALUE Then
  4.     MsgBox(16, "Erreur", "Impossible d'ouvrir le port com" )
  5.     Exit
  6. EndIf
  7. While 1
  8.     Local $str = ReadComString($com)
  9.     ConsoleWrite($str & @CR)
  10.     If $str = "exit" Then
  11.         ExitLoop
  12.     EndIf
  13. WEnd
  14. CloseCom($com)


 
OpenCom permet d'ouvrir le port (dingue, non ?) à la vitesse spécifiée. Ca configure en 8 bits, pas de parité, un bit de stop.
ReadComString retourne la chaîne lue, par défaut ça coupe sur retour chariot \n mais on peut préciser le caractère voulu en option.
J'ai testé sur un XP et sur un Windows 7 64bits, c'est basique, je dis pas que c'est un code exceptionnel, mais ça ne doit pas mettre le feu au PC.
a+


Message édité par SquiZZ le 20-08-2011 à 01:19:56
Reply

Marsh Posté le 21-08-2011 à 08:52:47    

bravo pour le boulot !!!
 
Donc du coup j'ai plus qu'à copier ton boulot (j'ai droit au copyright?).
Il suffit que j'insère dans la boucle while mes conditions pour que je clique a tel ou tel endroit.
Mieux vaut utiliser une série de if then ou plutot un switch case? (je pencherais pour le deuxième?)
 
 
Bon ben y'a plus qu'à!
Merci d'avoir partagé vos connaissances !
 
 
edit :  
 
Je viens de faire un essai, mais sur un pc sous vista. ben SerialRead.au3 est inconnu.
Faut que je branche le futur pc sous 7 pour tester.


Message édité par rockeurfoo le 21-08-2011 à 09:00:52
Reply

Marsh Posté le 21-08-2011 à 20:43:53    

t'as récupéré le fichier sur pastebin ?
Si tu copies le texte de la partie "RAW Paste Data" dans la lien pastebin que j'ai donné et que t'enregistres dans un fichier SerialRead.au3 dans le répertoire de ton script ça devrait marcher.
Pour la suite, si tu remplaces le If $str = "exit ..." de l'exemple que j'ai mis dans mon post prédécent par tes tests ça devrait marcher.


Message édité par SquiZZ le 21-08-2011 à 20:44:22
Reply

Marsh Posté le 23-08-2011 à 20:33:05    

et bien écoutes oui j'ai récupéré le fichier.
 
Je viens de faire l'essai avec seven et c'est ok, mais sous vista impossible de le faire jouer... Doit encore y avoir une merde la dedans qui bloque tout.
 
C'est pas bien grave vu que c'est sous seven que ca tournera.
Il me reste plus qu'a faire un bout d'essai.
 
 
Encore merci pour votre aide à tous, je posterais l'avancée du projet, ou si j'ai des problèmes aussi !!  :whistle:  
 
Bonne soirée à tout!

Reply

Marsh Posté le 06-09-2011 à 20:45:33    

Salut tout le monde!
 
juste pour dire que le programme est terminé, en Autoit, et ca marche niquel!!
Merci a vous pour votre avis et pour m'avoir fait découvrir ce langage tout a fait adapté a ce bout de programme !
 
Bonne soirée !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed