|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Bonjour,
J'ai proposé sur le forum de C++ Builder deux composants, un Timer avec une résolution de 1 milliseconde et un Comport (communication sériel) que j'ai écrit en C++. Il s'agit de composants que j'utilise depuis des années avec mes étudiants (j'enseigne la programmation des systèmes embarqués). http://www.developpez.net/forums/f15...r/telechargez/ S'il y a de l'intérêt, ça me fera plaisir de les réécrire en Delphi. En fait, j'ai travaillé longtemps avec Delphi (les premières versions de mes composants étaient en Delphi), alors ça devrait pas être trop difficile de m'y remettre. Un ex-delphieur. |
|
10
|
|
|
#2 | ||
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Bon bin, je vois bien qu'il n'y a pas d'intérêt, mais ce n'est pas bien grave, j'ai lu le mythe de Sisyphe.
Histoire de voir si j'ai pas perdu la main, j'ai quand même réécrit TMMTimer en Delphi. J'avais oublié comment tout était plus simple en Delphi. De tout façon, ce n'était pas trop long à faire, après tout, ce timer n'est rien d'autre que l'encapsulation de deux petites fonctions de l'API multi média de Windows. Je vous balance le code, au cazou. Code :
Au plaisir! |
||
|
10
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2003 Messages : 90 ![]() |
Personnellement, je serais intéressé par le comport en Delphi, s'il ne s'agit pas d'un composant visuel. En effet, j'utilise Async32 de TMS, qui marche très bien,
mais j'aimerais pouvoir m'en servir dans une DLL. Je suis bien incapable d'écrire un tel composant, et j'espère ne pas être le seul dans ce contexte ! Pour le timer, j'utilise la fonction API gettickcount, mais je n'ai pas besoin d'une telle résolution. |
|
|
00
|
|
|
#4 | |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Citation:
Merci d'avoir pris le temps de me répondre. Au plaisir! |
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() Bruno GuérangéIngénieur développement logiciels Inscription : mai 2002 Messages : 8 217 ![]() |
Citation:
L'avantage de OpenFile est que ce n'est pas forcément un 'vrai' port série, ça peut être un convertisseur USB/Série aussi bien qu'un pont vers Ethernet.
__________________
Delphi : 264 sources à consulter/télécharger ! |
|
|
|
10
|
|
|
#6 | |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Citation:
Reste tout de même qu'on a perdu en efficacité avec tout ça, surtout quand on travaille sur une base d'octets. Par exemple, dans mon ComPort, j'ai un événement "OnRxChars" qui va être lancé beaucoup plus rapidement à la réception d'un caractère avec un véritable port sériel. Je m'étais intéressé pas mal à cette question il y a quelques années. Il y avait des façons d'optimaliser le driver usb-sériel, mais reste quand même que le vrai port était au moins 2 fois plus rapide à déclancher l'événement. Au plaisir! |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Citation:
Pourrais-tu donner un petit exemple d'utilisation ?
__________________
L'Art est long et le Temps est court. |
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Désolé pour le délai, j'avais pas vu la question.
Je ne suis pas certain du sens de ta question, alors je vais te donner deux réponses! Comment s'en servir? En terme de fonctionnement, Le MMTimer est identique à celui du TTimer, avec les mêmes propriétés (Enabled et Interval) et événement (OnTimer). La petite nuance est que "Enabled" est à "false" par défaut et que la précision est de 1 ms (ah oui, l'icône est différent!) À quoi ça peut servir? La précision de 50 ms du timer original est amplement suffisante dans la très grande majorité des cas. Les seuls fois jusqu'à présent où j'ai eu besoin de plus de précision, c'était pour faire du travail en arrière plan (l'équivalent d'un thread) pour vérifier si des données avaient été reçues (pour un COM port et un UDP port) et déclencher un événement. En fait, les threads, j'ai pas mal éliminé ça de mon code pour remplacer ça par un événement de Timer. Je trouve ça moins lourd, probablement plus rapide et le gros avantage, c'est qu'on a pas besoin de se synchroniser avec l'interface utilisateur. J'espère que ça répond à ta question. |
|
10
|
|
|
#9 |
|
Membre Expert
![]() Inscription : octobre 2002 Messages : 1 503 ![]() |
Salut,
Pourquoi ne pas mettre tes projets en open source style sur SourceForge ou autre ? |
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Merci pour ta réponse, que je viens juste de voir !
Citation:
Citation:
J'écris un programme d'échecs (sous Turbo Pascal, mais avec l'intention de passer à Delphi le moment venu). Je rencontre donc des problèmes d'économie de temps. Je pense qu'un chronomètre pourrait me servir à améliorer mon programme, en me permettant de savoir si une écriture est plus lente ou plus rapide qu'une autre. Ce que tu dis sur les "threads" m'intéresse bien aussi. Si je comprends bien, un chronomètre bien utilisé peut rendre les mêmes services qu'un "thread". Par exemple, si je veux que mon programme profite du temps de réflexion de l'utilisateur pour faire des calculs, je peux écrire une condition du genre : "tous les quarts de seconde, vérifier si l'utilisateur n'a pas appuyé sur une touche". C'est ça, non ? P.-S. Un autre exemple de chronomètre sous Delphi XE2 proposé dans le forum.
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Guy TessierEnseignant Inscription : mars 2012 Messages : 164 ![]() |
Bonjour Roland,
Regarde ce vidéo, c'est bien fait: Le plus difficile pour toi pour va être de penser "événementiel" plutôt que "séquentiel". Par exemple, en Delphi, y a pas de programme principal (ok, y en a un mais on y touche pas). Un programme en Delphi, ça fait rien, ça attend un événement et ça réagit. Ce n'est plus le programmeur qui dicte l'ordre des choses par une suite d'énoncés séquentielles, c'est l'utilisateur qui décide, à toi de réagir à ses ordres lorsqu'il aura appuyé sur un bouton, cliquez sur une cellule de grille... Mais tu vas voir, ce n'est pas si sorcier un coup que tu auras compris les notions de propriétés, événement et méthodes associées aux objets. |
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Merci, je vais regarder ça.
__________________
L'Art est long et le Temps est court. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com