ichinoseki_Bteam_2019 / Mycan

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

Revision:
5:4bdeff035517
Parent:
4:7aa2809ad177
Child:
6:9bf1c678d5a4
--- a/Mycan.cpp	Fri Aug 30 03:08:08 2019 +0000
+++ b/Mycan.cpp	Sat Aug 31 07:26:26 2019 +0000
@@ -80,3 +80,73 @@
     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;
+    }
+}           
+*/