Руслан Урядинский / MS9g_move_sin

Dependents:   CAN_Simple_Publisher CAN_Pub_actuator

Revision:
2:3eadad0761e9
Parent:
1:1ec6af6d0c6d
Child:
3:9839ae432c26
Child:
4:98c0904b5ec7
--- a/MS9g_move_sin.cpp	Wed May 02 12:19:26 2018 +0000
+++ b/MS9g_move_sin.cpp	Thu May 03 14:46:58 2018 +0000
@@ -1,25 +1,23 @@
 #include "MS9g_move_sin.h"
 //class Servo_9g
 Servo_9g::Servo_9g(){}
-
-Servo_9g::Servo_9g (PinName Pin):
-Servo(Pin)
-{
-    Servo.period_ms(20);
+Servo_9g::Servo_9g (PinName Pin){  
+    Servo = new PwmOut(Pin);
+    Servo->period_ms(20);
 }
 
 Servo_9g::~Servo_9g(){
-    
+    delete Servo;
 }
 //end of class Servo_9g
 
 //class Servo_9g_Move
-//Servo_9g_Move::Servo_9g_Move():Servo_9g(){}
-//Servo_9g_Move::Servo_9g_Move(PinName Pin):Servo_9g(Pin){}
+Servo_9g_Move::Servo_9g_Move():Servo_9g(){}
+Servo_9g_Move::Servo_9g_Move(PinName Pin):Servo_9g(Pin){}
 Servo_9g_Move::~Servo_9g_Move(){}
 
-void Servo_9g_Move::Move (float f){
-        Servo = f * val; // duty-cycle, perсents 0..1
+void Servo_9g_Move::Move (float a){
+        Servo_9g::Servo->write(a * val); // duty-cycle, perсents 0..1
 }
     
 void Servo_9g_Move::NextSin(){
@@ -39,31 +37,31 @@
 //end of class Servo_9g_Move
 
 //class Servo_9g_CAN
-Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td):Servo_9g_Move():
-can(rd, td)
+Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td) :
+    Servo_9g_Move(),
+    can(rd, td)
 {
-    func.id = 1;
-    func.len = 4;
+    
 }
-Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td, int hz):Servo_9g_Move():
-can(rd, td, hz)
+Servo_9g_CAN::Servo_9g_CAN(PinName rd, PinName td, int hz) :
+    Servo_9g_Move(),
+    can(rd, td, hz)
 {
-    func.id = 1;
-    func.len = 4;
+    
 }
     
-Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td):Servo_9g_Move(servo_pwm):
-can(rd, td)
+Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td) :
+    Servo_9g_Move(servo_pwm),
+    can(rd, td)
 {
-    func.id = 1;
-    func.len = 4;
+   CANMessage msg;
 }
 
-Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td, int hz):Servo_9g_Move(servo_pwm):
-can(rd, td, hz)
+Servo_9g_CAN::Servo_9g_CAN(PinName servo_pwm, PinName rd, PinName td, int hz) :
+    Servo_9g_Move(servo_pwm),
+    can(rd, td, hz)
 {
-    func.id = 1;
-    func.len = 4;
+    CANMessage msg;
 }
 
 Servo_9g_CAN::~Servo_9g_CAN(){
@@ -72,17 +70,22 @@
 
 void Servo_9g_CAN::SendNextSin(){
     NextSin();
-    func.data = &f; //возможно func.data = &(const char)f; или func.data = (const char*)&f;
-    can.write(func);
+    float send = static_cast<float>(f);
+    can.write(CANMessage(1, (char*)&send, sizeof(send)));
 }
 
-void Servo_9g_CAN::ReceiveServo(){
-    if(can.read(func)){
-        Move((float)func.data); //по идее функ- массив, значит имя-указатель
+bool Servo_9g_CAN::ReceiveServo(){
+    if(can.read(msg)){
+        float rec;
+        memcpy(&rec, msg.data, sizeof(rec));
+//        Move((float)*msg.data);
+        Move(rec);
+        return true;
     }
+    return false;
 }
-
 void Servo_9g_CAN::SendSin(){
     timer.attach(this, &Servo_9g_CAN::SendNextSin, val);
+    
 }
 //end of class Servo_9g_CAN
\ No newline at end of file