Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem
Revision 13:e138a91ed2cb, committed 2022-05-09
- Comitter:
- arthurjapan
- Date:
- Mon May 09 05:09:04 2022 +0000
- Parent:
- 10:b34306f7add6
- Commit message:
- recive_debug_rev3
Changed in this revision
ILF3_rev1.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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" , ',');