ILF / Mbed 2 deprecated mbed_ILF

Dependencies:   mbed SDFileSystem

Revision:
13:e138a91ed2cb
Parent:
10:b34306f7add6
--- a/ILF3_rev1.cpp	Wed Apr 27 06:29:56 2022 +0000
+++ b/ILF3_rev1.cpp	Mon May 09 05:09:04 2022 +0000
@@ -569,7 +569,7 @@
 char    ch_num ;//選択中の測定チャネル(0~3)
 int     cat;//検査カテゴリNo.
 float   fdata[4][4];//ファイル出力用
-char    seq_name[3];//CAL番号一時格納用配列
+char    seq_name[4] = {0,0,0,0};//CAL番号一時格納用配列
 
 
 //structure
@@ -626,6 +626,9 @@
 *******************************/
 void set_pullup()
 {
+    //シーケンサ受信割り込み
+    pc.attach(&seq_serialrecive,RawSerial::RxIrq);
+    
     /*** ver3 ***/
     sw_start.mode(PullUp);
     
@@ -640,30 +643,80 @@
 
 *******************************/
 void seq()
-{
+{ 
+    char cmd_gu[32] ;   //gu-DへのI2Cコマンド用配列 1byte
+    char crdata[6];
+    
     gu_cls();//clear screen
     gu_fontsize(2);
     gu_print1("Sequenser Mode");
+    gu_Button_power_on();//show button
 
     //seq_start.fall(&trigger);//スタート信号立下りで割込み
 
-    //シーケンサからシリアル受信割り込みイネーブル
-    pc.attach(seq_serialrecive,Serial::RxIrq);
     
     //シーケンサのトリガ以外は受け付けない
     while(1) {
         /*** ver3 ***/
-        //if( seq_start == 0 ) {
-        if ( seq_in[0] == 0 ){
+        if( sw_start == 0 ) {
+        //if ( seq_in[0] == 0 ){
             trigger();
         }
 
         wait(0.3);
 
+        crdata[0] = 0;
+        crdata[1] = 0;
+        crdata[2] = 0;
+
+        i2c.read ((addr_gu + 0x01), crdata, 3, true);
+
+        if ( crdata[0] == 0x11 && crdata[2] == 1 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
+
+            //cswnum = crdata[1]; //スイッチ番号
+            //cswdata = crdata[2];//ON/OFF情報
+
+            //gu-D タッチスイッチ読み出し動作設定 p49
+            cmd_gu[0]= 0x1F;
+            cmd_gu[1]= 0x4B;
+            cmd_gu[2]= 0x18;
+            cmd_gu[3]= 0x00;//SW状態変化時自動送信モード2解除
+            i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
+
+            if ( crdata[1] == 7 ) {
+
+                gu_Button_power_off();//電源ボタンイメージ反転表示
+                wait(0.5);
+
+                led_off();//LED全消灯
+
+                return;//この関数を抜ける
+
+            }   //end if
+
+            /* ver 1.1.1 タッチパネルで測定開始を削除
+            else {
+
+                meas_sub();//測定用サブ
+
+
+            } //else if
+            */
+
+            //gu-D タッチスイッチ読み出し動作設定 p49
+            cmd_gu[0]= 0x1F;
+            cmd_gu[1]= 0x4B;
+            cmd_gu[2]= 0x18;
+            cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2解除
+            i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
+
+            wait(0.1);
+
+            i2c.read ((addr_gu + 0x01), crdata, 3, true);
+
+        }//if
+
     }//while(1)
-    
-    //シーケンサからシリアル受信割り込みディスイネーブル
-    pc.attach(NULL,Serial::RxIrq);
 }
 
 
@@ -676,7 +729,6 @@
 {
     char    meas_num;//測定個数
     char    cal_num; //CAL選択ナンバー
-    int     sdata;//シリアル通信STX格納
     //char    cmd_gu[2];
 
     gu_cls();//clear screen
@@ -687,14 +739,6 @@
     gu_print1("start  ");
     gu_cursor(128,0);
     gu_print1("CAL.");
-
-    //シーケンサからSTX受信するまでループ
-    while(1){
-        sdata = pc.getc();
-        if(sdata == 0x02){
-            break;
-            }        
-        }
     
 
     //シーケンサからCAL選択bit読込と表示
@@ -737,8 +781,6 @@
     hantei( meas_num );
 
     wait(0.1);
-    
-    seq_serialsend( meas_num );   //自動モード中のシーケンサ通信
 
     //測定終了ver3
     //seq_busy = 0;//DegitalOut busy
@@ -1655,15 +1697,16 @@
     cmd_gu[2]= 0x18;
     cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
     i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
-
+ 
     while(1) {
+        
         //タッチスイッチ読み出し
         i2c.read ((addr_gu + 0x01), crdata, 3, true);
 
         if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
             *pcswnum = crdata[1]; //スイッチ番号
             *pcswdata = crdata[2];//ON/OFF情報
-
+            
             if (cswdata == 0x01) { //タッチしたならば
                 switch( cswnum ) { //SWの番号(位置)
 
@@ -2997,19 +3040,27 @@
     gu_cursor(0,2);
     gu_print1("Please Wait..");
     gu_fontsize(2);
-    
-    
+
     //STX受信待ち抜け割込みイネーブル
-    oneshot5.attach(seq_timeout, 5);
-    pc.attach(seq_serialrecive, RxIrq);
-    //シーケンサからSTX受信するまでループ
-    while(1){
-        if ( seq_name[3] == 'B' ){
+    oneshot5.attach(&seq_timeout, 10);
+
+    //シーケンサからEXT受信するまでループ
+    /*
+    while(seq_name[0] == 2){
+        if(seq_name[3] == 3){
             break;
-    }
+        }
+        wait(0.5);
     }//while
-    seq_name[0] = 0;//CAL名受渡後STX初期化
-    seq_name[3] = 0;//CAL名受渡後EXT初期化
+    */
+    
+    while(seq_name[0] == 50){
+        if(seq_name[3] == 51){
+            break;
+        }
+        wait(0.5);
+    }//while
+
     oneshot5.detach();
 
     read_regnum();//CAL登録No.読込
@@ -3023,6 +3074,10 @@
     seq_serialsend();//デバック用シーケンサ通信関数呼出
     
     
+    //STX,EXT初期化
+    seq_name[0] = 2;
+    seq_name[3] = 3;
+        
     wait(0.5);
 
     gu_fontsize(1);
@@ -5093,13 +5148,33 @@
 ****************************************/
 //一定時間CAL名未送信
 void seq_timeout(){
-    seq_name[0] = 'A';
-    seq_name[3] = 'B';
+/*
+    seq_name[0] = 2;
+    seq_name[3] = 3;
+*/    
+    seq_name[0] = 50;
+    seq_name[3] = 51;
 }
 
+
 //CAL名受信
 void seq_serialrecive(){
+    
     seq_name[0] = pc.getc();
+    seq_name[1] = pc.getc();
+    seq_name[2] = pc.getc();
+    seq_name[3] = pc.getc();
+    
+    //CAL番号だけ抽出
+    reg_num = (seq_name[1] - 0x30) * 10;
+    reg_num = reg_num + (seq_name[2] - 0x30);
+
+    //EEPROMへCAL番号を書き込み
+    wdata[0] = adrs_calnum[0]; //byte address a15~8
+    wdata[1] = adrs_calnum[1]; //byte address a7~a0
+    wdata[2] = reg_num;
+    Soushin = i2c.write (eeprom_adrs, wdata, 3); //send stop at end default value is false.
+
 }
 
 
@@ -5117,6 +5192,12 @@
         pc.printf("%c" , STX);
         pc.printf("%d" , CH[i]);
         pc.printf("%c" , ',');
+        pc.printf("%d" , seq_name[0]);
+        pc.printf("%c" , ',');
+        pc.printf("%d" , seq_name[3]);
+        pc.printf("%c" , ',');
+        pc.printf("%d" , reg_num);
+        pc.printf("%c" , ',');
         pc.printf("%s\n" , calinfo.name);
         pc.printf("%c" , ',');