
//[2012.07.08.일][생성!!!]

//[!]{-------------------------
#include "GUI\GUI_기본조정설정.h"
//}----------------------------

#include "함수묶음.h"

#include "GUI\GUI.h"

#include "일반함수.h"
#include "색상정의.h"
#include "전역정보.h"


void GUI_생성자_기본조정설정(void)
{
  //[2012.07.08.일][생성!!!]

  //[VAR]
  //{
      int   i;

      char  문자열[256];

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[Lb_제목]
  //{
      _GLabel_생성_(gui->기본조정설정.Lb_제목, gui->기본틀.GVmos, GID_생성(),
                   4, 25,
                   40, 16,
                   true);

      _GLabel_제목_(gui->기본조정설정.Lb_제목, "기본 조정/설정", d_쓰기);
      _GLabel_자동폭_(gui->기본조정설정.Lb_제목, true, d_쓰기);

      _GLabel_배경색_(gui->기본조정설정.Lb_제목, _GColor_밝기_(clGray, 100), d_쓰기);
      _GLabel_문자색_(gui->기본조정설정.Lb_제목, clWhite, d_쓰기);

      _GLabel_테두리_(gui->기본조정설정.Lb_제목, true, d_쓰기);

  //}

  //[Lb_기본판]
  //{
      _GLabel_생성_(gui->기본조정설정.Lb_기본판, gui->기본틀.GVmos, GID_생성(),
                   4,
                   _GLabel_Y_(gui->기본조정설정.Lb_제목, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_제목, 0, d_읽기)/2,
                   335, 212,
                   true);

      _GLabel_제목_(gui->기본조정설정.Lb_기본판, "", d_쓰기);
      _GLabel_배경색_(gui->기본조정설정.Lb_기본판, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);
      _GLabel_테두리_(gui->기본조정설정.Lb_기본판, true, d_쓰기);

  //}

  //[!]{-------------------------------
  //제목줄 앞으로.
  _GX_가장앞으로_(gui->기본조정설정.Lb_제목);
  //}----------------------------------

  //[제어기 번호]
  //{
      //[Lb_제어기번호]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_제어기번호, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_높이_(gui->기본조정설정.Lb_제목, 0, d_읽기)/2 + 2,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_제어기번호, "대상 제어기 번호 입력(0 - 63 사이값)", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_제어기번호, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_제어기번호, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Btn_제어기번호]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_제어기번호, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GLabel_X_(gui->기본조정설정.Lb_제어기번호, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_제어기번호, 0, d_읽기) + 2,
                        _GLabel_Y_(gui->기본조정설정.Lb_제어기번호, 0, d_읽기),
                        30, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_제어기번호, "0", d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_제어기번호, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_제어기번호,
               "통신할 제어기 번호(DID)를 입력합니다.\r\n"
               "0 - 63 사이의 값을 가질수 있으며 예외로 255 일 경우는 \r\n"
               "통신선에 연결된 전체 제어기를 대상으로 명령을 전달하게 됩니다.\r\n"
               "단, 이 경우는 여러개의 제어기에 한꺼번에 동일 명령을 전송하는\r\n"
               "경우만 해당하며 제어기들로부터 값을 읽어들이는 경우에는 통신\r\n"
               "오류가 발생합니다. 이점 주의 바랍니다.\r\n"
               "제어기 번호는 중복 되면 안되고 10 진수로 입력합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_제어기번호, false, d_쓰기);

          //}

      //}

  //}

  //[속도]
  //{
      //[Lb_속도]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_속도, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_제어기번호, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_제어기번호, 0, d_읽기) + 2,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_속도, "속도", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_속도, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_속도, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Btn_속도]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GButton_생성_(gui->기본조정설정.Btn_속도[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                          _GLabel_X_(gui->기본조정설정.Lb_속도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_속도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8,
                          _GLabel_Y_(gui->기본조정설정.Lb_속도, 0, d_읽기),
                          30, 16,
                          true);
            _GButton_제목_(gui->기본조정설정.Btn_속도[i], "0", d_쓰기);

            //[이벤트]
            //{
                _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도[i], true, d_쓰기);

            //}

            //[풍선도움말]
            //{
                _GButton_풍선도움말문자열_
                (gui->기본조정설정.Btn_속도[i],
                 "서보에 적용할 속도를 읽기/쓰기 합니다.\r\n"
                 "0 - 255 사이의 값을 가질수 있으며\r\n"
                 "0 이 최고속, 255 가 최저속 값입니다.\r\n"
                 "10 진수로 입력 합니다.\r\n"
                 "오른쪽 [읽]/[쓰] 버튼으로 읽거나 쓸수 있습니다.",
                 d_쓰기);

                _GButton_풍선도움말_(gui->기본조정설정.Btn_속도[i], false, d_쓰기);

            //}

          }

      //}

      //[Btn_속도_읽기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_속도_읽기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GLabel_폭_(gui->기본조정설정.Lb_기본판, 0, d_읽기) - (16 + 2)*2 - 2,
                        _GLabel_Y_(gui->기본조정설정.Lb_속도, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_속도_읽기, "읽", d_쓰기);
          //_GButton_배경색_(gui->기본조정설정.Btn_속도_읽기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          //_GButton_문자색_(gui->기본조정설정.Btn_속도_읽기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_속도_읽기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_읽기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_속도_읽기,
               "현재 속도값 8 개를 제어기로부터 읽어서 표시합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_속도_읽기, false, d_쓰기);

          //}

      //}

      //[Btn_속도_쓰기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_속도_쓰기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GButton_X_(gui->기본조정설정.Btn_속도_읽기, 0, d_읽기) + _GButton_폭_(gui->기본조정설정.Btn_속도_읽기, 0, d_읽기) + 2,
                        _GButton_Y_(gui->기본조정설정.Btn_속도_읽기, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_속도_쓰기, "쓰", d_쓰기);
          //_GButton_배경색_(gui->기본조정설정.Btn_속도_쓰기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          //_GButton_문자색_(gui->기본조정설정.Btn_속도_쓰기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_속도_쓰기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_쓰기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_속도_쓰기,
               "입력된 속도값 8 개를 제어기에 전송합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_속도_쓰기, false, d_쓰기);

          //}

      //}

  //}

  //[각도]
  //{
      //[Lb_각도]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_각도, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_속도, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_속도, 0, d_읽기) + 2,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_각도, "각도", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_각도, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_각도, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Btn_각도]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GButton_생성_(gui->기본조정설정.Btn_각도[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                          _GLabel_X_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_각도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8,
                          _GLabel_Y_(gui->기본조정설정.Lb_각도, 0, d_읽기),
                          30, 16,
                          true);
            _GButton_제목_(gui->기본조정설정.Btn_각도[i], "90", d_쓰기);

            //[이벤트]
            //{
                _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도[i], true, d_쓰기);

            //}

            //[풍선도움말]
            //{
                _GButton_풍선도움말문자열_
                (gui->기본조정설정.Btn_각도[i],
                 "서보에 적용할 각도를 읽기/쓰기 합니다.\r\n"
                 "0 - 180 사이의 값을 가질수 있으며 10 진수로 입력 합니다.\r\n"
                 "정확한 제어를 위하여 반드시 영점 조정을 해 주어야 합니다.\r\n"
                 "오른쪽 [읽]/[쓰] 버튼으로 읽거나 쓸수 있습니다.",
                 d_쓰기);

                _GButton_풍선도움말_(gui->기본조정설정.Btn_각도[i], false, d_쓰기);

            //}

          }

      //}

      //[Btn_각도_읽기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_각도_읽기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GLabel_폭_(gui->기본조정설정.Lb_기본판, 0, d_읽기) - (16 + 2)*2 - 2,
                        _GLabel_Y_(gui->기본조정설정.Lb_각도, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_각도_읽기, "읽", d_쓰기);
          //_GButton_배경색_(gui->기본조정설정.Btn_각도_읽기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          //_GButton_문자색_(gui->기본조정설정.Btn_각도_읽기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_각도_읽기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_읽기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_각도_읽기,
               "현재 각도값 8 개를 제어기로부터 읽어서 표시합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_각도_읽기, false, d_쓰기);

          //}

      //}

      //[Btn_각도_쓰기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_각도_쓰기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GButton_X_(gui->기본조정설정.Btn_각도_읽기, 0, d_읽기) + _GButton_폭_(gui->기본조정설정.Btn_각도_읽기, 0, d_읽기) + 2,
                        _GButton_Y_(gui->기본조정설정.Btn_각도_읽기, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_각도_쓰기, "쓰", d_쓰기);
          //_GButton_배경색_(gui->기본조정설정.Btn_각도_쓰기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          //_GButton_문자색_(gui->기본조정설정.Btn_각도_쓰기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_각도_쓰기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_쓰기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_각도_쓰기,
               "입력된 각도값 8 개를 제어기에 전송합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_각도_쓰기, false, d_쓰기);

          //}

      //}

  //}

  //[줄이동자]
  //{
      //[Lb_0도]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_0도, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_각도, 0, d_읽기) + 2,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_0도, "0도", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_0도, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_0도, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Lb_180도]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_180도, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_각도, 0, d_읽기) + 80,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_180도, "180도", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_180도, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_180도, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[ScrlV_각도]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GScrollV_생성_(gui->기본조정설정.ScrlV_각도[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                           _GLabel_X_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_각도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8 + 7,
                           _GLabel_Y_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_각도, 0, d_읽기) + 4,
                           17, 90,
                           true);

            _GScrollV_최소위치_(gui->기본조정설정.ScrlV_각도[i], 0, d_쓰기);
            _GScrollV_최대위치_(gui->기본조정설정.ScrlV_각도[i], 180, d_쓰기);
            _GScrollV_위치_(gui->기본조정설정.ScrlV_각도[i], 90, d_쓰기);

            //[이벤트]
            //{
                _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[i], true, d_쓰기);

            //}

          }

      //}

  //}

  //[번호]
  //{
      //[Lb_번호]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GLabel_생성_(gui->기본조정설정.Lb_번호[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                         _GLabel_X_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_각도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8 + 10,
                         _GScrollV_Y_(gui->기본조정설정.ScrlV_각도[7], 0, d_읽기) + _GScrollV_높이_(gui->기본조정설정.ScrlV_각도[7], 0, d_읽기) + 2,
                         16, 16,
                         true);

            //[제목]
            //{
                _Conv_Long값_문자열_(i, 0, false, false, 문자열);
                _GLabel_제목_(gui->기본조정설정.Lb_번호[i], 문자열, d_쓰기);

            //}

            _GLabel_배경색_(gui->기본조정설정.Lb_번호[i], _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

          }

      //}

  //}

  //[PWM]
  //{
      //[Lb_PWM]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_PWM, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_번호[7], 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_번호[7], 0, d_읽기),
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_PWM, "PWM", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_PWM, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_PWM, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Chk_PWM]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GCheckButton_생성_(gui->기본조정설정.Chk_PWM[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                               _GLabel_X_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_각도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8 + 10,
                               _GLabel_Y_(gui->기본조정설정.Lb_PWM, 0, d_읽기) + 2,
                               true);

            _GCheckButton_확인_(gui->기본조정설정.Chk_PWM[i], true, d_쓰기);

            //[이벤트]
            //{
                //[2012.07.23.월][추가!!!]
                _GCheckButton_이벤트_MClick_(gui->기본조정설정.Chk_PWM[i], true, d_쓰기);

            //}

            //[풍선도움말]
            //{
                _GCheckButton_풍선도움말문자열_
                (gui->기본조정설정.Chk_PWM[i],
                 "해당 서보의 PWM 출력 유/무를 결정합니다.",
                 d_쓰기);

                _GCheckButton_풍선도움말_(gui->기본조정설정.Chk_PWM[i], false, d_쓰기);

            //}

          }

      //}

      //[Btn_PWM_읽기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_PWM_읽기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GLabel_폭_(gui->기본조정설정.Lb_기본판, 0, d_읽기) - (16 + 2)*2 - 2,
                        _GLabel_Y_(gui->기본조정설정.Lb_PWM, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_PWM_읽기, "읽", d_쓰기);
          _GButton_배경색_(gui->기본조정설정.Btn_PWM_읽기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_PWM_읽기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_PWM_읽기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_읽기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_PWM_읽기,
               "제어기안의 PWM 설정값을 읽어서 표시합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_PWM_읽기, false, d_쓰기);

          //}

      //}

      //[Btn_PWM_쓰기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_PWM_쓰기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GButton_X_(gui->기본조정설정.Btn_PWM_읽기, 0, d_읽기) + _GButton_폭_(gui->기본조정설정.Btn_PWM_읽기, 0, d_읽기) + 2,
                        _GButton_Y_(gui->기본조정설정.Btn_PWM_읽기, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_PWM_쓰기, "쓰", d_쓰기);
          _GButton_배경색_(gui->기본조정설정.Btn_PWM_쓰기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_PWM_쓰기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_PWM_쓰기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_쓰기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_PWM_쓰기,
               "현재 PWM 설정값을 제어기에 전송합니다.\r\n"
               "이 설정값은 제어기 내부 EEprom 안에 보존됩니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_PWM_쓰기, false, d_쓰기);

          //}

      //}

  //}

  //[A/D]
  //{
      //[Lb_AD]
      //{
          _GLabel_생성_(gui->기본조정설정.Lb_AD, gui->기본조정설정.Lb_기본판, GID_생성(),
                       2,
                       _GLabel_Y_(gui->기본조정설정.Lb_PWM, 0, d_읽기) + _GLabel_높이_(gui->기본조정설정.Lb_PWM, 0, d_읽기) + 2,
                       40, 16,
                       true);

          _GLabel_제목_(gui->기본조정설정.Lb_AD, "A/D", d_쓰기);
          _GLabel_자동폭_(gui->기본조정설정.Lb_AD, true, d_쓰기);
          _GLabel_배경색_(gui->기본조정설정.Lb_AD, _GColor_밝기_(clGray, d_환경_배경밝기), d_쓰기);

      //}

      //[Btn_AD]
      //{
          for(i = 7; i >= 0; i--)
          {
            _GButton_생성_(gui->기본조정설정.Btn_AD[i], gui->기본조정설정.Lb_기본판, GID_생성(),
                          _GLabel_X_(gui->기본조정설정.Lb_각도, 0, d_읽기) + _GLabel_폭_(gui->기본조정설정.Lb_각도, 0, d_읽기) + ((7 - i)*(30 + 2)) + 8 + 9,
                          _GLabel_Y_(gui->기본조정설정.Lb_AD, 0, d_읽기) + 2,
                          13, 13,
                          true);

            _GButton_제목_(gui->기본조정설정.Btn_AD[i], "A", d_쓰기);

            _GButton_제목자동위치_(gui->기본조정설정.Btn_AD[i], false, d_쓰기);
            _GButton_제목위치X_(gui->기본조정설정.Btn_AD[i], 3, d_쓰기);
            _GButton_제목위치Y_(gui->기본조정설정.Btn_AD[i], 1, d_쓰기);

            //[이벤트]
            //{
                //[2012.07.23.월][추가!!!]
                _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD[i], true, d_쓰기);

            //}

            //[풍선도움말]
            //{
                _GButton_풍선도움말문자열_
                (gui->기본조정설정.Btn_AD[i],
                 "해당 서보를 [아날로그/디지탈] 방식 중 어떤 것으로 구동할지 결정합니다.\r\n"
                 "[아날로그] 방식은 PWM 이 계속 출력되고 [디지탈] 방식은 각도에 해당하는\r\n"
                 "펄스 한개씩만 출력됩니다(각도의 변화가 있을 경우만 해당 펄스 한개 출력).\r\n"
                 "[디지탈] 방식으로 설정시는 반드시 \"페일세이프\" 기능을 꺼 주어야 합니다.\r\n"
                 "그렇지 않은 경우 각도 이동 후 다시 \"페일세이프\" 각도로 이동하게 됩니다.\r\n"
                 "\"페일세이프\" 관련 자세한 내용은 해당 서보 제조사의 설명을 참고 하십시요.\r\n\r\n"
                 "이것 저것 고려하고 싶지 않다면 일반적인 [아날로그] 방식으로 설정하면 됩니다.\r\n"
                 "[디지탈 서보] 는 [아날로그] 방식으로 구동해도 상관없으며 [디지탈 서보] 와\r\n"
                 "[아날로그 서보] 를 섞어서 사용하는 경우는 각각 모두 [아날로그] 로 설정하고\r\n"
                 "[주기] 를 12(ms) - 15(ms) 로 설정해주면 됩니다.",
                 d_쓰기);

                _GButton_풍선도움말_(gui->기본조정설정.Btn_AD[i], false, d_쓰기);

            //}

          }

      //}

      //[Btn_AD_읽기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_AD_읽기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GLabel_폭_(gui->기본조정설정.Lb_기본판, 0, d_읽기) - (16 + 2)*2 - 2,
                        _GLabel_Y_(gui->기본조정설정.Lb_AD, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_AD_읽기, "읽", d_쓰기);
          _GButton_배경색_(gui->기본조정설정.Btn_AD_읽기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_AD_읽기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_AD_읽기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_읽기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_AD_읽기,
               "제어기안의 A/D 설정값을 읽어서 표시합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_AD_읽기, false, d_쓰기);

          //}

      //}

      //[Btn_AD_쓰기]
      //{
          _GButton_생성_(gui->기본조정설정.Btn_AD_쓰기, gui->기본조정설정.Lb_기본판, GID_생성(),
                        _GButton_X_(gui->기본조정설정.Btn_AD_읽기, 0, d_읽기) + _GButton_폭_(gui->기본조정설정.Btn_AD_읽기, 0, d_읽기) + 2,
                        _GButton_Y_(gui->기본조정설정.Btn_AD_읽기, 0, d_읽기),
                        16, 16,
                        true);
          _GButton_제목_(gui->기본조정설정.Btn_AD_쓰기, "쓰", d_쓰기);
          _GButton_배경색_(gui->기본조정설정.Btn_AD_쓰기, _GColor_밝기_(clBlack2, 125), d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_AD_쓰기, clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_AD_쓰기, clBlack2, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_쓰기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->기본조정설정.Btn_AD_쓰기,
               "현재 A/D 설정값을 제어기에 전송합니다.\r\n"
               "이 설정값은 제어기 내부 EEprom 안에 보존됩니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->기본조정설정.Btn_AD_쓰기, false, d_쓰기);

          //}

      //}

  //}

}

void GUI_소멸자_기본조정설정(void)
{
  //[2012.07.08.일][생성!!!]

  //[VAR]
  //{
      int  i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}----------------

  //[A/D]
  //{
      _GButton_삭제_(gui->기본조정설정.Btn_AD_쓰기);
      _GButton_삭제_(gui->기본조정설정.Btn_AD_읽기);
      for(i = 0; i < 8; i++) { _GButton_삭제_(gui->기본조정설정.Btn_AD[i]); }
      _GLabel_삭제_(gui->기본조정설정.Lb_AD);

  //}

  //[PWM]
  //{
      _GButton_삭제_(gui->기본조정설정.Btn_PWM_쓰기);
      _GButton_삭제_(gui->기본조정설정.Btn_PWM_읽기);
      for(i = 0; i < 8; i++) { _GCheckButton_삭제_(gui->기본조정설정.Chk_PWM[i]); }
      _GLabel_삭제_(gui->기본조정설정.Lb_PWM);

  //}

  //[번호]
  //{
      for(i = 0; i < 8; i++) { _GLabel_삭제_(gui->기본조정설정.Lb_번호[i]); }

  //}

  //[줄이동자]
  //{
      for(i = 0; i < 8; i++) { _GScrollV_삭제_(gui->기본조정설정.ScrlV_각도[i]); }
      _GLabel_삭제_(gui->기본조정설정.Lb_180도);
      _GLabel_삭제_(gui->기본조정설정.Lb_0도);

  //}

  //[각도]
  //{
      _GButton_삭제_(gui->기본조정설정.Btn_각도_쓰기);
      _GButton_삭제_(gui->기본조정설정.Btn_각도_읽기);
      for(i = 0; i < 8; i++) { _GButton_삭제_(gui->기본조정설정.Btn_각도[i]); }
      _GLabel_삭제_(gui->기본조정설정.Lb_각도);

  //}

  //[속도]
  //{
      _GButton_삭제_(gui->기본조정설정.Btn_속도_쓰기);
      _GButton_삭제_(gui->기본조정설정.Btn_속도_읽기);
      for(i = 0; i < 8; i++) { _GButton_삭제_(gui->기본조정설정.Btn_속도[i]); }
      _GLabel_삭제_(gui->기본조정설정.Lb_속도);

  //}

  //[제어기번호]
  //{
      _GButton_삭제_(gui->기본조정설정.Btn_제어기번호);
      _GLabel_삭제_(gui->기본조정설정.Lb_제어기번호);

  //}

  _GLabel_삭제_(gui->기본조정설정.Lb_기본판);
  _GLabel_삭제_(gui->기본조정설정.Lb_제목);

}

bool GUI_동작함수_기본조정설정(struct GUI알림문64  *pGUI알림문64)
{
  //[2012.07.15.일][생성!!!]{---------
  //해당 [알림문] 만 처리.
  //처리한 알림문이 있다면 <true> 를 반환.
  //}--------------------------------

  //[VAR]
  //{
      int  i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[제어기 번호]
  //{
      if     (pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_제어기번호))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_제어기번호_이벤트_MClick(); return(true); }

      }

  //}

  //[속도]
  //{
      for(i = 0; i < 8; i++)
      {
        if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_속도[i]))
        {
          if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_속도_이벤트_MClick(i); return(true); }

        }

      }

      if     (pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_속도_읽기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_속도_읽기_이벤트_MClick(); return(true); }

      }
      else if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_속도_쓰기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_속도_쓰기_이벤트_MClick(); return(true); }

      }

  //}

  //[각도]
  //{
      for(i = 0; i < 8; i++)
      {
        if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_각도[i]))
        {
          if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_각도_이벤트_MClick(i); return(true); }

        }

      }

      if     (pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_각도_읽기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_각도_읽기_이벤트_MClick(); return(true); }

      }
      else if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_각도_쓰기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_각도_쓰기_이벤트_MClick(); return(true); }

      }

  //}

  //[줄이동자]
  //{
      for(i = 0; i < 8; i++)
      {
        if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.ScrlV_각도[i]))
        {
          if(pGUI알림문64->알림문 == d_GuiMsg_Scroll) { 기본조정설정_ScrlV_각도_이벤트_Scroll(i, pGUI알림문64->정보int); return(true); }

        }

      }

  //}

  //[PWM]
  //{
      for(i = 0; i < 8; i++)
      {
        if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Chk_PWM[i]))
        {
          if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Chk_PWM_이벤트_MClick(i); return(true); }

        }

      }

      if     (pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_PWM_읽기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_PWM_읽기_이벤트_MClick(); return(true); }

      }
      else if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_PWM_쓰기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_PWM_쓰기_이벤트_MClick(); return(true); }

      }

  //}

  //[A/D]
  //{
      for(i = 0; i < 8; i++)
      {
        if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_AD[i]))
        {
          if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_AD_이벤트_MClick(i); return(true); }

        }

      }

      if     (pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_AD_읽기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_AD_읽기_이벤트_MClick(); return(true); }

      }
      else if(pGUI알림문64->식별자 == GID_읽기(gui->기본조정설정.Btn_AD_쓰기))
      {
        if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 기본조정설정_Btn_AD_쓰기_이벤트_MClick(); return(true); }

      }

  //}

  //여기까지 온것은 처리하지 않은 것으로 보고.
  return(false);

}


