Monitoring du Phytotron
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

serial.tex 2.0KB

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