|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonsoir,
je desire depuis mon PC transmettre le contenu de mon fichier texte au microcontrôleur Atmega 644p. Mon Pc et l´Atmega 644p communiquent a travers l´interface de transmission RS232. J´ai redige un code en C++ pouvant lire le contenu du fichier Texte. La compilation de mon programme a ete un succes et aucune faute n´a ete mentionne dans mon code. Helas, je n´arrive pas a transmettre le contenu du fichier texte a l´Atmega 644p via la peripherie RS232. Bref je ne sais pas si j´ai loupe une procedure fondamentale. N.B: Dans mon fichier texte, je ne lis que les coordonnees X et Y. Les autres symboles se trouvant dans le fichier texte sont d´aucune utilite pour moi. Bref je desire envoyer progressivement les couple de coordonnes (X,Y) vers l´interface de transmission RS232. Je vous prie de bien vouloir m´aider, car je suis a cours d´inspiration. Mon code source et mon fichier texte sont attaches a ce message. Merci d´avance. Arthur |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Bonjour,
Il y a plein de choses à dire sur votre code, mais je vais commencer par les bugs : 1. La variable x n'est qu'une seule chaîne, pourtant vous écrivez dedans tous les X du fichier. Donc à la fin de la boucle il ne reste que le dernier X dans x. En plus, avec i_x <= l_x vous allez trop loin et copiez un X non initialisé au final ! Tout ça est valable aussi pour la variable y, bien sûr. 2. Dans la boucle d'émission, vous testez control == 0 pour savoir si vous envoyez un X ou un Y. Sauf qu'aucun code ne touche à control ! 3. Quand vous écrivez while (k1 < i_help_x), ni k1, ni i_help_x ne bouge, donc soit ça fait rien soit c'est une boucle infinie. 4. Le test de CTS seul n'a pas de sens. Si j'ai bien compris le principe, il faut émettre un RTS pour espérer recevoir un CTS. Laissez le système se charger du contrôle de flux ! Maintenant, quelques remarques supplémentaires : 1. Pour lire un fichier complet, il vaut mieux faire un seul read qu'une série de get. Mais en fait il n'y a aucune raison de tout charger en mémoire. 2. Votre code ne compile pas sur un compilateur respectant le standard C++ car vous utilisez les VLA (variables x et y). VLA = Variable Length Array. La solution c'est de déclarer x1 et y1 dans un enum. Pensez d'ailleurs à utiliser les vector à la place de tous vos tableaux fixes, c'est pas plus lourd, vous verrez. 3. L'insertion de zéros dans le texte complet pour ensuite vous simplifier la lecture des X/Y, c'est moins fiable, moins performant, et plus lourd à coder que la simple extraction d'entiers via un istream. 4. atof renvoie un double, donc en mettant le résultat dans un float ça fait un warning. 5. Le calcul du pas moteur ne nécessitait pas de passer par les float pour ensuite revenir à un int. Voici du code qui fait à peu près pareil que le vôtre, avec le même style, mais en bien plus simple. La partie qui reste floue c'est l'envoi sur le port série, car votre code ne permet pas vraiment de comprendre le protocole. Qui a programmé le microcontrôleur ? Quelqu'un de votre boîte ? Vous avez une doc qui décrit le protocole ? Il n'y a pas des lectures à faire aussi ? (un echo, un accusé de réception, l'indication qu'une action est terminée...) Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonsoir a tous,
tout d´abord je tiens a remercier Hibernatus34 pour ses precieuses explications et pour le temps qu´il a investis pour mieux m´eclairer sur mon probleme. En fait la tâche que j´essaie d´effectuer est une partie de mon memoire de fin d´etude. Jusqu´ici, je n´avais pas encore programme en c++ et c. Bref je suis un debutant dans la programmation et je te remercie une fois de plus d´avoir pris la peine de m´eclairer sur les erreurs de mon programme. En fait je ne beneficie d´aucun soutien dans l´institut ou je bosse sur mon memoire. Mon encadreur principal n´a aucune de la pragrammation en c++, mais il sait ce qu´il veut que j´obtiens comme resultat. Sa fait des mois que je me demerde tout seul et je suis tres heureux d´avoir recus tes conseils. Concernant la programmation du microcontrôleur, je l´ai programme moi même. Veux-tu que je t´envoie le fichier de programmation du microcontroleur, pour que tu y vois plus clair. Bref, je vais le joindre a ce message. Merci encore pour ton aide. Je vais de ce pas continuer a bosser afin de comprendre tes suggestions. Merci encore pour ton aide. Arthur |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Avec plaisir.
Mais alors si vous êtes le développeur aux 2 extrémités de la connexion, ça risque d'être difficile de savoir ce qui ne marche pas. Le code du microcontrôleur ne me parle pas beaucoup parce que d'une part je n'ai malheureusement pas d'expérience là-dedans (j'ai toujours développé le côté PC uniquement), et d'autre part je ne parle pas l'allemand ! Que fait la machine quand elle reçoit ces coordonnées ? Comment distinguez-vous le X du Y ? Vous pourriez envoyer "42,51\n" pour un couple de coordonnées par exemple. Pourquoi faire de l'ASCII, c'est pas plus facile en binaire ? (attention à l'endianness cependant) Avez-vous essayé le sens inverse ? (plus facile à vérifier dans un premier temps) Pas mal de machines font un écho sur le port série, c'est à dire qu'elles renvoient ce qu'elles ont reçu tel quel. Ca serait une bonne idée pour faire un test simple. En mode ASCII, pas mal utilisent un retour à la ligne comme terminateur, et un caractère du genre \r pour faire un reset (dire "laisse tomber la séquence que j'ai commencé à envoyer, je vais en envoyer une autre"). Enfin, dans les domaines où j'ai bossé, j'ai vu ça, et c'était pas mal, mais j'ai pas énormément d'expérience. |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Merci pour ta prompt reaction, je te donnerais les details a propos de tes questions plus tard. Car a force de parler en allemand, c´est devenu difficile pour moi de formuler mes phrases en francais.
Merci pour ta comprehension. Arthur |
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonjour Hibernatus34,
desole de t´embêter une fois de plus. J´ai analyse le code que tu as modifie et franchement je suis impressionne. Je n´aurais pas fait mieux. Cependant j´ai quelques soucis. 1- Les positions X et Y du fichier texte sont des string(ASCii). Alors j´ai encore modifie le code et par la suite essaye de convertir les positions de Ascii en integer. En suite j´ai transforme les positions de integer en pas de moteur. Cependant quand j´essaie de visualiser les differentes conversions avec l´instruction , helas aucune position n´apparaît sur la console de mon IDE (Code::block). Quelle betise ai-je encore fait. 2- A la fin du code modifie que tu m´as poste, tu as ecris en commentaire : " // Envoi des coordonnées par le port série, à compléter car votre code ne permet pas de savoir ce que vous deviez réellement faire ". Que dois-je completer au juste ? En fait je desire tout simplement envoyer par couple toutes les positions (X,Y) du fichier sur le port serie RS232 du PC. Ces Positions doivent être receptiones par le microcontrôleur Atmega 644p. Quant-au microcontrôleur, il possede une entree RS232 a travers laquelle il doit être en mesure de recevoir toutes les positions (X,Y). L´envoi d´un couple de position (X,Y) doit se faire sous forme de 16 bytes. A raison de 8 Bytes pour la position X et 8 Bytes pour la position Y. Bref, j´aimerais faire marcher d´abord le protocol d´envoi du couple des positions (X,Y) sur le port serie RS232. 3- S´il te plaît, a quoi fais-tu allusion avec le commentaire suivant: Code :
output_x << x_steps; // TODO: Ne manque-t-il pas un terminateur ou un cadrage ? S´il te plaît tes corrections, suggestions et propositions sont les bienvenues. Je te prie de bien vouloir m´accorder encore de ton temps. Merci. Le code: Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Bonjour,
1. La modif que tu as faite n'est pas bonne : Le code exécuté par l'opérateur >> dépend du type qu'on lui passe. En lui passant un int, j'extrais les caractères représentant une valeur entière, et je récupère un int (la conversion équivalente à atoi/atof est faite par l'opérateur >>). Garde mon code et fais un cout << x << ", " << y << endl;. Tu verras que l'extraction fonctionne bien. Je t'aurais pas donné un code qui ne marche pas. 2. OK, donc finalement c'est du binaire ? Dans ton code d'origine, j'ai peut-être mal vu, mais il me semble que tu envoyais de l'ASCII (donc pour envoyer 42 tu envoyais 2 caractères '4' et '2'). Tu parles vraiment de 8 bytes (64 bits) ou de 8 bits par coordonnée ? Ca me paraît surprenant que ton microcontrôleur soit à l'aise avec du 64 bits. Cependant les valeurs étaient trop grandes pour du 8 bits... Donc si je veux envoyer (42, 51) puis (12, 34), et en imaginant que ça soit sur 8 bytes (octets), on envoie en réalité ceci ? Code :
char sequence[] = { 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 34 }
Je trouve surprenant un tel protocole, en cas de décalage on peut envoyer n'importe quoi. Habituellement on a au moins un code de départ, un séparateur... 3. Quand on envoie de l'ASCII, comment le récepteur peut-il savoir quand on a fini d'envoyer le X, et quand on commence à envoyer le Y ? - Soit avec du cadrage : "0042" ou " 42" (cadré à droite) et je décide que tout nombre fait 4 caractères - Soit avec un terminateur : "42\n" (le \n indique la fin) Mais visiblement tu veux faire du binaire, et là c'est un peu pareil, sauf qu'au lieu de parler de cadrage on va juste dire que la taille est fixe : 1 octet ou 2 ou 3... PS. Si tu me confirmes que c'est du binaire que tu veux, je te donnerai le code adapté (en gros il suffit de virer les "output" et copier par morceaux les x et y dans un char[]). |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonjour a nouveau,
en fait je desirais envoyer les couples de position (X,Y) du fichier texte sous forme de deux Bytes, et non 8 bytes. 8 Bytes c´est trop !! Je m´escuse pour mon erreur. Lors de l´envoi d´un couple de position (X,Y), le port serie rs232 doit recevoir 2 bytes. Soit 1 byte pour la position X et 1 byte pour la position car Le microcontrôleur Atmega 644p a une capacite de 64K. Disons que c´est pour l´option binaire que j´avais envie de opter. Mais je me rends compte que cela me compliquera la tâche plus tard. Es-ce possible de transferer les couples de position (X,Y) du fichier sous forme ASCii sur le port serie RS232 ?. Si oui, j´aimerais que tu m´aides dans ce sens la. Si non, alors j´opte pour l´option binaire. Bref, Je prefere envoyer les positions sous forme ASCii. 1- Quand on envoie de l'ASCII, comment le récepteur peut-il savoir quand on a fini d'envoyer le X, et quand on commence à envoyer le Y ? Je pense comme tu l´as proposes que c´est avec un terminateur [ "42\n" (le \n indique la fin)] que l´on peut marquer la fin de l´envoi d´une position. 2- Si je ne me trompe pas, le programme que tu m´as suggeres envoie les positions sous la forme ASCii. Ou bien je me trompe ? Si c´est le cas, alors je devrais conserver le code que tu m´as suggere !! 3- Quel code est adequat pour envoyer progressivement les positions (X,Y) sur le port serie avec le terminateur. Du moins, qu´es ce que je dois encore adapter au programme pour que le processus marche? Escuse moi, si je pose trop de questions. Je suis tellement confus et j´aimerais comprendre le processus. Merci pour ta disponibilite et ton aide.. N.B: ta consigne de tout a l´heure marche. merci Arthur. |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
On va y aller en douceur...
Laissons tomber pour l'instant les X et les Y, le fichier texte, le choix binaire ou ASCII. Il faut que tu sois capable de programmer sur le microcontrôleur une écoute du port série et un écho. 1 J'attends de recevoir quelque chose sur le port série 2 Je lis un caractère sur le port série 3 J'envoie ce caractère sur le port série 4 GOTO 1 Je peux pas t'aider à faire ça, ou alors il va falloir me faire un petit cours accéléré sur ton microcontrôleur. Ensuite, côté PC, c'est simple : - CreateFile, GetCommState, SetCommState (SetCommTimeouts ?) - WriteFile - ReadFile Quand tu auras ça, tu sauras que tu es capable de les faire dialoguer et on choisira un protocole adapté. ASCII ou binaire, c'est presque une affaire de goût, car les avantages/inconvénients sont négligeables. J'ai encore une question : à quoi vont servir les X et les Y ? (piloter 2 moteurs ?) Vont-ils être utilisés dès réception, ou mémorisés dans une séquence ? |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Salut,
okay, on va proceder comme tu suggeres. A quoi vont servir les X et les Y ? --> Ils serviront a piloter exactement deux moteurs. les positions X et Y representent en fait les positions d´une platine dans un repere orthonorme. Les positions X piloteront un moteur pendant que les positions Y piloteront l´autre moteur. Cependant les deux moteurs sont pilotables lorsqu´ils recoivent les Positions X et Y sous forme ASCii. Le microntrôleur sert de transition entre le PC et les deux moteurs. Mon microcontrôleur possede deux ports serie. A savoir: RS232 et RS485. Le port serie RS232 du microcontrôleur permettra la communication avec le PC. Par ailleur le port serie RS485 permettra la communication entre le microcontrôleur Atmega 644p et les deux moteurs. Concernant la programmation du microcontrôleur, je vais te faire un bref resume de la maniere dont-il fonctionne dans le prochain fichier que je vais poster. Merci encore pour ton soutien. Arthur. |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Salut Hibernatus34,
Voici les instructions que tu m´as donnes lors de notre derniere conversation: 1 J'attends de recevoir quelque chose sur le port série 2 Je lis un caractère sur le port série 3 J'envoie ce caractère sur le port série 4 GOTO 1 . En piece jointe se trouve un fichier qui effectue exactement tes instructions. Je vais te faire un bref resume du fonctionement de L´USART. En fait mon microcontrôleur atmega 644p possede deux USARTs. A savoir l´usart0 qui fonctionne comme port serie rs232 et l´usart1 qui fonctionne comme port serie rs485. L´usart0 et l´usart1 possede respectivement le buffer UDR0 et le buffer UDR1. Les buffers UDR0 et UDR1 recoivent respectivement un byte. Ceci dit, lorsque les positions x et y du fichier texte seront envoyes a l´atmega 644p via le port serie rs232, c´est le buffer UDR0 qui recevra progressivement les donnees. UDR0 ne peut recevoir qu´un byte. Alors pour recevoir les autres bytes, une fonction sera necessaire pour liberer le buffer UDR0 afin de recevoir les autres positions. Ce processus sera effectue jusqu´a ce que UDR0 recoivent toutes les positions. Cependant les positions recues par le buffer UDR0 devront être envoyes au buffer UDR1 qui peut seulement aussi contenir 1 byte. Les positions se trouvant dans UDR1 seront a leur tour envoye aux deux moteurs de commande. Pour cela les positions qui se trouvaent dans UDR1 seront enregistres progressivement dans deux variables ( car on dispose des positions x et y) qui seront ensuite envoye sur le port serie rs485 pour permettre la communication avec les deux moteurs de commande. J´ai redige un 2ieme code en C qui pourra me permettre de recevoir les positions x et y du fichier texte avec l´atmega 644p, en suite ces positions seront envoyes vers les deux moteurs de commande . Si tu veux bien, jete y un coup d´oeil. Peut-être que tu pourras deceler des erreurs de raisonnement dans mon travail. Est-ce que mes expliations sont suffisants pour qu´on puisse finir le code c++ concernant l´envoie des positions x et y du fichier texte au microcontrôleur atmega 644p. J´attends ton intervention avec impatience. cordialement. Arthur |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Oui c'est clair, le code aussi est clair. Je devine évidemment que UDR0 c'est le "data register", UBRR0H/L c'est le "baud rate register", UCSR0A/B/C "control and status register", UDRE0 le flag "data register empty" etc. (je plaisante, j'ai trouvé la doc, mais c'est quand même simple en fait)
Il manque un ";" dans la fonction USART0_Receive après le while. Par la suite, si ton microcontrôleur doit faire d'autres choses, tu pourras utiliser les interruptions à la place des boucles. As-tu testé le code ? Sur PC il faut faire un WriteFile puis un ReadFile pour voir si tu reçois le caractère que tu as envoyé. PS. Je n'avais lu que test.c (que je te recommande de tester en premier avec la connexion au PC) Je viens de lire vite fait 644p_smci-2.c. En fait tu utilises déjà les interruptions, donc c'est parfait. Cependant je ne comprends pas le code : - Dans l'ISR USART0_RXC0, tu testes !usart0_rx_flag. Mais ce booléen n'est jamais remis à zéro, donc tu ne peux faire qu'une réception. C'est parce que le code n'est pas fini ? - Dans la même routine, tu écris immédiatement dans UDR1 sans savoir s'il est dispo, et puis du coup à quoi bon stocker dans usart0_rx_buffer ? - Dans l'ISR USART1_UDRE1, tu lis dans UDR1, alors que tu devrais y écrire. - L'écriture dans x et y ne sert à rien pour le moment, et le test counter % 2 non plus, du coup. L'interruption UDRE1 signale que UDR1 est prêt à recevoir un octet, ça ne signale pas que tu viens d'écrire dans UDR1. (si je me trompe dis-le moi) Tu as plusieurs manières de coder ça correctement, mais j'aimerais que tu testes d'abord un simple écho. (test.c) J'ai une nouvelle question : le protocole entre le microcontrôleur et le moteur (via l'USART1) est bien défini, non ? Quel est-il ? (ASCII/Binaire, avec terminateur...) |
|
|
00
|
|
|
#13 | ||
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonsoir Hibernatus34,
tout d´abord je tiens a te remercier pour ton soutien et tes encouragements. J'ai une nouvelle question : le protocole entre le microcontrôleur et le moteur (via l'USART1) est bien défini, non ? Quel est-il ? (ASCII/Binaire, avec terminateur...) En effet, il existe un protocole bien defini entre le microcontrôleur et les deux moteurs de comande. Le protocole est en ASCii et sous la forme suivante: "#2C\r" Explication du protocole : # ---> debut de l´instruction 2 ---> Adresse du moteur de commande c---> Instruction a envoyer au moteur de commande \r --> fin de l´instruction Concernant la programmation de l´ISR USART0_RXC0 et de l´ISR USART1_UDRE1, j´y travaille encore. Neanmoins je trouve tes remarques pertinentes. Je vais modifier a nouveau mes codes. J´ai essaye par ailleurs de modifier le programme qui me permettra d´envoyer les positions x et y au microcontrôleur , afin de tester l´envoi et la reception des coordonnees. Helas j´obtiens des fautes lorsque je compile le code. A savoir : error: request for member 'str' in 'input_x', which is of non-class type 'char [5]'| error: request for member 'str' in 'input_x', which is of non-class type 'char [5]'| error: request for member 'str' in 'input_y', which is of non-class type 'char [5]'| error: request for member 'str' in 'input_y', which is of non-class type 'char [5]'| Comment pourrais-je corriger ses fautes ? Cependant, l´instruction Code :
cout << "error: " << GetLastError() << endl << fmsg << endl; // Affichage de l´erreur Je te prie de bien vouloir m´aider. le code: Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Bah, là je suis un peu perplexe...
input_x c'est toi qui l'a rajouté, tu lui as donné le type char[5] et ensuite tu tentes d'accéder à une méthode membre (que tu as copié/collé d'un code accédant à un stringstream). Un char[] n'est pas un objet (class/struct) et n'a donc pas de membres. Soit tu passes le char[] tel quel à ReadFile (son type est char*) et la taille tu la calcules avec un strlen(), soit tu utilises un stringstream. Mais le plus bizarre, c'est que tu fais les choses à l'envers, quand tu utilises ReadFile, c'est pour lire une chaîne, pas pour l'écrire. N'essaie pas de copier/coller mon code sans comprendre, n'hésite pas à me demander comment ça marche, et comment tu peux faire la suite. |
|
|
00
|
|
|
#15 | ||
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Salut,
J´ai modifie le code de la maniere suivante: Code :
Dois-je encore ameliorer quelque chose ?. Merci |
||
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Sorry, je ne crois pas avoir suivis tes directives.
Je crois avoir compris ce que tu as essayes de m´expliquer. JE me mets au boulot. Merci. |
|
|
00
|
|
|
#17 | ||
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Salut,
c´est encore moi. En fait j´ai a nouveau essaye de suivre tes conseils et j´espere que c´est le cas. J´ai modifie la fonction ReadFile de la maniere suivante : Code :
Dois-je encore ameliorer quelque chose avant de passer au test entre le PC et le microcontrôleur ? Merci pour ta disponibilite. |
||
|
|
00
|
|
|
#18 | |||
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
Non c'est toujours pas bon.
Pourquoi tu écris dans input_x/input_y si c'est pour les passer à ReadFile ? C'est ReadFile qui va écrire dedans, pas toi. Toi tu vas lire ce que ReadFile t'a donné. As-tu testé l'écho ? Je ne sais toujours pas si la communication entre le PC et le µC fonctionne... Si tu lances ton appli et qu'elle ne fait rien, tu regretteras de ne pas avoir testé le minimum vital. Pour tester l'écho tu peux écrire ceci : Code :
Si le résultat est : Citation:
(as-tu rajouté le point-virgule manquant dans USART0_Receive ?) |
|||
|
|
00
|
|
|
#19 |
|
Invité régulier
![]() arthur Étudiant Inscription : mars 2012 Messages : 110 ![]() |
Bonjour Hibernatus34,
J´ai deboggue le programme C++ et j´ai obtenu les fautes suivantes: - error = 2 fmsg = 0x8157e8 "Das System kann die angegebene Datei nicht finden.\r\n" La traduction en francais signifie: Le système ne peut pas trouver le fichier donné. - Error: Impossible d´ouvrir le port série - J´ai place des breakpoints sur les fonctions ReadFile() et WriteFile() afin de verifier le protocole d´envoi et de reception, helas le curseur saute ces fonctions. Cependant j´ai un autre souci. J´aimerais envoyer une position x sous forme d´un byte au buffer UDR0 (UDR0 ne peut contenir qu´un byte) du microcontrôleur. Mais je ne pense pas que l´instruction effectue cela. Dois-je tout simplement remplacer cette instruction (output_x.str().size()) par le chiffre 1 pour indiquer que je desire envoyer au port serie 1 byte pour une position x et 1 byte pour une position y. Je te prie de m´aider. Merci d´avance. arthurdubois. |
|
|
00
|
|
|
#20 | ||
|
Membre Expert
![]() Inscription : août 2010 Messages : 533 ![]() |
As-tu un appareil et une appli pour tester ton port série. Es-tu certain que c'est le COM1 ?
L'autre jour, j'ai eu à faire fonctionner une vieille machine sur le port série, et j'ai fait exprès d'utiliser CreateFile/WriteFile/ReadFile pour tester ce que j'avais vu avec toi. Ca a fonctionné sans problème. Pour l'envoi de caractères 1 à 1, tu peux faire quelque chose comme ça : Code :
PS. Peux-tu vérifier ce que tu as dans la base de registres dans HKLM\Hardware\Devicemap\SerialComm ? |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com