12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- % ===================================================================
-
- \section{Serial coms} \index{serial} \label{serial}
-
- Il va y avoir deux liaisons série entre l'automate et le monitoring.
- La première, que nous allons juste entrevoir, passera par le port
- USB de la carte Arduino. La seconde passera par un port série
- auxiliaire\footnote{Il y en a 4 sur le mega 2560} de celle-ci.
-
- % -------------------------------------------------------------------
- \subsection{Un gros souci}
-
- \begin{lstlisting}
- tcgetattr(uart0, &options);
- options.c_cflag = baudbits | CS8 | CLOCAL | CREAD;
- options.c_iflag = IGNPAR;
- options.c_oflag = 0;
- options.c_lflag = 0;
- tcflush(uart0, TCIFLUSH);
- tcsetattr(uart0, TCSANOW, &options);
- \end{lstlisting}
-
- Et en fait, le \texttt{read} sur le \textsl{fd} du serial device
- n'est pas bloquant, \texttt{perror} annonce \emph{success}, mais
- rien ne marche. L'année 2019 va commencer sur du vaudou programming%
- \footnote {aka shotgun debugging.}.
-
- \textit{29 décembre 2018} : le petit grain de magie\index{magie}
- est très simple à mettre en oeuvre, mais
- très difficle à spotter dans le gazillion d'options. Il semblerait
- que mettre \texttt{options.c\_cc[VMIN]} à 1 permet d'avancer vers
- l'étape suivante.
-
- Laquelle étape est une tentative d'utilisation de \texttt{select(2)},
- dans l'objectif de pouvoir gérer nous-même le \textit{timeout},
- laquelle tentative n'est pas du tout concluante.
-
- % -------------------------------------------------------------------
- \subsection{Protocole} \index{protocole} \label{serialprotocol}
-
- L'automate va avoir plusieurs types de données à envoyer.
- Nous allons donc transférer ces valeurs sous forme de ligne
- de texte commençant par un caractère clef (par exemple T pour
- les températures) et se terminant par un \textit{newline}.
-
-
- % -------------------------------------------------------------------
- \subsection{Un peu de code} \label{serialcode}
-
- \begin{lstlisting}
- main()
- {
- while(fork());
- }
- \end{lstlisting}
-
-
- % ===================================================================
|