void 기본조정설정_Btn_제어기번호_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]{-------------
  //[제어기번호] 는 [IDE] 상에서만 설정되는 것.
  //}------------------------------------

  //[VAR]
  //{
      char  문자열[16];

      bool  확인취소;

      int   제어기번호;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[알림창:한줄편집기]
  //{
      Ide_활성(false);
      //{
          //[현재 설정값 출력]
          //{
              //버튼 제목이 현재 설정된 제어기 번호.
              _GButton_제목_(gui->기본조정설정.Btn_제어기번호, 문자열, d_읽기);

              //[알림창:한줄 편집기] 에 출력.
              _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_쓰기);

          //}

          확인취소 = _GMsgBox_한줄편집기_
                   (gui->공용알림창, d_기계닉스,
                    //"[제어기번호(DID)] 는 0 - 63 까지 사용가능하고\r\n"
                    //"연결된 제어기와 같은 [제어기번호(DID)] 로 설정합니다.\r\n"
                    //"10진수로 입력."
                    "통신할 제어기 번호(DID)를 입력합니다.\r\n"
                    "0 - 63 사이의 값을 가질수 있으며 예외로 255 일 경우는 \r\n"
                    "통신선에 연결된 전체 제어기를 대상으로 명령을 전달하게 됩니다.\r\n"
                    "단, 이 경우는 여러개의 제어기에 한꺼번에 동일 명령을 전송하는\r\n"
                    "경우만 해당하며 제어기들로부터 값을 읽어들이는 경우에는 통신\r\n"
                    "오류가 발생합니다. 이점 주의 바랍니다.\r\n"
                    "제어기 번호는 중복 되면 안되고 10 진수로 입력합니다."
                   );

      //}
      Ide_활성(true);

      //[확인/취소]
      //{
          //[취소] 인 경우는 처리하지 않고 바로 종료.
          if(확인취소 == false) goto lb끝;

      //}

  //}

  //[형식 검사]
  //{
      _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_읽기);

      if(_Check_10진수규칙_(문자열) != true)
      {
        Ide_알림(d_오류,
                "10진수 문자열이 아닙니다.\r\n"
                "0 - 9 의 숫자로 이루어진 10진수 문자열만 사용가능하며\r\n"
                "앞뒤에 공백이 없어야 합니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[범위 검사]
  //{
      //[문자열 => 값]
      //{
          //범위 검사를 위하여 값으로 변환.
          제어기번호 = _Conv_10진수표기_Int값_(문자열);

      //}

      //[제어기번호(DID)] 는 0 - 63 까지만 사용 가능.
      //[2012.08.14.화][추가!!!]
      //예외적으로 [전체호출:255] 도 허용-----------------------------v
      if(!(((0 <= 제어기번호) && (제어기번호 <= 63)) || (제어기번호 == 255)))
      {
        Ide_알림(d_오류,
                "[제어기번호(DID)] 는 0 - 63 까지만 사용가능하며\r\n"
                "예외적으로 [전체대상:255] 을 사용할수 있습니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[확정]
  //{
      //[!]{-------------------------------
      //확정된 [제어기번호] 를 버튼 제목으로 출력.
      //}----------------------------------

      _Conv_Long값_문자열_(제어기번호, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_제어기번호, 문자열, d_쓰기);

  //}

  lb끝:

}

void 기본조정설정_Btn_속도_이벤트_MClick(int  p번호)
{
  //[2012.07.23.월][생성!!!]{----
  //[2012.07.28.토][수정!!!]-----
  //[EEprom] 과 무관한 즉시 적용값.
  //}---------------------------

  //[VAR]
  //{
      char  문자열[16];

      bool  확인취소;

      int   속도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{----------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도[p번호], false, d_쓰기);
  //}----------------------------------------------------------------

  //[알림창:한줄편집기]
  //{
      Ide_활성(false);
      //{
          //[현재 설정값 출력]
          //{
              //버튼 제목이 현재 설정된 제어기 번호.
              _GButton_제목_(gui->기본조정설정.Btn_속도[p번호], 문자열, d_읽기);

              //[알림창:한줄 편집기] 에 출력.
              _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_쓰기);

          //}

          확인취소 = _GMsgBox_한줄편집기_
                   (gui->공용알림창, d_기계닉스,
                    "[속도] 는 0(고속) - 255(저속) 까지 사용가능합니다.\r\n"
                    "10진수로 입력."
                   );

      //}
      Ide_활성(true);

      //[확인/취소]
      //{
          //[취소] 인 경우는 처리하지 않고 바로 종료.
          if(확인취소 == false) goto lb끝;

      //}

  //}

  //[형식 검사]
  //{
      _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_읽기);

      if(_Check_10진수규칙_(문자열) != true)
      {
        Ide_알림(d_오류,
                "10진수 문자열이 아닙니다.\r\n"
                "0 - 9 의 숫자로 이루어진 10진수 문자열만 사용가능하며\r\n"
                "앞뒤에 공백이 없어야 합니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[범위 검사]
  //{
      //[문자열 => 값]
      //{
          //범위 검사를 위하여 값으로 변환.
          속도 = _Conv_10진수표기_Int값_(문자열);

      //}

      //[속도] 는 0 - 255 까지만 사용 가능.
      if(!((0 <= 속도) && (속도 <= 255)))
      {
        Ide_알림(d_오류,
                "[속도] 는 0 - 255 까지만 사용가능합니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[확정]
  //{
      //[!]{--------------------------
      //확정된 [속도] 를 버튼 제목으로 출력.
      //}-----------------------------

      _Conv_Long값_문자열_(속도, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_속도[p번호], 문자열, d_쓰기);

  //}

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        //[제어기] 에 설정.
        if(_GMRCBASIC_Speed(기본조정설정_제어기번호(), p번호, 속도) != true) { Ide_통신오류알림(); goto lb끝; }

      }

  //}

  lb끝:

  //[이벤트:유효화]{---------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도[p번호], true, d_쓰기);
  //}---------------------------------------------------------------

}

void 기본조정설정_Btn_속도_읽기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]{-----------------
  //[2012.07.28.토][수정!!!]------------------
  //제어기로부터 8개 현재 동작 설정값을 읽어들여 표시.
  //[EEprom] 과 무관.
  //}----------------------------------------

  //[VAR]
  //{
      char           문자열[16];
      int            i;

      unsigned char  속도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_읽기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[8개 속도 읽기/표시]
  //{
      for(i = 0; i < 8; i++)
      {
        //[명령 처리]
        //{
            //[제어기] 에 설정.
            if(_GMRCBASIC_SpdRead(기본조정설정_제어기번호(), i, &속도) != true) { Ide_통신오류알림(); goto lb끝; }

            //[표시]
            //{
                //[!]{--------------------------
                //확정된 [속도] 를 버튼 제목으로 출력.
                //}-----------------------------

                _Conv_Long값_문자열_(속도, 0, false, false, 문자열);

                _GButton_제목_(gui->기본조정설정.Btn_속도[i], 문자열, d_쓰기);

            //}

        //}

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_읽기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_Btn_속도_쓰기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]{-----
  //[2012.07.28.토][수정!!!]------
  //제어기에 8개 설정값을 기록.
  //즉시 동작값으로 [EEprom] 과 무관.
  //}----------------------------

  //[VAR]
  //{
      char           문자열[16];
      int            i;

      unsigned char  속도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_쓰기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[8개 속도 쓰기]
  //{
      for(i = 0; i < 8; i++)
      {
        //[명령 처리]
        //{
            //[문자열 => 값]
            //{
                _GButton_제목_(gui->기본조정설정.Btn_속도[i], 문자열, d_읽기);

                속도 = _Conv_10진수표기_Int값_(문자열);

            //}

            //[제어기] 에 설정.
            if(_GMRCBASIC_Speed(기본조정설정_제어기번호(), i, 속도) != true) { Ide_통신오류알림(); goto lb끝; }

        //}

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_속도_쓰기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_Btn_각도_이벤트_MClick(int  p번호)
{
  //[2012.07.23.월][생성!!!]{-----
  //[2012.07.28.토][수정!!!]------
  //즉시 동작값으로 [EEprom] 과 무관.
  //}----------------------------

  //[VAR]
  //{
      char  문자열[16];

      bool  확인취소;

      int   각도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{----------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도[p번호], false, d_쓰기);
  //}----------------------------------------------------------------

  //[알림창:한줄편집기]
  //{
      Ide_활성(false);
      //{
          //[현재 설정값 출력]
          //{
              //버튼 제목이 현재 설정된 제어기 번호.
              _GButton_제목_(gui->기본조정설정.Btn_각도[p번호], 문자열, d_읽기);

              //[알림창:한줄 편집기] 에 출력.
              _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_쓰기);

          //}

          확인취소 = _GMsgBox_한줄편집기_
                   (gui->공용알림창, d_기계닉스,
                    "[각도] 는 0도 - 180도 까지 사용가능합니다.\r\n"
                    "10진수로 입력."
                   );

      //}
      Ide_활성(true);

      //[확인/취소]
      //{
          //[취소] 인 경우는 처리하지 않고 바로 종료.
          if(확인취소 == false) goto lb끝;

      //}

  //}

  //[형식 검사]
  //{
      _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_읽기);

      if(_Check_10진수규칙_(문자열) != true)
      {
        Ide_알림(d_오류,
                "10진수 문자열이 아닙니다.\r\n"
                "0 - 9 의 숫자로 이루어진 10진수 문자열만 사용가능하며\r\n"
                "앞뒤에 공백이 없어야 합니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[범위 검사]
  //{
      //[문자열 => 값]
      //{
          //범위 검사를 위하여 값으로 변환.
          각도 = _Conv_10진수표기_Int값_(문자열);

      //}

      //[각도] 는 0 - 180 까지만 사용 가능.
      if(!((0 <= 각도) && (각도 <= 180)))
      {
        Ide_알림(d_오류,
                "[각도] 는 0 - 180 까지만 사용가능합니다."
               );

        //더이상 처리하지 않고 종료.
        goto lb끝;

      }

  //}

  //[확정]
  //{
      //[!]{--------------------------
      //확정된 [각도] 를 버튼 제목으로 출력.
      //}-----------------------------

      //단, 이부분은 [줄이동자:이벤트] 처리부에서 자동 처리되므로 여기서는 주석처리.
      //_Conv_Long값_문자열_(각도, 0, false, false, 문자열);
      //_GButton_제목_(gui->기본조정설정.Btn_각도[p번호], 문자열, d_쓰기);

  //}

  //[명령 처리]
  //{
      //[!]{-----------------------------------------------------------
      //[각도] 는 해당 [줄이동자] 와 동기되고 [줄이동자] 의 위치가 변경되는 경우
      //[이벤트] 가 발생되어 자동으로 해당 [명령] 이 처리되므로 여기서 직접 [명령] 을
      //처리하지 않고 [줄이동자] 만 설정한다.
      //}--------------------------------------------------------------

      _GScrollV_위치_(gui->기본조정설정.ScrlV_각도[p번호], 각도, d_쓰기);

  //}

  lb끝:

  //[이벤트:유효화]{---------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도[p번호], true, d_쓰기);
  //}---------------------------------------------------------------

}

void 기본조정설정_Btn_각도_읽기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]{-------------
  //[2012.07.28.토][수정!!!]--------------
  //제어기로부터 8개 현재 설정값을 읽어들여 표시.
  //즉시 동작값으로 [EEprom] 과 무관.
  //}------------------------------------

  //[VAR]
  //{
      char           문자열[16];
      int            i;

      unsigned char  각도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_읽기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[8개 각도 읽기/표시]
  //{
      for(i = 0; i < 8; i++)
      {
        //[명령 처리]
        //{
            //[제어기] 에 설정.
            if(_GMRCBASIC_DegRead(기본조정설정_제어기번호(), i, &각도) != true) { Ide_통신오류알림(); goto lb끝; }

            //[표시]
            //{
                //[!]{--------------------------
                //확정된 [각도] 를 버튼 제목으로 출력.
                //}-----------------------------

                _Conv_Long값_문자열_(각도, 0, false, false, 문자열);

                _GButton_제목_(gui->기본조정설정.Btn_각도[i], 문자열, d_쓰기);

            //}

            //[줄이동자에 반영]
            //{
                //[2012.07.27.금][추가!!!]{------------------------------------
                //현재 [각도] 값을 [줄이동자] 에 반영하되 [이벤트] 가 발생하지 않도록 처리.
                //}-----------------------------------------------------------

                //[이벤트:무효화]{-------------------------------------------------------
                _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[i], false, d_쓰기);
                //}-------------------------------------------------------------------

                _GScrollV_위치_(gui->기본조정설정.ScrlV_각도[i], 각도, d_쓰기);

                //[이벤트:유효화]{-------------------------------------------------------
                _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[i], true, d_쓰기);
                //}-------------------------------------------------------------------

            //}

        //}

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_읽기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_Btn_각도_쓰기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]{-----
  //[2012.07.28.토][수정!!!]------
  //제어기에 8개 설정값을 기록.
  //즉시 동작값으로 [EEprom] 과 무관.
  //}----------------------------

  //[VAR]
  //{
      char           문자열[16];
      int            i;

      unsigned char  각도;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_쓰기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[8개 각도 쓰기]
  //{
      for(i = 0; i < 8; i++)
      {
        //[명령 처리]
        //{
            //[문자열 => 값]
            //{
                _GButton_제목_(gui->기본조정설정.Btn_각도[i], 문자열, d_읽기);

                각도 = _Conv_10진수표기_Int값_(문자열);

            //}

            //[제어기] 에 설정.
            if(_GMRCBASIC_Degree(기본조정설정_제어기번호(), i, d_AccelNo, 각도) != true) { Ide_통신오류알림(); goto lb끝; }

        //}

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_각도_쓰기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_ScrlV_각도_이벤트_Scroll(int  p번호,
                                      int  p위치)
{
  //[2012.07.23.월][생성!!!]{-----
  //[2012.07.28.토][수정!!!]------
  //즉시 동작값으로 [EEprom] 과 무관.
  //}----------------------------

  //[VAR]
  //{
      char  문자열[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{-------------------------------------------------------
  _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[p번호], false, d_쓰기);
  //}-------------------------------------------------------------------

  //[확정]
  //{
      _Conv_Long값_문자열_(p위치, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_각도[p번호], 문자열, d_쓰기);

  //}

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        //[제어기] 에 설정.
        if(_GMRCBASIC_Degree(기본조정설정_제어기번호(), p번호, d_AccelNo, p위치) != true) { Ide_통신오류알림(); goto lb끝; }

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------------
  _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[p번호], true, d_쓰기);
  //}-------------------------------------------------------------------

}

void 기본조정설정_Chk_PWM_이벤트_MClick(int  p번호)
{
  //[2012.07.23.월][생성!!!]{---------------------------
  //[IDE] 상에서 각 비트만 설정하고 실제 제어기에 적용하지 않는다.
  //}--------------------------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

}

void 기본조정설정_Btn_PWM_읽기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]
  //[2012.07.28.토][수정!!!]

  //[VAR]
  //{
      unsigned char  pwm;

      int            i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_읽기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[명령 처리]
  //{
      //[제어기] 에 설정.
      if(_GMRCBASIC_PwmRead(기본조정설정_제어기번호(), &pwm) != true) { Ide_통신오류알림(); goto lb끝; }

  //}

  //[표시]
  //{
      //[!]{----------------------
      //각 비트설정값을 [IDE] 에 반영.
      //1 : [v]
      //0 : [ ]
      //}-------------------------

      for(i = 0; i < 8; i++)
      {
        _GCheckButton_확인_(gui->기본조정설정.Chk_PWM[i], (pwm >> i) & 0x01, d_쓰기);

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_읽기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_Btn_PWM_쓰기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]
  //[2012.07.28.토][수정!!!]

  //[VAR]
  //{
      unsigned char  pwm;

      int            i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{--------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_쓰기, false, d_쓰기);
  //}--------------------------------------------------------------

  //[합성]
  //{
      //[!]{-----------------------------------------
      //현재 IDE 에 설정된 각 비트를 1 바이트 설정값으로 합성.
      //1 : [v]
      //0 : [ ]
      //}--------------------------------------------

      for(i = 0, pwm = 0; i < 8; i++)
      {
        pwm |= (_GCheckButton_확인_(gui->기본조정설정.Chk_PWM[i], NULL, d_읽기) << i);

      }

  //}

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        //[제어기] 에 설정.
        if(_GMRCBASIC_PwmSet(기본조정설정_제어기번호(), pwm) != true) { Ide_통신오류알림(); goto lb끝; }

      }

  //}

  lb끝:

  //[이벤트:유효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_PWM_쓰기, true, d_쓰기);
  //}-------------------------------------------------------------

}

void 기본조정설정_Btn_AD_이벤트_MClick(int  p번호)
{
  //[2012.07.23.월][생성!!!]{---------------------------
  //[IDE] 상에서 각 비트만 설정하고 실제 제어기에 적용하지 않는다.
  //}--------------------------------------------------

  //[VAR]
  //{
      char  문자열[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GButton_제목_(gui->기본조정설정.Btn_AD[p번호], 문자열, d_읽기);

  if(_Str_일치확인_("A", 문자열, true) == true)
  {
    //현재 "A" => "D" 로 전환.
    _GButton_제목_(gui->기본조정설정.Btn_AD[p번호], "D", d_쓰기);

    _GButton_배경색_(gui->기본조정설정.Btn_AD[p번호], _GColor_밝기_(clBlack2, 80), d_쓰기);
    _GButton_문자색_(gui->기본조정설정.Btn_AD[p번호], clWhite, d_쓰기);
    _GButton_테두리색_(gui->기본조정설정.Btn_AD[p번호], clBlack2, d_쓰기);

  }
  else
  {
    //현재 "D" => "A" 로 전환.
    _GButton_제목_(gui->기본조정설정.Btn_AD[p번호], "A", d_쓰기);

    _GButton_배경색_(gui->기본조정설정.Btn_AD[p번호], clWhite, d_쓰기);
    _GButton_문자색_(gui->기본조정설정.Btn_AD[p번호], clBlack, d_쓰기);
    _GButton_테두리색_(gui->기본조정설정.Btn_AD[p번호], clGray, d_쓰기);

  }

}

void 기본조정설정_Btn_AD_읽기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]

  //[VAR]
  //{
      char           문자열[16];

      unsigned char  AD;

      int            i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{-----------------------------------
      //읽기의 경우 [통신포트:열림] 상태에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}----------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_읽기, false, d_쓰기);
  //}-------------------------------------------------------------

  //[명령 처리]
  //{
      //[제어기] 에 설정.
      if(_GMRCBASIC_AdRead(기본조정설정_제어기번호(), &AD) != true) { Ide_통신오류알림(); goto lb끝; }

  //}

  //[표시]
  //{
      //[!]{----------------------
      //각 비트설정값을 [IDE] 에 반영.
      //1 : [A]
      //0 : [D]
      //}-------------------------

      for(i = 0; i < 8; i++)
      {
        if((AD >> i) & 0x01)
        {
          _GButton_제목_(gui->기본조정설정.Btn_AD[i], "A", d_쓰기);

          _GButton_배경색_(gui->기본조정설정.Btn_AD[i], clWhite, d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_AD[i], clBlack, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_AD[i], clGray, d_쓰기);

        }
        else
        {
          _GButton_제목_(gui->기본조정설정.Btn_AD[i], "D", d_쓰기);

          _GButton_배경색_(gui->기본조정설정.Btn_AD[i], _GColor_밝기_(clBlack2, 80), d_쓰기);
          _GButton_문자색_(gui->기본조정설정.Btn_AD[i], clWhite, d_쓰기);
          _GButton_테두리색_(gui->기본조정설정.Btn_AD[i], clBlack2, d_쓰기);

        }

      }

  //}

  lb끝:

  //[이벤트:유효화]{------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_읽기, true, d_쓰기);
  //}------------------------------------------------------------

}

void 기본조정설정_Btn_AD_쓰기_이벤트_MClick(void)
{
  //[2012.07.23.월][생성!!!]
  //[2012.07.29.일][수정!!!]

  //[VAR]
  //{
      char           문자열[16];

      unsigned char  AD;

      int            i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_쓰기, false, d_쓰기);
  //}-------------------------------------------------------------

  //[합성]
  //{
      //[!]{-----------------------------------------
      //현재 IDE 에 설정된 각 비트를 1 바이트 설정값으로 합성.
      //1 : [A]
      //0 : [D]
      //}--------------------------------------------

      for(i = 0, AD = 0; i < 8; i++)
      {
        //[!]{--------------------------
        //<1> 만 의미가 있으므로 "A" 만 처리.
        //}-----------------------------

        _GButton_제목_(gui->기본조정설정.Btn_AD[i], 문자열, d_읽기);

        if(_Str_일치확인_(문자열, "A", false))
        {
          AD |= (1 << i);

        }
        else
        {
          //[!]{----------------------------------------------------------
          //"D" 의 경우는 <0> 이지만 이미 <AD = 0> 으로 초기화 된 상태로 의미가 없다.
          //}-------------------------------------------------------------

        }

      }

  //}

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        //[제어기] 에 설정.
        if(_GMRCBASIC_AdSet(기본조정설정_제어기번호(), AD) != true) { Ide_통신오류알림(); goto lb끝; }

      }

  //}

  lb끝:

  //[이벤트:유효화]{------------------------------------------------
  _GButton_이벤트_MClick_(gui->기본조정설정.Btn_AD_쓰기, true, d_쓰기);
  //}------------------------------------------------------------

}

//----------------------------------------------------------------------------
//[함수]-----------------------------------------------------------------------
//----------------------------------------------------------------------------

void 기본조정설정_풍선도움말_사용유무(bool  p사용유무)
{
  //[2012.07.31.화][생성!!!]

  //[VAR]
  //{
      int  i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GButton_풍선도움말_(gui->기본조정설정.Btn_제어기번호, p사용유무, d_쓰기);

  for(i = 0; i < 8; i++) { _GButton_풍선도움말_(gui->기본조정설정.Btn_속도[i], p사용유무, d_쓰기); }

  _GButton_풍선도움말_(gui->기본조정설정.Btn_속도_읽기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->기본조정설정.Btn_속도_쓰기, p사용유무, d_쓰기);


  for(i = 0; i < 8; i++) { _GButton_풍선도움말_(gui->기본조정설정.Btn_각도[i], p사용유무, d_쓰기); }

  _GButton_풍선도움말_(gui->기본조정설정.Btn_각도_읽기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->기본조정설정.Btn_각도_쓰기, p사용유무, d_쓰기);


  for(i = 0; i < 8; i++) { _GCheckButton_풍선도움말_(gui->기본조정설정.Chk_PWM[i], p사용유무, d_쓰기); }

  _GButton_풍선도움말_(gui->기본조정설정.Btn_PWM_읽기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->기본조정설정.Btn_PWM_쓰기, p사용유무, d_쓰기);


  for(i = 0; i < 8; i++) { _GButton_풍선도움말_(gui->기본조정설정.Btn_AD[i], p사용유무, d_쓰기); }

  _GButton_풍선도움말_(gui->기본조정설정.Btn_AD_읽기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->기본조정설정.Btn_AD_쓰기, p사용유무, d_쓰기);

}

unsigned char 기본조정설정_제어기번호(void)
{
  //[2012.07.25.수][생성!!!]{--
  //[제어기번호:DID] 값을 반환.
  //}-------------------------

  //[VAR]
  //{
      char  문자열[64];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GButton_제목_(gui->기본조정설정.Btn_제어기번호, 문자열, d_읽기);

  return(_Conv_10진수표기_Int값_(문자열));

}


void 기본조정설정_속도_표시(unsigned char  p번호,
                       unsigned char  p속도)
{
  //[2012.08.22.수][생성!!!]{-------------------------------
  //[인터프리터] 에서 설정한 [속도] 를 실시간으로 보여주기 위하여 사용.
  //시각적으로 [제어기] 구동 상태를 볼수 있다.
  //}------------------------------------------------------

  //[VAR]
  //{
      char  문자열[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[표시]
  //{
      _Conv_Long값_문자열_(p속도, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_속도[p번호], 문자열, d_쓰기);

  //}

}

void 기본조정설정_각도_표시(unsigned char  p번호,
                       unsigned char  p각도)
{
  //[2012.08.22.수][생성!!!]{-------------------------------
  //[인터프리터] 에서 설정한 [각도] 를 실시간으로 보여주기 위하여 사용.
  //시각적으로 [제어기] 구동 상태를 볼수 있다.
  //}------------------------------------------------------

  //[VAR]
  //{
      char  문자열[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[표시]
  //{
      //[!]{--------------------------
      //확정된 [각도] 를 버튼 제목으로 출력.
      //}-----------------------------

      _Conv_Long값_문자열_(p각도, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_각도[p번호], 문자열, d_쓰기);

  //}

  //[줄이동자에 반영]
  //{
      //[!]{--------------------------------------------------------
      //현재 [각도] 값을 [줄이동자] 에 반영하되 [이벤트] 가 발생하지 않도록 처리.
      //}-----------------------------------------------------------

      //[이벤트:무효화]{-------------------------------------------------------
      _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[p번호], false, d_쓰기);
      //}-------------------------------------------------------------------

      _GScrollV_위치_(gui->기본조정설정.ScrlV_각도[p번호], p각도, d_쓰기);

      //[이벤트:유효화]{------------------------------------------------------
      _GScrollV_이벤트_Scroll_(gui->기본조정설정.ScrlV_각도[p번호], true, d_쓰기);
      //}------------------------------------------------------------------

  //}

}

void 기본조정설정_제어기번호_표시(unsigned char  p제어기번호)
{
  //[2012.08.22.수][생성!!!]{-----------------------------------
  //[인터프리터] 에서 사용한 [제어기번호] 를 실시간으로 보여주기 위하여 사용.
  //시각적으로 [제어기] 구동 상태를 볼수 있다.
  //}----------------------------------------------------------

  //[VAR]
  //{
      char  문자열[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[확정]
  //{
      //[!]{-------------------------------
      //확정된 [제어기번호] 를 버튼 제목으로 출력.
      //}----------------------------------

      _Conv_Long값_문자열_(p제어기번호, 0, false, false, 문자열);

      _GButton_제목_(gui->기본조정설정.Btn_제어기번호, 문자열, d_쓰기);

  //}

}





