Changeset 15 in flair-src for trunk/lib/FlairSensorActuator/src/SimuBldc.cpp
- Timestamp:
- Apr 8, 2016, 3:40:57 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairSensorActuator/src/SimuBldc.cpp
r3 r15 29 29 using namespace flair::gui; 30 30 31 namespace flair 32 { 33 namespace actuator 34 { 31 namespace flair { 32 namespace actuator { 35 33 36 SimuBldc::SimuBldc(const IODevice* parent,Layout* layout,string name,uint8_t motors_count,uint32_t dev_id) :Bldc(parent,layout,name,motors_count) 37 { 38 ostringstream dev_name; 39 dev_name << "simu_bldc_" << dev_id; 40 shmem=new SharedMem(this,dev_name.str().c_str(),motors_count*sizeof(float)); 34 SimuBldc::SimuBldc(const IODevice *parent, Layout *layout, string name, 35 uint8_t motors_count, uint32_t dev_id) 36 : Bldc(parent, layout, name, motors_count) { 37 ostringstream dev_name; 38 dev_name << "simu_bldc_" << dev_id; 39 shmem = 40 new SharedMem(this, dev_name.str().c_str(), motors_count * sizeof(float)); 41 41 42 GroupBox *groupbox=new GroupBox(layout->NewRow(),"simubldc");43 k=new DoubleSpinBox(groupbox->NewRow(),"k driver:",0,10000,1);42 GroupBox *groupbox = new GroupBox(layout->NewRow(), "simubldc"); 43 k = new DoubleSpinBox(groupbox->NewRow(), "k driver:", 0, 10000, 1); 44 44 } 45 45 46 SimuBldc::SimuBldc(const Object* parent,string name,uint8_t motors_count,uint32_t dev_id) :Bldc(parent,name,motors_count) { 47 ostringstream dev_name; 48 dev_name << "simu_bldc_" << dev_id; 49 shmem=new SharedMem(this,dev_name.str().c_str(),motors_count*sizeof(float)); 46 SimuBldc::SimuBldc(const Object *parent, string name, uint8_t motors_count, 47 uint32_t dev_id) 48 : Bldc(parent, name, motors_count) { 49 ostringstream dev_name; 50 dev_name << "simu_bldc_" << dev_id; 51 shmem = 52 new SharedMem(this, dev_name.str().c_str(), motors_count * sizeof(float)); 50 53 51 //reset values 52 float values[motors_count]; 53 for(int i=0;i<motors_count;i++) values[i]=0; 54 // reset values 55 float values[motors_count]; 56 for (int i = 0; i < motors_count; i++) 57 values[i] = 0; 54 58 55 shmem->Write((char*)&values,motors_count*sizeof(float));59 shmem->Write((char *)&values, motors_count * sizeof(float)); 56 60 } 57 61 58 SimuBldc::~SimuBldc() { 62 SimuBldc::~SimuBldc() {} 63 64 void SimuBldc::SetMotors(float *value) { 65 float values[MotorsCount()]; 66 67 for (int i = 0; i < MotorsCount(); i++) 68 values[i] = k->Value() * value[i]; 69 70 shmem->Write((char *)&values, MotorsCount() * sizeof(float)); 71 72 // on prend une fois pour toute le mutex et on fait des accès directs 73 output->GetMutex(); 74 for (int i = 0; i < MotorsCount(); i++) 75 output->SetValueNoMutex(i, 0, values[i]); 76 output->ReleaseMutex(); 59 77 } 60 78 61 void SimuBldc::SetMotors(float* value) { 62 float values[MotorsCount()]; 79 void SimuBldc::GetSpeeds(float *value) const { 80 float values[MotorsCount()]; 81 shmem->Read((char *)&values, MotorsCount() * sizeof(float)); 63 82 64 for(int i=0;i<MotorsCount();i++) values[i]=k->Value()*value[i]; 65 66 shmem->Write((char*)&values,MotorsCount()*sizeof(float)); 67 68 //on prend une fois pour toute le mutex et on fait des accès directs 69 output->GetMutex(); 70 for(int i=0;i<MotorsCount();i++) output->SetValueNoMutex(i,0,values[i]); 71 output->ReleaseMutex(); 72 } 73 74 void SimuBldc::GetSpeeds(float* value) const { 75 float values[MotorsCount()]; 76 shmem->Read((char*)&values,MotorsCount()*sizeof(float)); 77 78 for(int i=0;i<MotorsCount();i++) value[i]=values[i]; 83 for (int i = 0; i < MotorsCount(); i++) 84 value[i] = values[i]; 79 85 } 80 86
Note:
See TracChangeset
for help on using the changeset viewer.