doppler shift / Mbed 2 deprecated Register_set_completed_1

Dependencies:   mbed

Revision:
1:515864d13410
Parent:
0:4f081a382f9b
Child:
2:0a0b5c62d10c
--- a/main.cpp	Wed Mar 17 06:00:41 2021 +0000
+++ b/main.cpp	Wed Mar 17 16:35:21 2021 +0000
@@ -21,7 +21,7 @@
     int register_num;//レジスタ番号
     int buf;
     char _command[128];
-    double human_doppler; //人から受け取る周波数の値
+    double human_freq; //人から受け取る周波数の値
     uint32_t _register;//最終的に欲しいレジスタの値.32ビット
     uint32_t register_data_array[16];//完成したレジスターを格納する配列sho
     const char* filename;
@@ -36,35 +36,35 @@
         register_num = 1;//レジスタ番号
         filename = "/local/register.tsv";
         _register = 0;
-        human_doppler = 0;
+        human_freq = 0;
     }
     //main関数内でコマンドが0x00の時にmainでbinary()を呼ぶと計算をしてuint_32型の値を返す
-    /*void Reg0_gen(int key,double doppler_data ){ //keyはコマンド
-        if(key == 1) {
-               Shift_bit(_register, binary(doppler_data), 4);
-               size = 27;
+    void Reg0_gen(int key,double calsat_freq,double human_freq ){ //keyはコマンド
+        if(key == '1') {
+               Shift_bit(_register, binary(calsat_freq), 4);
+               
            }
-         else if(key ==2){ //calsatから受けとる
-          Shift_bit(_register, binary(human_doppler), 4);//1の時calsat,2の時人
-          size = 27;
+         else if(key =='2'){ //calsatから受けとる
+          Shift_bit(_register, binary(human_freq), 4);//1の時calsat,2の時人
+          
          }
-          else if(key == 3 || key == 0) {
+          /*else if(key == '3' || key == '0') {
                uint32_t tmp = 0;
                tmp |= ( register_data_array[2] >> 27); //この行と次の行でレジスタのデータの部分を全て0にしている
                tmp |= (tmp << 27);
-               size = 27;
+               
                if(key == 3){
-               Shift_bit(tmp, binary(human_doppler), 4);//人間が入力した周波数の値を用いたレジスタを作成する
+               Shift_bit(tmp, binary(human_freq), 4);//人間が入力した周波数の値を用いたレジスタを作成する
                register_data_array[2] = tmp;//配列の中に格納する
                show_all();
-               }
-           }else {}
-    }*/
+               }*/
+           else {}
+    }
     void Shift_bit(uint32_t& Register, int Register_data, int Size)
     {
         Register |= (Register_data << Size);
     }
-    void file_read(char* command, char key)
+    void file_read(char key ,double calsat_freq)
     {
         /* ファイルのオープン */
         char name[100] = {};//出力はしない
@@ -83,16 +83,15 @@
             } else {
                 printf(" %d %d   %d \r\n",register_data, length,size);
                 if(l==23) {
-                     if(key == '1'){
-                    Shift_bit(_register, binary(doppler(command)), 4);
+                     /*if(key == '1')
+                    Shift_bit(_register, binary(calsat_freq), 4);
+                    if(key == '2')*/
+                        human_freq = register_data;
+                      // Shift_bit(_register, binary(register_data), 4);printf("ggg");
+                        
+                    Reg0_gen(key, calsat_freq, human_freq);
                     size = 27;
-                    }
-                     else if(key == '2'){
-                        human_doppler = register_data;
-                        size = 27;
-                       Shift_bit(_register, binary(register_data), 4);
-                        printf("ggg");
-                    }
+
                     /*    doppler_data = doppler(_command);
                       Reg0_gen(key,doppler_data);*/
                     //テキストファイルから受け取った値を格納するとき
@@ -135,7 +134,7 @@
     double doppler(char *a)
     {
         int data[10] = {0};
-        double doppler_data = 0;
+        double calsat_freq  = 0;
         int flag = 0;
         for(int i = 5; i < 10; i++) {
             char c = a[i];
@@ -143,9 +142,9 @@
             data[flag+1] = c & 0xf;
             flag += 2;
         }
-        doppler_data = 10 * data[0] + data[1] + kHz * data[2] + 100 * data[3] + 100*kHz * data[4] + 10*kHz * data[5] + 10*MHz * data[6] + MHz * data[7] + data[8] + 100*MHz * data[9];//Hz
-        printf("\n%lf\r\n",doppler_data / 1000000); //Mhz
-        return doppler_data / 1000000;
+        calsat_freq = 10 * data[0] + data[1] + kHz * data[2] + 100 * data[3] + 100*kHz * data[4] + 10*kHz * data[5] + 10*MHz * data[6] + MHz * data[7] + data[8] + 100*MHz * data[9];//Hz
+        printf("\n%lf\r\n",calsat_freq / 1000000); //Mhz
+        return calsat_freq / 1000000;
     }
     void show(uint32_t bin)
     {
@@ -179,12 +178,15 @@
             printf("\r\n");
         }
     }
-    void packet(char c)
+    double packet(char c)
     {
         static int a = 0;
+        double calsat_freq;
         _command[a] = c;
         a++;
         if(_command[a-1] == 0xfd) {
+          calsat_freq = doppler(_command);
+          Reg0_gen(1, calsat_freq, human_freq); //reg0をcalsatの値で更新
             /*
             for(int j = 0; j < a; j++)
                 printf("%02hhx",_command[j]);
@@ -192,13 +194,14 @@
             */
             a = 0;
         }
+        return calsat_freq;
     }
-    void check(char key)
+    void check(char key,double calsat_freq)
     {
         printf("%c",key);
         if(_command[4] == 0x00) {
             printf("---------------------------Start-----------------------------\r\n");
-            file_read(_command,key);
+            file_read(key,calsat_freq);
         }
     }
 };
@@ -209,10 +212,16 @@
         calsat32 tmp;
         while(device.readable()) {
             char c = device.getc();
-            tmp.packet(c);
+            double calsat_freq = tmp.packet(c);
             if(pc.readable()) {
                 char key = pc.getc();
-                tmp.check(key);
+                if(key == '1' ||key == '2'){
+                  tmp.check(key,calsat_freq);
+                  //file読み込み、calsator人の更新
+                }
+                  else if(key == '3')//reg0を人にする
+             
+                tmp.check(key,calsat_freq);
             }
         }
     }