// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2014/02/07 // filename: SimuBldc.cpp // // author: Guillaume Sanahuja // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: Class for a simulation bldc // // /*********************************************************************/ #include "SimuBldc.h" #include #include #include #include #include #include #include using std::string; using std::ostringstream; using namespace flair::core; using namespace flair::gui; namespace flair { namespace actuator { SimuBldc::SimuBldc(const IODevice* parent,Layout* layout,string name,uint8_t motors_count,uint32_t dev_id) :Bldc(parent,layout,name,motors_count) { ostringstream dev_name; dev_name << "simu_bldc_" << dev_id; shmem=new SharedMem(this,dev_name.str().c_str(),motors_count*sizeof(float)); GroupBox *groupbox=new GroupBox(layout->NewRow(),"simubldc"); k=new DoubleSpinBox(groupbox->NewRow(),"k driver:",0,10000,1); } SimuBldc::SimuBldc(const Object* parent,string name,uint8_t motors_count,uint32_t dev_id) :Bldc(parent,name,motors_count) { ostringstream dev_name; dev_name << "simu_bldc_" << dev_id; shmem=new SharedMem(this,dev_name.str().c_str(),motors_count*sizeof(float)); //reset values float values[motors_count]; for(int i=0;iWrite((char*)&values,motors_count*sizeof(float)); } SimuBldc::~SimuBldc() { } void SimuBldc::SetMotors(float* value) { float values[MotorsCount()]; for(int i=0;iValue()*value[i]; shmem->Write((char*)&values,MotorsCount()*sizeof(float)); //on prend une fois pour toute le mutex et on fait des accès directs output->GetMutex(); for(int i=0;iSetValueNoMutex(i,0,values[i]); output->ReleaseMutex(); } void SimuBldc::GetSpeeds(float* value) const { float values[MotorsCount()]; shmem->Read((char*)&values,MotorsCount()*sizeof(float)); for(int i=0;i