![](/media/cache/profiles/4b0986230d9d7aded7f0c24033d221d4.jpg.50x50_q85.jpg)
Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.
CtrlBridge
- fonction quelquonque pour communiquer avec les module
- fonction quelquonque pour faire des recherche dans les module dispo
- autre fonction pour jouer avec MemRegistre
Version 1.2.0
- Ajout d'un mode de simulation pour tester le code avec seulement un contrôleur stm32
Diff: source/MemRegistre.cpp
- Revision:
- 9:7295385f02b2
- Parent:
- 7:dcfd81d7f93f
- Child:
- 10:7e6aeaebe1a2
--- a/source/MemRegistre.cpp Thu Mar 19 14:53:25 2015 +0000 +++ b/source/MemRegistre.cpp Thu Mar 19 19:14:31 2015 +0000 @@ -13,49 +13,73 @@ */ #include "MemRegistre.h" + + MemRegistre::MemRegistre() { - m_positionActioneur = 0; - m_positionCapteur = 0; - m_positionMemoire = 0; + m_positionActioneur = m_moduleActioneur.begin(); + m_positionCapteur = m_moduleCapteur.begin(); + m_positionMemoire = m_moduleMemoire.begin(); } MemRegistre::~MemRegistre() { } + +unsigned char MemRegistre::getAdressDispo() +{ + list<Module>::iterator it1; + unsigned char addrDispo=1; + + //Module templateModule; + for(bool addrFind=true; (addrDispo!=0)&&(!addrFind); addrDispo++) { + + for (list<Module>::iterator it=m_moduleActioneur.begin(); it != m_moduleActioneur.end(); ++it) + if(it->regA == addrDispo) addrFind = false; + + for (std::list<Module>::iterator it=m_moduleCapteur.begin(); it != m_moduleCapteur.end(); ++it) + if(it->regA == addrDispo) addrFind = false; + + for (std::list<Module>::iterator it=m_moduleMemoire.begin(); it != m_moduleMemoire.end(); ++it) + if(it->regA == addrDispo) addrFind = false; + + if((addrDispo==255) && (!addrFind))addrDispo=0; //les 255 adresses son utiliser // bravo le robot doit etre under heavy load. + } + return addrDispo; +} Module MemRegistre::firstActioneur(void) { - m_positionActioneur = 0; - return m_moduleActioneur[m_positionActioneur]; + m_positionActioneur =m_moduleActioneur.begin(); + return *m_positionActioneur;//m_moduleActioneur.begin(); } Module MemRegistre::nextActioneur(void) { - if(m_moduleActioneur.getSize()> m_positionActioneur) + if(m_moduleActioneur.end()!= m_positionActioneur) m_positionActioneur++; - return m_moduleActioneur[m_positionActioneur]; + return *m_positionActioneur;//return m_moduleActioneur[m_positionActioneur]; } Module MemRegistre::firstCapteur(void) { - m_positionCapteur = 0; - return m_moduleCapteur[m_positionCapteur]; + m_positionCapteur =m_moduleCapteur.begin(); + return *m_positionCapteur;//return m_moduleCapteur[m_positionCapteur]; } Module MemRegistre::nextCapteur(void) { - if(m_moduleCapteur.getSize()> m_positionCapteur) + if(m_moduleCapteur.end()!= m_positionCapteur) m_positionCapteur++; - return m_moduleCapteur[m_positionCapteur]; + return *m_positionCapteur;//return m_moduleActioneur[m_positionCapteur]; } Module MemRegistre::firstMemoire(void) { - m_positionMemoire = 0; - return m_moduleMemoire[m_positionMemoire]; + m_positionMemoire =m_moduleMemoire.begin(); + return *m_positionMemoire;//return m_moduleMemoire[m_positionMemoire]; } Module MemRegistre::nextMemoire(void) { - if(m_moduleMemoire.getSize()> m_positionMemoire) + if(m_moduleMemoire.end()!= m_positionMemoire) m_positionMemoire++; - return m_moduleMemoire[m_positionMemoire]; + return *m_positionMemoire;//return m_moduleActioneur[m_positionMemoire]; }