kinuko hayashi / Mbed 2 deprecated Register_set_completed2

Dependencies:   mbed

Revision:
2:e97ec9bc9b77
Parent:
1:58b02b3d2cb0
Child:
3:be6612928d04
diff -r 58b02b3d2cb0 -r e97ec9bc9b77 main.cpp
--- a/main.cpp	Tue Feb 09 05:09:27 2021 +0000
+++ b/main.cpp	Tue Feb 09 06:20:46 2021 +0000
@@ -17,7 +17,7 @@
     int size;//累計の長さこれが32となったら1つのレジスタの設定が完了として次のレジスタの設定へ移る
     int register_num;//レジスタ番号
     int buf;
-    
+
     const char* filename;
     FILE *fp;
 
@@ -48,40 +48,50 @@
         }
 
         /* ファイルの終端まで文字を読み取り表示する */
+        int num[5] = {1,3,0,5,4};
         int l = 1;//行数
         uint32_t _register = 0;//最終的に欲しいレジスタの値.32ビット
         while ( fscanf(fp,"%[^,],%d,%d%d",name, &register_data,&length,&buf) != EOF ) {
-            if(l == 1 || l == 9 || l == 19 || l == 24 || l == 31){
-                printf("%d\n",l);
+            if(l == 1 || l == 14 || l == 21 || l == 26 || l == 36) {
+               // printf("%d\n",l);
                 l++;
-                 
-            }else{
-            printf("%d %d \r\n",register_data, length );
-            
-            //calsatから受け取った値を格納するとき
-            if(register_num == 3 && size == 4 ) {
-                Shift_bit(_register, binary(command), 4);
-                size = 27;
-            }
-            
-            //テキストファイルから受け取った値を格納するとき
-            Shift_bit(_register, register_data, size);
-            size += length;
-            if(size == 32) {
-                //これで一つ完成.この値をどういう風にやるかは未定show()みたいなのを作るか?
-                printf("regnum =%d  ",register_num);
-                show(_register);
-                register_num++;
-                _register = 0;
-                size = 0;
-                if(register_num == 5)
-                size = 6;
-                
-            }
-            //printf("%s %d %d\n",name,register_data,length);
-            //size += length; どこにおけばいいかわからん
-            l++;
-          }//else 閉じる
+
+            } else {
+                printf("%d %d \r\n",register_data, length );
+
+                //calsatから受け取った値を格納するとき
+                if(register_num == 3 && size == 4 ) {
+                    Shift_bit(_register, binary(command), 4);
+                    size = 27;
+                }
+
+                //テキストファイルから受け取った値を格納するとき
+                Shift_bit(_register, register_data, size);
+                size += length;
+                if(register_num == 1 && size == 26) {
+                    printf("reg_%d = ",num[register_num - 1]);
+                    show(_register);
+                    register_num++;
+                    _register = 0;
+                    size = 0;
+                }
+                if(size == 32) {
+                    //これで一つ完成.この値をどういう風にやるかは未定show()みたいなのを作るか?
+                    printf("reg_%d =   ",num[register_num - 1]);
+                    show(_register);
+                    register_num++;
+                    _register = 0;
+                    size = 0;
+                    /*
+                    if(register_num == 5)
+                    size = 6;
+                    */
+
+                }
+                //printf("%s %d %d\n",name,register_data,length);
+                //size += length; どこにおけばいいかわからん
+                l++;
+            }//else 閉じる
         }
         /* ファイルのクローズ */
         fclose(fp);
@@ -95,40 +105,8 @@
         double test = (n - (int)n);
         Fractional_N = test*32768;
 
-        //小数部分
-        for(int i=0; Fractional_N>0; i++) {
-            decbin[i] = Fractional_N % 2;
-            Fractional_N = Fractional_N / 2;
-        }
-        int l = 15;
-        //2進数の出力 
-        while( l>0 ) {
-            printf(" %d", decbin[--l]);
-        }
-        printf("\r\n");
-        
-        uint32_t dec = 0;
-        for(int i = 0; i < l; i++ ) {
-            dec |= (decbin[i] << i);
-        }
-        //整数部分
-        for(int i = 0; Integer_N > 0; i++) {
-            intbin[i] = Integer_N % 2;
-            Integer_N = Integer_N / 2;
-        }
-        int k = 8;
-        
-        while( k>0 ) {
-            printf(" %d", intbin[--k]);
-        }
-        printf("\r\n");
-        
-        uint32_t inte = 0;
-        for(int i = 0; i < k; i++ ) {
-            inte |= (intbin[i] << i);
-        }
-
-        return dec |= (inte << 15);//レジスタ入力に適した形にした23桁の2進数を返す
+        uint32_t data = Fractional_N;
+        return data |= (Integer_N << 15);//レジスタ入力に適した形にした23桁の2進数を返す
     }
     //データを取得し返す関数
     double doppler(char *a)
@@ -166,8 +144,9 @@
 {
     while(1) {
         char c = device.getc();
+        
         if(c == 0xfe) { //FEコマンドがきたらdataが始まる
-            
+
             char command[128] = {};
             while(1) {
                 command[0] = c;
@@ -184,9 +163,10 @@
                 //ここまでで一旦プリアンブルからポストアンブルまでをcommandに格納する
                 if(command[4] == 0x00 )
                     a.file_read(command);
-                    break;
+                break;
             }
         }
-    }
+        
+    } 
     return 0;
 }