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: TextLCD mbed xbee
main.cpp
00001 #define ARM_MBED 00002 //#define DEBUG // D8(PA_9)からログをUART(38400baud)出力します 00003 00004 /********************************************************************* 00005 XBee ライブラリ・自動システム試験ツール 00006 00007 元々、XBeeライブラリ「ZB Coord API」のリリース用のテストツールとして 00008 作成して、使用していたものです。 00009 XBeeライブラリを用いた時の評価用に公開することにいたしました。 00010 電波環境が悪いと100%になりません。 00011 Arduino用PC用ともにキーを押すとエラー数と合格回数、テスト回数、最後の 00012 エラーの内容を表示します。 00013 00014 本ソースリストおよびソフトウェアは、ライセンスフリーです。 00015 利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。 00016 00017 Copyright (c) 2010-2014 Wataru KUNINO 00018 http://www.geocities.jp/bokunimowakaru/ 00019 *********************************************************************/ 00020 00021 /********************************************************************* 00022 00023 ●試験項目● 00024 ①ローカルATコマンド試験 00025 ②ローカルxbeeライブラリ用コマンド試験 00026 ③リモートATコマンド試験 00027 ④リモートxbeeライブラリ管理コマンド試験 00028 ⑤リモートxbeeライブラリ応答待ちコマンド試験 00029 ⑥ループバック試験 00030 00031 ●試験環境● 00032 ○本ソフトを動かす親機用ArduinoまたはPC 00033 ○親機用XBee ZBモジュール【ファーム=ZIGBEE COORDINATOR API】 00034 ○子機用XBee ZBモジュール【ファーム=ZIGBEE ROUTER AT】 00035 ○子機のUARTはループバック接続が必要です。(DINとDOUTを接続) 00036 */ 00037 00038 // #define DEBUG //DEBUGをdefineするとライブラリの動作ログが出力されます。 00039 // #define DEBUG_TX //送信データ表示 00040 // #define ERRLOG 00041 #define EASY_SENSOR 00042 #define XBEE_ERROR_TIME 00043 #define PASSED 0 00044 #define FAILED 1 00045 #ifdef ARDUINO 00046 #define SIZEOF_LOG_S 36 // 33以上 00047 #else 00048 #ifdef ARM_MBED 00049 #define SIZEOF_LOG_S 80 00050 #else // PC 00051 #define SIZEOF_LOG_S 80 00052 #endif 00053 #endif 00054 00055 #ifdef ARDUINO 00056 #include <xbee.h> 00057 #include <Wire.h> 00058 #include <Adafruit_MCP23017.h> 00059 #include <Adafruit_RGBLCDShield.h> 00060 Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); 00061 #else 00062 #ifdef ARM_MBED 00063 #include <xbee.h> 00064 #include "TextLCD.h" 00065 #include <ctype.h> 00066 TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7 00067 DigitalIn mybutton(USER_BUTTON); 00068 #else // PC 00069 #include "../libs/xbee.c" 00070 #include <ctype.h> // isgraph 00071 #include "../libs/kbhit.c" 00072 #endif 00073 #endif 00074 00075 byte dev[8]; 00076 byte my[8]; 00077 byte myt[8]; 00078 byte panid[8]; 00079 byte panidt[8]; 00080 byte TEST_COUNT=0; 00081 byte ERROR_COUNT=0; 00082 byte ERROR_TOTAL=0; 00083 char ERROR_S[SIZEOF_LOG_S]; 00084 unsigned int pan; 00085 byte nc,rnc=0xFF,dd=0xFF; 00086 00087 static const char UARTDATA[] = "0123456789ABCDEF"; 00088 char *sprint_FAIL(char *s,const char *text){ 00089 sprintf(s,"%s:FAIL####",text); 00090 return s; 00091 } 00092 00093 void aging_delay(unsigned int ms){ 00094 #ifdef ARDUINO 00095 delay((unsigned long)ms); 00096 #else 00097 #ifdef ARM_MBED 00098 wait((double)ms/1000.); 00099 #else // PC 00100 wait_millisec(ms); 00101 #endif 00102 #endif 00103 } 00104 00105 #if defined(ARDUINO) 00106 void prints(char *s){ 00107 byte x,y; 00108 byte c=1; 00109 for(y=0;y<2;y++){ 00110 lcd.setCursor(0, y); 00111 for(x=0;x<16;x++){ 00112 if(s[16*y+x]=='\0') c=0; 00113 if(isgraph(s[16*y+x]) && c) lcd.print(s[16*y+x]); 00114 else lcd.print(' '); 00115 } 00116 } 00117 } 00118 #endif 00119 #if defined(ARM_MBED) 00120 void prints(char *s){ 00121 byte x,y; 00122 byte c=1; 00123 for(y=0;y<2;y++){ 00124 lcd.locate(0, y); 00125 for(x=0;x<16;x++){ 00126 if(s[16*y+x]=='\0') c=0; 00127 if(isgraph(s[16*y+x]) && c) lcd.printf("%c",s[16*y+x]); 00128 else lcd.printf(" "); 00129 } 00130 } 00131 } 00132 #endif 00133 00134 void aging_key(void){ 00135 #ifdef ARDUINO 00136 if( lcd.readButtons() ){ 00137 lcd.clear(); 00138 lcd.print(ERROR_COUNT,DEC); // 3 00139 lcd.print("errs "); // 5 00140 lcd.print((TEST_COUNT-ERROR_TOTAL),DEC); // 3 00141 lcd.print('/'); // 1 00142 lcd.print(TEST_COUNT,DEC); // 3 00143 lcd.setCursor(0, 1); 00144 if(ERROR_COUNT || ERROR_TOTAL){ 00145 lcd.print(ERROR_S); 00146 } 00147 delay(100); 00148 while( lcd.readButtons() ); 00149 delay(100); 00150 while( !lcd.readButtons() ); 00151 prints(ERROR_S); 00152 delay(3000); 00153 while( lcd.readButtons() ); 00154 } 00155 #else 00156 #ifdef ARM_MBED 00157 if( mybutton==0 ){ // Button is pressed 00158 lcd.cls(); 00159 lcd.printf("%d",ERROR_COUNT); // 3 00160 lcd.printf("errs "); // 5 00161 lcd.printf("%d",TEST_COUNT-ERROR_TOTAL); // 3 00162 lcd.printf("/"); // 1 00163 lcd.printf("%d",TEST_COUNT); // 3 00164 lcd.locate(0, 1); 00165 if(ERROR_COUNT || ERROR_TOTAL){ 00166 lcd.printf(ERROR_S); 00167 } 00168 aging_delay(100); 00169 while( !mybutton ); 00170 aging_delay(100); 00171 while( mybutton ); 00172 prints(ERROR_S); 00173 aging_delay(3000); 00174 while( !mybutton ); 00175 } 00176 #else // PC 00177 if( kbhit() ){ 00178 getchar(); 00179 printf("----------------------------------------------------------------\n"); 00180 printf("ERROR=%d(TEST:%d/%d) ",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT); 00181 if(ERROR_COUNT || ERROR_TOTAL){ 00182 printf("%s",ERROR_S); 00183 } 00184 printf("\n----------------------------------------------------------------\n"); 00185 aging_delay(3000); 00186 } 00187 #endif 00188 #endif 00189 } 00190 00191 void aging_log(char *s){ 00192 #if defined(ARDUINO) || defined(ARM_MBED) 00193 prints(s); 00194 #else // PC 00195 time_t error_time; 00196 struct tm *error_time_st; 00197 00198 time(&error_time); 00199 error_time_st = localtime(&error_time); 00200 printf("%4d/%02d/%02d %02d:%02d:%02d %s\n", 00201 error_time_st->tm_year+1900, 00202 error_time_st->tm_mon+1, 00203 error_time_st->tm_mday, 00204 error_time_st->tm_hour, 00205 error_time_st->tm_min, 00206 error_time_st->tm_sec, 00207 s 00208 ); 00209 #endif 00210 aging_key(); 00211 } 00212 00213 void error_log(char *s){ 00214 #ifndef ARDUINO 00215 #ifndef ARM_MBED // PC 00216 FILE *fp; 00217 time_t error_time; 00218 struct tm *error_time_st; 00219 00220 time(&error_time); 00221 error_time_st = localtime(&error_time); 00222 if( (fp=fopen("err.log","a")) != NULL ){ 00223 fprintf(fp,"%4d/%02d/%02d %02d:%02d:%02d %s\n", 00224 error_time_st->tm_year+1900, 00225 error_time_st->tm_mon+1, 00226 error_time_st->tm_mday, 00227 error_time_st->tm_hour, 00228 error_time_st->tm_min, 00229 error_time_st->tm_sec, 00230 s 00231 ); 00232 fclose(fp); 00233 } 00234 #endif 00235 #endif 00236 aging_log(s); 00237 strcpy(ERROR_S,s); 00238 ERROR_COUNT++; 00239 aging_delay(1000); 00240 aging_key(); 00241 } 00242 00243 void aging_results(void){ 00244 char s[SIZEOF_LOG_S]; 00245 TEST_COUNT++; 00246 if(ERROR_COUNT==0){ 00247 // 012345678901234567890123456 28~30bytes 00248 sprintf(s,"###TEST:PASSED (%d/%d)####",TEST_COUNT-ERROR_TOTAL,TEST_COUNT); 00249 aging_log(s); 00250 }else{ 00251 ERROR_TOTAL++; 00252 // 01234567890123456789012345678 30~33bytes 00253 sprintf(s,"###TEST:FAILED %d(%d/%d)####",ERROR_COUNT,TEST_COUNT-ERROR_TOTAL,TEST_COUNT); 00254 aging_log(s); 00255 #ifndef ARDUINO 00256 #ifndef ARM_MBED // PC 00257 strcpy(s,ERROR_S); 00258 aging_log(s); 00259 #endif 00260 #endif 00261 ERROR_COUNT=0; 00262 } 00263 aging_delay(3000); 00264 } 00265 00266 void aging_print(char *text,byte ret,byte target,byte judge){ 00267 char s[SIZEOF_LOG_S]; 00268 if( (judge==PASSED && target == ret) || 00269 (judge==FAILED && target != ret) 00270 ){ 00271 sprintf(s,"%s:PASS(%02X)",text,ret); 00272 aging_log(s); 00273 }else{ 00274 // 0-789012345678901--234-- 26bytes 00275 sprintf(s,"%sret=%02X:%02X",sprint_FAIL(s,text),ret,target); 00276 error_log(s); 00277 } 00278 } 00279 00280 void aging_rx_resp(char *text,char *at,byte n){ 00281 XBEE_RESULT xbee_result; 00282 byte data; 00283 byte i,j; 00284 char s[SIZEOF_LOG_S]; 00285 for(i=0;i<n;i++){ 00286 data=xbee_rx_call( &xbee_result ); 00287 if( ( xbee_result.MODE==MODE_RESP && 00288 xbee_result.STATUS == STATUS_OK && 00289 xbee_result.AT[0] == 'I' && 00290 xbee_result.AT[1] == 'S' && 00291 bytecmp(dev,xbee_result.FROM,8)==0 00292 ) 00293 // || ( 00294 // xbee_result.MODE==MODE_GPIN && 00295 // bytecmp(dev,xbee_result.FROM,8)==0 00296 // ) 00297 ){ 00298 sprintf(s,"%s:PASS(%02X)",text,data); 00299 for(j=0;j<8;j++){ 00300 if( (data>>(7-j))&0x01 ) s[16+j]='1'; 00301 else s[16+j]='0'; 00302 } 00303 s[24]='\0'; 00304 aging_log(s); 00305 return; 00306 } 00307 } 00308 error_log(sprint_FAIL(s,text)); 00309 } 00310 00311 void aging_rx_uart(char *text,const char *uart,byte n){ 00312 XBEE_RESULT xbee_result; 00313 byte i,j; 00314 byte len; 00315 char s[SIZEOF_LOG_S]; 00316 byte data[SIZEOF_LOG_S]; 00317 00318 for(i=0;i<n;i++){ 00319 len=xbee_rx_call( &xbee_result ); 00320 if( xbee_result.MODE==MODE_UART && 00321 bytecmp(dev,xbee_result.FROM,8)==0 00322 ){ 00323 for(j=0;j<SIZEOF_LOG_S;j++) data[j]=(byte)uart[j]; 00324 if(len>SIZEOF_LOG_S) len=SIZEOF_LOG_S; 00325 if(bytecmp(data,xbee_result.DATA,len)==0){ 00326 sprintf(s,"%s:PASS(%02d) ",text,len); 00327 for(j=16;j<32;j++){ 00328 if(isgraph(xbee_result.DATA[j-16])){ 00329 s[j]=(char)xbee_result.DATA[j-16]; 00330 }else s[j]=' '; 00331 } 00332 s[32]='\0'; 00333 aging_log(s); 00334 if(len!=strlen(uart)){ 00335 sprintf(s,"%s:WARNING txLen=%d,rx=%d",text,strlen(uart),len); 00336 aging_log(s); 00337 } 00338 return; 00339 }else{ 00340 sprintf(s,"%s:FAIL(%02d)################",text,len); 00341 for(j=16;j<24;j++){ 00342 if(xbee_result.DATA[j-16]>16){ 00343 s[j]=(char)xbee_result.DATA[j-16]; 00344 }else s[j]=' '; 00345 } 00346 error_log(s); 00347 return; 00348 } 00349 } 00350 } 00351 error_log(sprint_FAIL(s,text)); 00352 } 00353 00354 byte s2bytes(byte *bytes,const char *s){ 00355 byte i; 00356 for(i=0;i<strlen(s);i++) bytes[i]=s[i]; 00357 return(i); 00358 } 00359 00360 void aging_rx_batt(char *text,byte n){ 00361 XBEE_RESULT xbee_result; 00362 byte i; 00363 char s[SIZEOF_LOG_S]; 00364 for(i=0;i<n;i++){ 00365 xbee_rx_call( &xbee_result ); 00366 if( xbee_result.MODE==MODE_BATT && 00367 xbee_result.STATUS == STATUS_OK && 00368 bytecmp(dev,xbee_result.FROM,8)==0 && 00369 xbee_result.ADCIN[0] > 1000 00370 ){ 00371 sprintf(s,"%s:PASS(00)%d[mV]",text,xbee_result.ADCIN[0]); 00372 aging_log(s); 00373 return; 00374 } 00375 } 00376 error_log(sprint_FAIL(s,text)); 00377 } 00378 00379 char byte2a(byte in, byte i){ 00380 char ret; 00381 if(i) in /= 16; 00382 ret = (char)(in%16); 00383 if(ret<10) ret += '0'; 00384 else ret += 'A' -10; 00385 return( ret ); 00386 } 00387 00388 byte pairing(byte *dev,byte n){ 00389 XBEE_RESULT xbee_result; 00390 char s[SIZEOF_LOG_S]; 00391 00392 byte i,len; 00393 for(i=0;i<n;i++){ 00394 xbee_rx_call( &xbee_result ); 00395 if( xbee_result.MODE==MODE_IDNT ){ 00396 sprintf(s,"Pairing:PASS(%02X)",xbee_result.STATUS); 00397 len=strlen(s); 00398 for(i=0;i<8;i++){ 00399 dev[i]=xbee_result.FROM[i]; 00400 s[len] =byte2a(dev[i],1); 00401 s[len+1]=byte2a(dev[i],0); 00402 len+=2; 00403 } 00404 s[len]='\0'; 00405 aging_log(s); 00406 return(1); 00407 } 00408 } 00409 return(0); 00410 } 00411 00412 void aging_rx_none(char *text,byte n){ 00413 XBEE_RESULT xbee_result; 00414 byte i; 00415 char s[SIZEOF_LOG_S]; 00416 for(i=0;i<n;i++){ 00417 xbee_rx_call( &xbee_result ); 00418 if( xbee_result.MODE != 0x00 ){ 00419 sprintf(s,"%smode=%02X stat=%02X",sprint_FAIL(s,text),xbee_result.MODE,xbee_result.STATUS); 00420 error_log(s); 00421 return; 00422 } 00423 } 00424 sprintf(s,"%s:PASS",text); 00425 aging_log(s); 00426 } 00427 00428 void aging_init(void){ 00429 char s[SIZEOF_LOG_S]; 00430 byte i; 00431 00432 xbee_atnj(0xFF); 00433 aging_delay(1000); 00434 aging_log("Press Commiss.SW"); 00435 /* ペアリング&宛先アドレス取得 */ 00436 while(pairing(dev,100)==0); 00437 sprintf(s,"DestAdr:"); 00438 for(i=0;i<4;i++){ 00439 s[8+2*i]=byte2a(dev[i+4],1); 00440 s[9+2*i]=byte2a(dev[i+4],0); 00441 } 00442 s[16]='\0'; 00443 aging_log(s); 00444 xbee_atnj(0); 00445 aging_delay(1000); 00446 /* 自分のアドレス */ 00447 xbee_myaddress(my); 00448 sprintf(s,"MyAdr :"); 00449 for(i=0;i<4;i++){ 00450 s[8+2*i]=byte2a(my[i+4],1); 00451 s[9+2*i]=byte2a(my[i+4],0); 00452 } 00453 s[16]='\0'; 00454 aging_log(s); 00455 aging_delay(1000); 00456 /* PAN ID */ 00457 pan=xbee_atop(panid); 00458 sprintf(s,"PAN ID :%d ",pan); 00459 for(i=0;i<8;i++){ 00460 s[16+2*i]=byte2a(panid[i],1); 00461 s[17+2*i]=byte2a(panid[i],0); 00462 } 00463 s[32]='\0'; 00464 aging_log(s); 00465 aging_delay(1000); 00466 /* 子機数など */ 00467 nc=xbee_atnc(); 00468 while(rnc==0xFF){ 00469 rnc=xbee_ratnc(dev); 00470 } 00471 while(dd==0xFF){ 00472 dd=xbee_ping(dev); 00473 } 00474 sprintf(s,"nOfChld:%d,%d,%02X",10-nc,12-rnc,dd); 00475 aging_log(s); 00476 aging_delay(1000); 00477 } 00478 00479 void loop(){ 00480 byte data[SIZEOF_LOG_S]; 00481 byte i,len; 00482 00483 aging_log("Started:========"); 00484 00485 // ①ローカルATコマンド試験 00486 #ifndef ARDUINO 00487 #ifndef ARM_MBED // PCのみ試験 00488 for(i=0;i<10;i++){ 00489 aging_print("LocAt L",xbee_at("ATP004"),STATUS_OK,PASSED); 00490 aging_print("LocAt H",xbee_at("ATP005"),STATUS_OK,PASSED); 00491 } 00492 #endif 00493 #endif 00494 aging_print("LocAt -",xbee_at("ATP001"),STATUS_OK,PASSED); 00495 00496 // ②ローカルxbeeライブラリ用コマンド試験 00497 // aging_print("reset ",xbee_reset(),0,FAILED); 00498 aging_print("atcb ",xbee_atcb(1),0,PASSED); 00499 for(i=0;i<3;i++){ 00500 aging_print("myAdr ",xbee_myaddress(myt),0,FAILED); 00501 aging_print("myAdCmp",bytecmp(my,myt,8),0,PASSED); 00502 aging_print("atvr ",xbee_atvr(),ZB_TYPE_COORD,PASSED); 00503 aging_print("atai ",xbee_atai(),0,PASSED); 00504 aging_print("atop ",(byte)xbee_atop(panidt),(byte)pan,PASSED); 00505 aging_print("atopCmp",bytecmp(panid,panidt,8),0,PASSED); 00506 aging_print("atnc ",xbee_atnc(),nc,PASSED); // ncと一致すること 00507 } 00508 00509 // ③リモートATコマンド試験 00510 #ifndef ARDUINO 00511 #ifndef ARM_MBED // PCのみ試験 00512 for(i=0;i<10;i++){ 00513 aging_print("RemAt L",xbee_rat(dev,"ATP104"),STATUS_OK,PASSED); // 0xFF=ERROR 00514 aging_print("RemAt H",xbee_rat(dev,"ATP105"),STATUS_OK,PASSED); // 0xFF=ERROR 00515 } 00516 #endif 00517 #endif 00518 aging_print("LocAt -",xbee_at("ATP100"),STATUS_OK,PASSED); 00519 00520 // ④リモートxbeeライブラリ管理コマンド試験 00521 aging_print("ratd ",xbee_ratd(dev, my),0xFF,FAILED); // 0xFF=ERROR 00522 aging_print("ratdMyA",xbee_ratd_myaddress(dev),0xFF,FAILED); // 0xFF=ERROR 00523 aging_print("ratnc ",xbee_ratnc(dev),rnc,PASSED); // rncと一致すること 00524 aging_print("ping ",xbee_ping(dev),dd,PASSED); // ddと一致すること 00525 aging_print("batt ",(byte)(xbee_batt(dev)<0),0,PASSED); 00526 aging_print("gpioIni",xbee_gpio_init(dev),dd,PASSED); // ddと一致すること 00527 #if defined(ARDUINO) || defined(ARM_MBED) 00528 aging_print("gpi 1 ",xbee_gpi(dev,1),0xFF,FAILED); 00529 aging_print("adc 1 ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED); 00530 #else // PCのみ試験 00531 for(i=0;i<3;i++){ 00532 aging_print("gpi 1 ",xbee_gpi(dev,1),0xFF,FAILED); 00533 aging_print("gpi 2 ",xbee_gpi(dev,2),0xFF,FAILED); 00534 aging_print("gpi 3 ",xbee_gpi(dev,3),0xFF,FAILED); 00535 } 00536 for(i=0;i<3;i++){ 00537 aging_print("adc 1 ",(byte)(xbee_adc(dev,1)==0xFFFF),0,PASSED); 00538 aging_print("adc 2 ",(byte)(xbee_adc(dev,2)==0xFFFF),0,PASSED); 00539 aging_print("adc 3 ",(byte)(xbee_adc(dev,3)==0xFFFF),0,PASSED); 00540 } 00541 for(i=0;i<3;i++){ 00542 aging_print("sensorL",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); 00543 aging_print("sensorT",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); 00544 aging_print("sensorH",(byte)(xbee_sensor(dev,LIGHT)<0),0,PASSED); 00545 } 00546 #endif 00547 00548 // ⑤リモートxbeeライブラリ応答待ちコマンド試験 00549 for(i=0;i<3;i++){ 00550 aging_print("force ",xbee_force(dev),0x00,FAILED); 00551 aging_rx_resp("rxResp ","IS",200); // STATUS_OKのIS応答を200受信分、待つ 00552 aging_print("batForc",xbee_batt_force(dev),0x00,FAILED); 00553 aging_rx_batt("rxBatt ",200); 00554 // aging_print("ratForc",xbee_rat_force(dev,"ATIS"),0x00,FAILED); 00555 // aging_rx_resp("rxResp ","IS",200); // STATUS_OKのIS応答を200受信分、待つ 00556 } 00557 for(i=0;i<5;i++){ 00558 aging_print("gpo11,0",xbee_gpo(dev,11,0),0,FAILED); 00559 aging_rx_none("rxNo110",10); 00560 aging_print("gpo11,1",xbee_gpo(dev,11,1),0,FAILED); 00561 aging_rx_none("rxNo111",10); 00562 #ifndef ARDUINO 00563 #ifndef ARM_MBED // PCのみ試験 00564 aging_print("gpo12,0",xbee_gpo(dev,12,0),0,FAILED); 00565 aging_rx_none("rxNo120",10); 00566 aging_print("gpo12,1",xbee_gpo(dev,12,1),0,FAILED); 00567 aging_rx_none("rxNo121",10); 00568 #endif 00569 #endif 00570 } 00571 aging_rx_none("rxNone ",100); 00572 00573 // ⑥ループバック試験 00574 for(i=0;i<3;i++){ 00575 aging_print("uartTx ",xbee_uart(dev,UARTDATA),0,FAILED); 00576 aging_rx_uart("rxUart ",UARTDATA,200); // UART応答を200受信分、待つ 00577 len=s2bytes(data,UARTDATA); 00578 aging_print("byteTx ",xbee_bytes(dev,data,len),0,FAILED); 00579 aging_rx_uart("rxByte ",UARTDATA,200); // UART応答を200受信分、待つ 00580 } 00581 00582 // 試験結果 00583 aging_results(); 00584 } 00585 00586 #ifdef ARDUINO 00587 void setup(){ 00588 byte i; 00589 00590 lcd.begin(16, 2); 00591 lcd.clear(); 00592 lcd.print("XBee Aging"); 00593 lcd.setCursor(0, 1); 00594 lcd.print(COPYRIGHT); 00595 xbee_init(0); 00596 aging_init(); 00597 for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0'; 00598 } 00599 #endif 00600 00601 #ifndef ARDUINO 00602 #ifdef ARM_MBED 00603 int main() 00604 #else 00605 int main(int argc,char **argv) 00606 #endif 00607 { 00608 byte port=0; 00609 byte i; 00610 00611 #ifdef ARM_MBED 00612 lcd.cls(); 00613 lcd.printf("XBee Aging"); 00614 lcd.locate(0, 1); 00615 lcd.printf(COPYRIGHT); 00616 #else 00617 if( argc==2 ) port = (byte)(atoi(argv[1])); 00618 #endif 00619 xbee_init( port ); // XBee用COMポートの初期化(引数はポート番号) 00620 aging_init(); 00621 for(i=0;i<SIZEOF_LOG_S;i++) ERROR_S[i]='\0'; 00622 00623 while(1)loop(); 00624 } 00625 #endif
Generated on Wed Jul 13 2022 20:36:15 by
1.7.2