ichinoseki_Bteam_2019 / Mycan

Dependents:   2019_SwitchNode_AR ArmNode 2919_LineSensor 2019_MD ... more

Revision:
6:9bf1c678d5a4
Parent:
5:4bdeff035517
Child:
7:cac42b73a4f6
--- a/Mycan.cpp	Sat Aug 31 07:26:26 2019 +0000
+++ b/Mycan.cpp	Mon Sep 02 04:19:48 2019 +0000
@@ -18,16 +18,16 @@
     write_type = 0;
     td_id = _id;
     td_num = _num;
-    td_integer.value[td_num] = _data;
+    td_data.value[td_num] = _data;
     
-    td_integer.value[0] = 0;
-    for (int i = 1; i < 8; i++)
+    td_integer.value[7] = 0;
+    for (int i = 0; i < 7; i++)
     {
-        if (td_integer.value[i] >= 0)
-            td_integer.value[0] &= ~(1 << i);
+        if (td_data.value[i] >= 0)
+            td_integer.value[7] &= ~(1 << i);
         else
-            td_integer.value[0] |= (1 << i);
-        td_integer.value[i] = abs(td_integer.value[i]);
+            td_integer.value[7] |= (1 << i);
+        td_integer.value[i] = abs(td_data.value[i]);
     }
 }
 
@@ -52,11 +52,11 @@
     can.read(received);
     rd_integer = *(can_integer*)received.data;
     
-    for (int i = 1; i < 8; i++)
-        rd_storage.value[i] = rd_integer.value[i];
-    integer_values_storage[received.id] = rd_storage;
-    for (int i = 1; i < 8; i++) {
-        if (integer_values_storage[received.id].value[0] & (1 << i))
+    for (int i = 0; i < 7; i++)
+        integer_storage.value[i] = rd_integer.value[i];
+    integer_values_storage[received.id] = integer_storage;
+    for (int i = 0; i < 7; i++) {
+        if (integer_values_storage[received.id].value[7] & (1 << i))
             integer_values_storage[received.id].value[i] *= -1;
     }
 }
@@ -80,73 +80,3 @@
     else if (read_type) return decimal_values_storage[rd_id].value[rd_num];
 }
 
-/*
-#include "mbed.h"
-#include "Mycan.h"
- 
-Mycan::Mycan(PinName _pin_rd, PinName _pin_td) : can(_pin_rd, _pin_td)
-{
-    min_id = 1;//ここで最小IDを設定
-};
- 
-void Mycan::set(unsigned int _id, int _num, float _data)
-{
-    td_id = _id;
-    td_num = _num;
-    data = _data;
-    write_val[td_num] = data;
-    _expressAbsoluteValue();//絶対値にする関数
-}
- 
-bool Mycan::send()
-{
-    return can.write(CANMessage(td_id, (char*)&td_data, 8));
-}
- 
-void Mycan::read()
-{
-    CANMessage received;
-    can.read(received);
-    rd_data = *(read_can *)received.data;
-    _expressSignVal(received.id);//符号を付与する関数
-}
- 
-float Mycan::get(unsigned int _id, int _num)
-{
-    rd_id = _id;
-    rd_num = _num;
-    return read_val[rd_id - min_id][rd_num];
-}
-
-void Mycan::_expressAbsoluteValue()
-{
-    for (int i = 0; i < 2; i++) {
-        td_data.writeVal[i] = write_val[i];
-    }
-    
-    write_val[0] = 0;
-    for (int i = 1; i < 8; i++)
-    {
-        if (write_val[i] >= 0)
-            write_val[0] &= ~(1 << i);
-        else
-            write_val[0] |= (1 << i);
-    }
-    td_data.writeVal[0] = write_val[0];
-    for (int i = 1; i < 8; i++) {
-        td_data.writeVal[i] = abs(write_val[i]);
-    }
-}
- 
-void Mycan::_expressSignVal(unsigned int id)
-{
-    for(int i = 0; i < 2; i++) {
-        read_val[id - min_id][i] = rd_data.readVal[i];
-    }
-    for (int j = 1; j < 8; j++)
-    {
-        if (read_val[id - min_id][0] & (1 << j))
-            read_val[id - min_id][j] *= -1;
-    }
-}           
-*/