//데이터 수정 void DataEdit(Node** List) { int num=0,count=0,result=0; count=DLL_GetNodeCount(*List); Node* Current= DLL_GetNodeAt( *List, count-1 ); printf("%d번까지 미디어가 있습니다.\n\n",Current->num); while(1) { printf("수정할 미디어 번호를 입력:"); scanf("%d",&num); result = DataValidCheck(&List,num); if(result!=-1) { break; } else { printf("\n 해당 미디어 번호는 유효하지 않습니다.\n\n"); } } Current = DLL_GetNodeAt( *List, result ); printf("\n내용:"); scanf("%s",&((*Current).name)); printf("\n"); Progressbar(); system("cls"); }
//데이터 삭제 void DataDelete(Node** List) { int i=0, result=0; int Count=DLL_GetNodeCount( *List); Node* Current = DLL_GetNodeAt( *List, Count-1 ); printf("%d번까지 미디어가 있습니다.\n\n",Current->num); while(1) { printf("삭제할 미디어 번호를 입력:"); scanf("%d",&i); result = DataValidCheck(&List,i); if(result!=-1) { break; } else { printf("\n 해당 미디어 번호는 유효하지 않습니다.\n\n"); } } Current = DLL_GetNodeAt( *List, result ); DLL_RemoveNode( List, Current); Progressbar(); system("cls"); }
int MX_controller::GetPresLoad(int *PresentLoad){ int tP_load[NUM_FINGER],tLoad_length = 2; unsigned char *t_param; t_param = (unsigned char*)malloc(sizeof(unsigned char)*(NUM_FINGER*5)); for(int i = 0; i < NUM_FINGER; i++){ t_param[i*5] = (unsigned char)ID_list_[i]; t_param[i*5+1] = DXL_LOBYTE(MX_PRESENT_LOAD); t_param[i*5+2] = DXL_HIBYTE(MX_PRESENT_LOAD); t_param[i*5+3] = DXL_LOBYTE(tLoad_length); t_param[i*5+4] = DXL_HIBYTE(tLoad_length); } while(1){ dxl_bulk_read(Port_, t_param, NUM_FINGER*5, pbd); for(int i = 0; i < NUM_FINGER; i++){ dxl_get_bulk_word(pbd, ID_list_[i], MX_PRESENT_LOAD, &tP_load[i]); if(PresentLoad != NULL){ PresentLoad[i] = tP_load[i]; }else printf("ID %d : %d\n", ID_list_[i], tP_load[i]); } if(DataValidCheck(tP_load, 2048, 0) == 1) break; } free(t_param); return 1; }
//데이터 범위 출력 void DataPrint(Node** List) { int i=0,unit=0,startnum=0,endnum=0,result=0; int Count = 0; char key = 0; Node* NewNode = NULL; Node* Current= NULL; FILE * file = NULL; Count = DLL_GetNodeCount( *List ); while(1) { printf(" 시작 번호:"); scanf("%d",&startnum); result=DataValidCheck(&List,startnum); if(startnum <0) { system("cls"); printf(" 0 이상을 입력하셔야 합니다.\n"); } else if(result==-1) { printf(" 해당번호는 유효 하지 않습니다.\n"); } else { startnum=result; break; } } while(1) { printf(" 끝 번호:"); scanf("%d",&endnum); result=DataValidCheck(&List,endnum); if(endnum<startnum) { system("cls"); printf(" 끝 번호는 시작 번호 보다 크거나 같아야 합니다.\n"); } else if(endnum < 0) { printf(" 끝 번호는 0 보다 커야 합니다.\n"); } else if(result==-1) { printf(" 해당번호는 유효 하지 않습니다.\n"); } else { endnum=result; break; } } if(endnum-startnum > 50) { printf(" 한페이지에 출력될 미디어 데이터 수?(0: 50개):"); scanf("%d",&unit); } system("cls"); // 리스트 출력 for ( i = 0; i<Count; i++ ) { if(i<startnum) continue; if(i>endnum) { printf("\n ☆키를 누르시면 메뉴로 넘어갑니다.\n"); getch(); system("cls"); return; } Current = DLL_GetNodeAt( *List, i ); //printf( "List[%d] : %d, %d, %s\n", i, Current->Data, Current->num, Current->name ); printf( "미디어번호: [%d] 내용: %s\n",Current->num, Current->name ); if(unit==0) { if(i!=0 && (i+1)%50==0&&i!=endnum) { printf("\n ☆다음페이지로 넘어갑니다(종료 'Q'키)\n"); key=getch(); if(key=='q'||key=='Q') { system("cls"); return; } else { system("cls"); } } } else { if(i!=0 && (i+1)%unit==0&&i!=endnum) { printf("\n ☆다음페이지로 넘어갑니다(종료 'Q'키)\n"); key=getch(); if(key=='q'||key=='Q') { system("cls"); return; } else { system("cls"); } } } if(i==Count-1) { printf("\n ☆키를 누르시면 메뉴로 넘어갑니다.\n"); getch(); system("cls"); } } }