![](/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/ComSpi.cpp
- Revision:
- 12:bf44013497c8
- Parent:
- 11:496453b45e25
- Child:
- 13:51bbdc349f20
diff -r 496453b45e25 -r bf44013497c8 source/ComSpi.cpp --- a/source/ComSpi.cpp Fri Mar 20 01:03:17 2015 +0000 +++ b/source/ComSpi.cpp Fri Mar 20 14:25:23 2015 +0000 @@ -86,26 +86,30 @@ bool ComSpi::send(char portID, char adresseModule,string *flag,string *data) { bool result=false; - string formatedDataSend; string formatedDataReceive; //int valueReceive=0; //int CRC + debug(DEBUG_SEND, "\n\r -Debut du send. "); + debug(DEBUG_SEND, "\n\r -Debut set demux. "); - if(portID > (char)-1) { + if(portID > 0xFF) { //(char)-1) { m_demuxPos = portID; change_demux(); } debug(DEBUG_SEND, "\n\r -Fin set demux. "); + // Sync // debug(DEBUG_SEND, "\n\r -Debut Sync. "); formatedDataSend.append(1,SYNC); debug(DEBUG_SEND, "\n\r -Fin Sync. "); + // Address // debug(DEBUG_SEND, "\n\r -Debut Address. "); formatedDataSend.append(1,adresseModule); debug(DEBUG_SEND, "\n\r -Fin Address. "); + // PFB // debug(DEBUG_SEND, "\n\r -Debut PFB. "); switch(flag->size()) { @@ -126,40 +130,47 @@ break; } debug(DEBUG_SEND, "\n\r -Fin PFB. "); + // gestion ACK/NAK debug(DEBUG_SEND, "\n\r -Debut ACK/NAK. "); - formatedDataSend.at(formatedDataSend.length()) |= (NOACK << 4); + formatedDataSend.at(formatedDataSend.length()-1) |= (NOACK << 4); debug(DEBUG_SEND, "\n\r -Fin ACK/NAK. "); + // NDB // debug(DEBUG_SEND, "\n\r -Debut NDB. "); switch(data->size()) { case 1: - formatedDataSend.at(formatedDataSend.length()) |= 1; + formatedDataSend.at(formatedDataSend.length()-1) |= 1; break; case 2: - formatedDataSend.at(formatedDataSend.length()) |= 2; + formatedDataSend.at(formatedDataSend.length()-1) |= 2; break; case 3: - formatedDataSend.at(formatedDataSend.length()) |= 3; + formatedDataSend.at(formatedDataSend.length()-1) |= 3; break; default: - formatedDataSend.at(formatedDataSend.length()) |= 0; + formatedDataSend.at(formatedDataSend.length()-1) |= 0; break; } debug(DEBUG_SEND, "\n\r -Fin NDB. "); + // flag // debug(DEBUG_SEND, "\n\r -Debut flag. "); - if(flag->size() != 0) + if(flag->size() != 0) { formatedDataSend.append(*flag); + } debug(DEBUG_SEND, "\n\r -Fin flag. "); + // data // debug(DEBUG_SEND, "\n\r -Debut data. "); - if(data->size() != 0) + if(data->size() != 0) { formatedDataSend.append(*flag); + } debug(DEBUG_SEND, "\n\r -Fin data. "); + // CRC // //Create CRC //Send CRC @@ -168,27 +179,46 @@ int tempValue=0; //Send Data debug(DEBUG_SEND, "\n\r -Debut Send Data. "); + debug(DEBUG_SEND, "\n\r -Send: "); + for (unsigned i=0; i<formatedDataSend.length(); ++i) { + debug(DEBUG_SEND, "%i,",formatedDataSend.at(i)); + } + tempValue = (formatedDataSend[0]<<8)+formatedDataSend[1]; tempValue=write(tempValue); - if(tempValue == (formatedDataSend[0]<<8)+formatedDataSend[1]) { + + debug(DEBUG_SEND, "\n\r -Fin Send Data. "); + + // Envoie si liker // + debug(DEBUG_SEND, "\n\r -Debut Traitement de l'information. "); + debug(DEBUG_SEND, "\n\r -Receive: "); + if(tempValue == (formatedDataSend[0]<<8)+formatedDataSend[1]) {// tempValue ==(Sync+(PFB+ACK+NDB)) formatedDataReceive.append(1,formatedDataSend[0]); formatedDataReceive.append(1,formatedDataSend[1]); for (unsigned i=2; i<formatedDataSend.length(); ++i) { tempValue = formatedDataSend[i]; i++; - if(i<formatedDataSend.length()) + if(i<formatedDataSend.length()) { tempValue = (tempValue<<8) + formatedDataSend[i]; - + } tempValue=write(tempValue); formatedDataReceive.append(1,tempValue>>8); formatedDataReceive.append(1,tempValue&0xFF); } - debug(DEBUG_SEND, "\n\r -Fin Send Data. "); + + + // Traitement de l'information // - debug(DEBUG_SEND, "\n\r -Debut Traitement de l'information. "); + //debug(DEBUG_SEND, "\n\r -Debut Traitement de l'information. "); + //debug(DEBUG_SEND, "\n\r -Send: "); + for (unsigned i=0; i<formatedDataReceive.length(); ++i) { + debug(DEBUG_SEND, "%i,",formatedDataReceive.at(i)); + } + tempValue=formatedDataReceive[2]; string::iterator it=formatedDataReceive.begin()+3; + // flag // flag->clear(); switch(tempValue>>6) { @@ -217,6 +247,7 @@ formatedDataSend.append(1,0<<6); break;*/ } + // ACK/NAK // @@ -248,11 +279,14 @@ break;*/ } + // CRC // // - debug(DEBUG_SEND, "\n\r -Fin Traitement de l'information. "); + result=true; } + + debug(DEBUG_SEND, "\n\r -Fin Traitement de l'information. "); debug(DEBUG_SEND, "\n\r -Fin du send. "); return result; } \ No newline at end of file