C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[61314] Re:Re:Timer 로 주어진 시간 간격으로 scan 명령 보내기...소스 좀 봐주세요~ ㅠㅠ
궁금이 [] 707 읽음    2010-06-01 09:27
for (int i = 0; i < AVMtxOutCnt; i++){
if (InCnt[i] == AVMtxInCnt || CurCntScan[i] == CntScan[i])   {      InCnt[i] = 0;      CurCntScan[i] = 0; }
    for (int j = InCnt[i]; j < AVMtxInCnt; j++){
        if (CheckScanList[i][j] == true) {
                         ScanInNo[i]=j+1;
                         InCnt[i]++;
                            CurCntScan[i]++;
              break;
            }
    }
}
처음 했던건 송신영님이 말해주신 것 처럼 위와 같았는데
역시 처음 ScanInNo[0] 값은 하나씩 증가되면서 체크된 곳을 잘 찼는데 ScanInNo[1] ~[15] 까지는 라인에서
처음 체크된 곳 말고는 더이상 찿질 못합니다 ㅜㅜ


송신영 님이 쓰신 글 :
: 뭔가 생각을 잘못하신것 같습니다.
: 님께서 작성하신 코드로는 아래와같은 위치만 검색됩니다.
: (위치가 정확한것은 아니나 한칸씩 밀리며 한줄에 하나만 검색함)
:
: [v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: [ ][ ][ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ]
:
: 8 x 16 구조라면 모든 곳을 검색하기 위해서는 for 문을 중복해서 2개를 사용해야합니다.
:
: for(){ // Line 반복
:      for(){ // 한 라인의 모든 칸 반복.
:           // 조건을 줘서 체크된것 확인.
:      }
: }
:
:
: 궁금이 님이 쓰신 글 :
: : CheckScanList[0~7][0~15]  check 박스 수열을 만들어서 체크 박스에 체크는 제대로 됩니다
: : scan 버튼을 누르면
: : -------------------------------------------------------------------------
: : CheckScanList[0] 에 16 개중 체크된  맨처음것의 값 (아무것도 체크 안되있으면 0으로 인식)
: : CheckScanList[1] 에 16 개중 체크된  맨처음것의 값
: : CheckScanList[2] 에 16 개중 체크된  맨처음것의 값
: :                       .
: :                       ...
: : CheckScanList[6] 에 16 개중 체크된  맨처음것의 값
: : CheckScanList[7] 에 16 개중 체크된  맨처음것의 값   이렇게 16개의 값을 구한뒤 전송
: : -------------------------------------------------------------------------
: :
: : CheckScanList[0] 에 16 개중 체크된  그 다음 체크된 값
: : CheckScanList[1] 에 16 개중 체크된  그 다음 체크된 값
: : CheckScanList[2] 에 16 개중 체크된  그 다음 체크된 값
: :                       .
: :                       ...
: : CheckScanList[6] 에 16 개중 체크된  그 다음 체크된 값
: : CheckScanList[7] 에 16 개중 체크된  그 다음 체크된 값   이렇게 16개의 값을 구한뒤 전송
: : -------------------------------------------------------------------------
: : 16 까지 체크한뒤 다시 처음에 체크된 값 16개를 전송
: :
: :
: :
: : void __fastcall TFormMtx::TimerScanTimer(TObject *Sender)
: : {
: :
: : for (int i = 0; i < OutCnt; ++i) {
: :      ++CurScanInNo[i];
: :      if (CurScanInNo[i] >= InCnt || CurCntScan[i] == CntScan[i])  {CurScanInNo[i] = 0;    CurCntScan[i] = 0;}
: :      <--- 카운트가 16보다 커지면 다시 0으로,,  체크된 모든 갯수를 세서 모두 체크했으면 다시 처음으로
: :      if (CheckScanList[i][CurScanInNo[i]] == true){ <-- 체크박스 체크되면 값 얻기
: :            ScanInNo[i] = CurScanInNo[i]+1;
: :            CurCntScan[i]++;
: :         }
: : }
: :
: : Send(ScanInNo[0], ScanInNo[1], ScanInNo[2], ScanInNo[3], ScanInNo[4], ScanInNo[5], ScanInNo[6], ScanInNo[7]);   <-- 전송
: : }
: :
: : ScanInNo[0] 의 값은 잘 들어와지는데 그 뒤 ScanInNo[1]~ScanInNo[7] 까지는 값들이 들어왔다 안들어왔다 들쑥 날쑥 하네요,,, ㅜㅜ
: :  
: : Timer 안에서 for이 잘 안되서 그런건지 해서
: : for 문이 아니라 직접 쭉 늘어놓아도 이상하게 그 뒤에 것들은 값을 잘 못찾아요 ㅜㅜ
: :
: : 질문이 너무 두서없어서 답글이 달릴까 걱정스럽네요,,
: : 간단하게 생각했다 아주 하루종일 퇴근도 못하고 미치겠네요
: : 도와주세요~

+ -

관련 글 리스트
61303 Timer 로 주어진 시간 간격으로 scan 명령 보내기...소스 좀 봐주세요~ ㅠㅠ 궁금이 785 2010/05/31
61310     Re:Timer 로 주어진 시간 간격으로 scan 명령 보내기...소스 좀 봐주세요~ ㅠㅠ 송신영 739 2010/06/01
61314         Re:Re:Timer 로 주어진 시간 간격으로 scan 명령 보내기...소스 좀 봐주세요~ ㅠㅠ 궁금이 707 2010/06/01
61318             Re:Re:Re:Timer 로 주어진 시간 간격으로 scan 명령 보내기...소스 좀 봐주세요~ ㅠㅠ 송신영 741 2010/06/01
61324                 Re:Re:Re:Re:감사합니다~(머 대략 해결했습니다~) 궁금이 672 2010/06/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.