ใช้สื่อสารกันระหว่าง Brain และ Motion

Dependencies:   Fork_Boss_Communication_Robot

Dependents:   Program_BEAR_Protocol SwitchMode MPU9250AHRS-PGear_Stabilizer SwitchMode ... more

Revision:
12:6296cb35f853
Parent:
11:b34eababcf56
Child:
13:45286c47ca0d
--- a/BEAR_Protocol.cpp	Fri Jan 22 10:21:37 2016 +0000
+++ b/BEAR_Protocol.cpp	Wed Jan 27 12:53:16 2016 +0000
@@ -40,8 +40,9 @@
     package.parameter[1]=save_data;
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -56,8 +57,9 @@
     package.parameter[1]=new_id;
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -85,8 +87,9 @@
     package.parameter[8]=FloatLowAngle[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -105,11 +108,12 @@
     package.parameter[0] = MOTOR_UPPER_ANG;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
 
     if(status == ANDANTE_ERRBIT_NONE) {
@@ -128,8 +132,13 @@
         int_buffer=(float)Utilities::ConvertUInt8ArrayToInt16(IntLowAngle);
         float_buffer=(float)Utilities::ConvertUInt8ArrayToInt16(FloatLowAngle)/FLOAT_CONVERTER;
         *low_angle=int_buffer+float_buffer;
-
     }
+#ifdef ANDANTE_DEBUG    
+    else
+    {
+        printf("get error [%d]\n\r",status);    
+    }
+#endif        
     return status;
 }
 
@@ -153,8 +162,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -178,8 +188,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -203,8 +214,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 
 }
 
@@ -230,8 +242,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 
 }
 
@@ -255,8 +268,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -279,8 +293,9 @@
 
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -300,11 +315,12 @@
     package.parameter[0]=PID_UPPER_MOTOR;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntKp[0]=package.parameter[0];
@@ -350,11 +366,12 @@
     package.parameter[0]=PID_LOWER_MOTOR;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntKp[0]=package.parameter[0];
@@ -407,8 +424,9 @@
     package.parameter[4]=FloatMargin[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -429,8 +447,9 @@
     package.parameter[4]=FloatMargin[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -448,11 +467,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntMargin[0]=package.parameter[0];
@@ -481,11 +501,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntMargin[0]=package.parameter[0];
@@ -518,8 +539,9 @@
     package.parameter[4]=FloatHeight[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -538,11 +560,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntHeight[0]=package.parameter[0];
@@ -575,8 +598,9 @@
     package.parameter[4]=FloatWheelPos[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -595,11 +619,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntWheelPos[0]=package.parameter[0];
@@ -660,8 +685,9 @@
     package.parameter[24]=FloatZmin[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 
 }
 
@@ -683,11 +709,12 @@
     package.parameter[0]=MAG_DATA;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntXmax[0]=package.parameter[0];
@@ -767,8 +794,9 @@
     package.parameter[8]=FloatOffset_Z[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -787,11 +815,12 @@
     package.parameter[0] = OFFSET;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
 
     if(status == ANDANTE_ERRBIT_NONE) {
@@ -834,8 +863,9 @@
     package.parameter[4]=FloatBodyWidth[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -854,11 +884,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntBodyWidth[0]=package.parameter[0];
@@ -896,8 +927,9 @@
     package.parameter[8]=FloatMinAngle[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -924,8 +956,9 @@
     package.parameter[8]=FloatMinAngle[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -945,11 +978,12 @@
     package.parameter[0] = ANGLE_RANGE_UP;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
 
     if(status == ANDANTE_ERRBIT_NONE) {
@@ -989,11 +1023,12 @@
     package.parameter[0] = ANGLE_RANGE_LOW;
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status = com->receiveCommunicatePacket(&package);
 
     if(status == ANDANTE_ERRBIT_NONE) {
@@ -1035,8 +1070,9 @@
     package.parameter[4]=FloatLength[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -1053,11 +1089,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntLength[0]=package.parameter[0];
@@ -1090,8 +1127,9 @@
     package.parameter[4]=FloatLength[1];
 
     rs485_dirc=1;
+    uint8_t status = com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    return com->sendCommunicatePacket(&package);
+    return status;
 }
 
 
@@ -1109,11 +1147,12 @@
 
 
     rs485_dirc=1;
+    //wait_us(RS485_DELAY);
+    com->sendCommunicatePacket(&package);
     wait_us(RS485_DELAY);
-    com->sendCommunicatePacket(&package);
 
     rs485_dirc=0;
-    wait_us(RS485_DELAY);
+    //wait_us(RS485_DELAY);
     uint8_t status=com->receiveCommunicatePacket(&package);
     if(status == ANDANTE_ERRBIT_NONE) {
         IntLength[0]=package.parameter[0];