PITP2:
après quelques tests plus rien n'est inscrit sur la carte SD lorsque je retire le carte SD meme 2 secondes et même si je ne suis pas dans la phase d'ecriture. => reset obligatoire
je ne connais pas le protocole de gestion d'une carte SD en mode SPI mais je sais qu'il y a 2 modes de fonctionnement de l'interface SD :
- En SPI
- dans un autre mode pas possible pour l'Arduino mais utilisé plutôt parles PC et autres équipements plus performants
Il est possible que lors du SD.begin quelque chose soit fait afin de sire à la carte SD de passer la dans le mode SPI.
Quand tu retires la carte, tu la reset.
Malheureusement sur les shields SD ou Ethernet+SD le signal d'insertion/extraction de la carte SD (qui est pourtant souvent disponible sur le connecteur) n'est jamais cablé quelque part. Donc on ne peut pas savoir que la carte a été enlevée ou remise.
Dommage.
Si c'est important pour toi de pouvoir enlever la carte en fonctionnement, 2 solutions :
- Brutale : tu refait un SD.begin a chaque fois que tu veux accéder à la carte
- Tu prévoit un interrupteur que l'utilisateur doit changer pour demander à enlever la carte. Si ton soft détecte ce signal, il n'effectue pas les accès à la SD. Quand l'interrupteur revient en place, il refait un SD.begin. Eventuellement prévoir un retour vers l'utilisateur genre allumé une led verte quand tu as bien pris en compte la demande et que tout accès en cours est terminé.
l'envoie se fait bien vers cosm si l'on retire le cable reseau puis on le remet.
Par contre si la phase d'initialisation ne s'est pas bien passée (cable reseau debranché par exemple) l'arduino n'essaie plus d'etablir une nouvelle connexion ... surement parceque l'intialisation se passe dans la partie setup.Je vais essayer de tester dans la partie loop si la connexion existe et sinon relancer la procédure d'initialisation de la connexion ...
Peut être le même problème : refaire un Ethernet.begin() après une déconnexion ?
Malheureusement, je ne vois pas de moyen de tester l'état du cable (link status up/down).
La solution la plus simple semble de relier la pin qui pilote la LED LINK à une entrée de l'Arduino et de tester ce signal.
Attention a ne pas confondre la connexion du câble avec la connexion du EthernetClient.