{"id":2674,"date":"2020-04-18T17:39:18","date_gmt":"2020-04-18T15:39:18","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=2674"},"modified":"2020-05-10T16:59:51","modified_gmt":"2020-05-10T14:59:51","slug":"reception-de-donnees-par-python","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=2674","title":{"rendered":"R\u00e9ception de donn\u00e9es par Python"},"content":{"rendered":"\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>La r\u00e9ception des donn\u00e9es envoy\u00e9es depuis l\u2019Arduino est effectu\u00e9e \u00e0 l\u2019aide la fonction <strong>\u201d<\/strong><strong>readline()\u201d : <\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>Donnees = str(SerialPort.readline())<\/strong><\/p>\n<p>Cette instruction permet de lire les donn\u00e9es du tampon s\u00e9rie, de les convertir en chaine de caract\u00e8res, \u00e0 l\u2019aide de la fonction <strong>\u201d<\/strong><strong>str()\u201d <\/strong>et de stocker la chaine dans la variable<strong> \u201dDonnees\u201d<\/strong>.<\/p>\n<p>La fonction <strong>\u201d<\/strong><strong>readline()\u201d<\/strong> ne fonctionne que si un d\u00e9lai d\u2019attente pour la r\u00e9ception des donn\u00e9es a \u00e9t\u00e9 d\u00e9clar\u00e9 (<strong>timeout<\/strong> de l\u2019objet <strong>\u201d<\/strong><strong>port s\u00e9rie\u201d<\/strong>).<\/p>\n\n\n\n<p>&nbsp;<\/p>\n<h4><span style=\"color: #0000ff;\"><a id=\"rec1\"><\/a>. <u>Programme pour la r\u00e9ception d\u2019une chaine de caract\u00e8res<\/u> <\/span><\/h4>\n<p>Reprenons le programme (nomm\u00e9 \u201d<a href=\"https:\/\/www.ardpylab.fr\/?page_id=2497\/#prog\" data-wplink-url-error=\"true\">AnalogRead.ino<\/a>\u201d) \u00e0 t\u00e9l\u00e9verser dans la m\u00e9moire de l\u2019Arduino qui affiche, dans le moniteur s\u00e9rie, la valeur de l\u2019entr\u00e9e analogique <strong>A0 <\/strong>avec le <a href=\"https:\/\/www.ardpylab.fr\/?page_id=2497\/#circuit\" data-wplink-url-error=\"true\">circuit<\/a> support des exemples.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2500 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-ms5.png\" alt=\"\" width=\"572\" height=\"312\"><\/figure>\n<\/div>\n\n\n\n<p><br>En remplacement du moniteur s\u00e9rie, voici le programme python (nomm\u00e9 \u201d<strong><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/readline.zip\" data-wplink-url-error=\"true\">ReadLine.py<\/a>\u201d<\/strong>) permettant de lire les donn\u00e9es envoy\u00e9es sur le port s\u00e9rie et de les afficher dans la console Python :<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ReadLine.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"596\" class=\"wp-image-2670 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc1-1.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc1-1.png 890w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc1-1-300x201.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc1-1-768x514.png 768w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<h4><strong><u><br>D\u00e9roulement du programme<\/u><\/strong><strong>&nbsp;:<\/strong><\/h4>\n<p>&#8211; <span style=\"text-decoration: underline;\">Importation des modules&nbsp;<\/span>:<\/p>\n<p>Le module <strong>\u201dConnectToArduino.py\u201d, <\/strong>contenant les fonctions de connexion \u00e0 l\u2019arduino via le port s\u00e9rie, est import\u00e9.<\/p>\n<p>L\u2019importation de ce module importe \u00e9galement les biblioth\u00e8ques&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>. serial <\/strong>(pour la connexion au port s\u00e9rie de l\u2019Arduino)<\/p>\n<p style=\"padding-left: 40px;\"><strong>. serial.tools.list_ports <\/strong>(pour d\u00e9teminer les ports coms disponibles)<\/p>\n<p style=\"padding-left: 40px;\"><strong>. sys <\/strong>(pour mettre fin au programme en cas de probl\u00e8me de connexion au port s\u00e9rie)<br><br><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">D\u00e9claration des constantes et variables<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">. <strong>donnees<\/strong><strong> = \u201d<\/strong>&nbsp;(variable pour stocker les donn\u00e9es qui transitent par le port s\u00e9rie)<br><br><\/p>\n<p>&#8211; <span style=\"text-decoration: underline;\">Connexion \u00e0 l&rsquo;Arduino<\/span>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">. Appel de la fonction du module \u201d<strong>ConnectToArduino.py<\/strong>\u201d de s\u00e9lection du port COM&nbsp;:<\/p>\n<p style=\"padding-left: 80px;\"><strong>PortComArduino = SelectPortCOM()<br><\/strong><\/p>\n<p style=\"padding-left: 40px;\">Le nombre de port COM disponible est alors d\u00e9termin\u00e9&nbsp;:<\/p>\n<p style=\"padding-left: 80px;\"><strong>PortsCOM = list(serial.tools.list_ports.comports()<\/strong><\/p>\n<p style=\"padding-left: 80px;\">&#8211;&gt; si nombre de port COM = 0 : message d\u2019erreur et le programme est arr\u00eat\u00e9,<\/p>\n<p style=\"padding-left: 80px;\">&#8211;&gt; si nombre de port COM = 1 : s\u00e9lection de ce port COM pour la connexion,<\/p>\n<p style=\"padding-left: 80px;\">&#8211;&gt; si nombre de port COM &gt; 1 : L\u2019utilisateur doit s\u00e9lectionner le bon port COM.<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ConnectToArduino.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"750\" class=\"wp-image-2718 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc2-1.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc2-1.png 894w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc2-1-300x252.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc2-1-768x644.png 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p style=\"padding-left: 40px;\">. Tentative d\u2019ouverture du port COM s\u00e9lectionn\u00e9 avec la fonction \u201d<strong>OpenPortCom<\/strong>\u201d&nbsp;du module \u201d<strong>ConnectToArduino.py<\/strong>\u201d:<\/p>\n<p style=\"padding-left: 80px;\"><strong>SerialPort = OpenPortCom(PortComArduino)<\/strong><\/p>\n<p style=\"padding-left: 80px;\">&#8211;&gt; message d\u2019erreur et le programme est arr\u00eat\u00e9 si l\u2019ouverture du port com s\u00e9lectionn\u00e9 a \u00e9chou\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ConnectToArduino.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"274\" class=\"wp-image-2720 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc3-1.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc3-1.png 879w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc3-1-300x94.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc3-1-768x239.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p>&#8211; Boucle principale du programme (boucle <strong>\u201d<\/strong><strong>while True\u201d<\/strong>) :<\/p>\n<p style=\"padding-left: 40px;\">. Lecture des donn\u00e9es du tampon de la liaison s\u00e9rie si la connexion \u00e0 l\u2019Arduino est r\u00e9ussie<\/p>\n<p style=\"padding-left: 80px;\"><strong>donnees=str(SerialPort.readline())<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. Affichage des donn\u00e9es dans la console Python\u00a0:<\/p>\n<p style=\"padding-left: 80px;\"><strong>print(donnees)<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. Fin du programme en appuyant sur <strong>Ctrl-C<br \/><br \/><\/strong><\/p>\n<p>Et le r\u00e9sultat dans la console python\u00a0:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"670\" height=\"407\" class=\"wp-image-2630 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc4.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc4.png 670w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc4-300x182.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/figure>\n<\/div>\n\n\n\n<p><u>Remarques<\/u>&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">&#8211; Dans la console Python, les donn\u00e9es converties en chaine de caract\u00e8res sont affich\u00e9es entre des balises&nbsp;:<strong> b\u2019 \u2018 <\/strong>et le caract\u00e8re \u00ab\u00a0retour \u00e0 la ligne\u00a0\u00bb (<strong>\u00ab\u00a0rn\u00a0\u00bb<\/strong>) est \u00e9galement affich\u00e9.<\/p>\n<p style=\"padding-left: 40px;\">&#8211; Quand le d\u00e9lai d\u2019attente de r\u00e9ception des donn\u00e9es (<strong>\u00ab\u00a0<\/strong><strong>timeout<\/strong><strong>\u00ab\u00a0<\/strong>) est \u00e9coul\u00e9, une balise vide (<strong>b\u2019 \u2018) <\/strong>est affich\u00e9e.<\/p>\n<p style=\"padding-left: 40px;\">&#8211; Pour supprimer les balises vides et n\u2019afficher que les donn\u00e9es envoy\u00e9es par l\u2019Arduino, il suffit de faire un traitement sur la chaine de caract\u00e8res&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; modification du programme \u201d<strong>ReadLinepy\u201d<\/strong> (nouveau programme \u201d<strong><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/readline2.zip\" data-wplink-url-error=\"true\">ReadLine2.py<\/a>\u201d<\/strong>) :<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ReadLine2.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"623\" class=\"wp-image-2635 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc5.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc5.png 930w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc5-300x201.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc5-768x514.png 768w\" sizes=\"auto, (max-width: 930px) 100vw, 930px\" \/><\/a><\/figure>\n<\/div>\n<p>Ainsi les 2 premiers caract\u00e8res et les 5 derniers ne sont pas affich\u00e9s&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"671\" height=\"309\" class=\"wp-image-2637 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc6.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc6.png 671w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc6-300x138.png 300w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<h4><span style=\"color: #0000ff;\"><a id=\"rec2\"><\/a>. <u>Programme pour la conversion d\u2019une chaine de caract\u00e8res en nombre<br><br><\/u><\/span><\/h4>\n<p>Pour pouvoir exploiter, par un programme Python, les donn\u00e9es envoy\u00e9es par l\u2019Arduino, dans la plupart des cas, il va falloir convertir la chaine de caract\u00e8res re\u00e7ues en nombre entier ou flottant.<\/p>\n<p>Pour cela, nous allons utiliser la fonction <strong>\u201d<\/strong><strong>split()\u201d<\/strong>&nbsp;qui permet de couper une chaine de caract\u00e8res en une liste contenant les \u00e9l\u00e9ments de la chaine. Il est possible de sp\u00e9cifier le type de s\u00e9parateur et le nombre de coupes \u00e0 effectuer&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>Liststring = string.split(separateur, maxsplit)<\/strong><\/p>\n<p>Par d\u00e9faut, le s\u00e9parateur est l\u2019espace entre les caract\u00e8res et maxsplit = -1 (toutes les coupes possibles sont effectu\u00e9es).<\/p>\n<p>Quand le nombre de coupes est sp\u00e9cifi\u00e9, le nombre d\u2019\u00e9l\u00e9ments dans la liste est \u00e9gale au nombre de coupes plus un \u00e9l\u00e9ment.<\/p>\n<p>Dans l\u2019exemple de programme pr\u00e9c\u00e9dant, la partie int\u00e9ressante de la chaine de caract\u00e8re est la valeur de l\u2019entr\u00e9e analogique. Pour isoler cette valeur, nous allons couper la chaine en 2 \u00e9l\u00e9ments avec comme s\u00e9parateur <strong>\u201d<\/strong><strong> : \u201d<\/strong>&nbsp;gr\u00e2ce \u00e0 l\u2019instruction suivante&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>Listdonnees = donnees.split(\u201d<\/strong><strong>:\u201d,1)<\/strong><\/p>\n<p>Et convertir, en nombre entier, l\u2019\u00e9l\u00e9ment de la chaine correspondant \u00e0 la valeur de A0&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>ValAO = int(Listdonnees[1])<\/strong><\/p>\n<p>Le premier \u00e9l\u00e9ment de la liste <strong>\u201d<\/strong><strong>Listdonnees\u201d<\/strong>&nbsp;\u00e9tant&nbsp;: <strong>Listdonnees[0] = \u201d<\/strong><strong>Valeur A0\u201d<\/strong><\/p>\n<p>La boucle principale du programme (programme <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/readline3.zip\" data-wplink-url-error=\"true\">ReadLine3.py<\/a>\u201d<\/strong>) est alors :<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ReadLine3.py\" data-wplink-url-error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"925\" height=\"350\" class=\"wp-image-2643 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc7.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc7.png 925w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc7-300x114.png 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc7-768x291.png 768w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/a><\/figure>\n<\/div>\n<p>Ce qui donne dans la console Python&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"670\" height=\"388\" class=\"wp-image-2647 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc8.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc8.png 670w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc8-300x174.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/figure>\n<\/div>\n\n\n\n<p><br>Les valeurs de <strong>A0<\/strong> ont \u00e9t\u00e9 isol\u00e9es et converties en entier. Elles peuvent \u00eatre maintenant stock\u00e9es dans un tableau ou une liste pour effectuer ult\u00e9rieurement des calculs.&nbsp;<\/p>\n<p>Apr\u00e8s avoir d\u00e9clar\u00e9, une liste <strong>\u201d<\/strong><strong>ListValA0= [ ]\u201d<\/strong>, Il suffit de remplacer le <strong>\u201d<\/strong><strong>print(ValA0)\u201d<\/strong>&nbsp;par&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table style=\"width: 100%; height: 39px;\">\n<tbody>\n<tr style=\"height: 21px;\">\n<td style=\"height: 21px; padding-left: 40px; width: 100%;\" bgcolor=\"#FFFFCC\">\n<p><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ReadLine4.py\" data-wplink-url-error=\"true\"><span style=\"color: #000000;\">ListValA0.append(ValA0)<\/span><\/a><span style=\"color: #000000;\">&nbsp; &nbsp; &nbsp; &nbsp;<\/span><span style=\"color: #000000;\"><span style=\"color: #808080;\">#ajout de ValA0 \u00e0 la liste \u201dListValA0\u201d<\/span><\/span><\/p>\n<p><span style=\"color: #000000;\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/codes\/py\/ReadLine4.py\" data-wplink-url-error=\"true\"><span style=\"color: #000000;\">Print (ListValA0)<\/span><\/a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style=\"color: #808080;\">&nbsp;#pour contr\u00f4ler l\u2019ajout<\/span><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<p>(Voir programme \u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/pyserial\/readline4.zip\" data-wplink-url-error=\"true\"><strong>ReadLine4.py<\/strong><\/a>\u201d)&nbsp;<\/p>\n<p>Toutes les valeurs de <strong>A0<\/strong> sont alors stock\u00e9es dans une liste&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2648 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc9.png\" alt=\"\" width=\"580\" height=\"304\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc9.png 670w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-pc9-300x158.png 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure>\n<\/div>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2613\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2678\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; La r\u00e9ception des donn\u00e9es envoy\u00e9es depuis l\u2019Arduino est effectu\u00e9e \u00e0 l\u2019aide la fonction \u201dreadline()\u201d : Donnees = str(SerialPort.readline()) Cette instruction permet de lire les donn\u00e9es du tampon s\u00e9rie, de les convertir en chaine de caract\u00e8res, \u00e0 l\u2019aide de la fonction \u201dstr()\u201d et de stocker la chaine dans la variable \u201dDonnees\u201d. La fonction \u201dreadline()\u201d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2674","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2674"}],"version-history":[{"count":0,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/2674\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}