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
[13331] 넘넘 감사.........합니다.^^
heartsim [] 811 읽음    2001-12-04 14:04
안녕하세요. 빌더초보입니다.

정말 넘 감사해요...^^
얼마나 감사한지 뭐라 말로 표현할 수 없습다.
어제부터 이것가지고 온갖 씨름을 다하고 오늘도 해결이 안되서리..
점심이 잘 넘어가지를 않았는데 말이죠.....
도움으로 잘 해결이 된 듯 합니다.
^^

정말 감사하구요...직접 코딩까지 해서 알려주시다니........정성에 감복...^^
제가 지금 짜고 있는 프로그램이 님을 포함한 여러분들의
도움으로 정말 감사하게 잘 되가고 있습다.

워낙 c++과 비주얼을 잘 모르는 초보라
중간에 포기할려고 하는 마음도 있었는데...이젠 여러분들의 도움으로 자신감을 얻었죠.
이제 여기까지 왔으니 점 더 열심히 끝까지 해야겠어요..

넘넘 감사하구요...운이 있는 날 되십쇼.

멀리서나마 진심으로 희망과 행복을 기원해 드리겠습니다.

-from heartsim







이방형 님이 쓰신 글 :
: Edit5->Text 를 Edit5->Text.ToInt()로 바꿔 보세요.
:
: 768 이상일 때 디버깅 해보니 원하는 루틴을 타지 못하더라구요.
: AnsiString형을 정수랑 비교했는데 768까지 정상적으로 동작했는지는 모르겠군요.
: (제가 해봐도 동작했음...근데 루프는 제대로 타지만 결과는 이상했음)
:
: 정수로 일단 변환한 후 실행해보니 아주~ 잘 되는군요.
:
: 시리얼 통신에서 사용하신다고 했는데 자료량이 그리 많지 않다면
: ASCII전송을 사용하시는게 어떨지요...^^
: 그럼 즐프하세요...^^
:
:     BYTE TotalDataClampsend7;
:     BYTE TotalDataClampsend11;
:
:     TotalDataClampsend7=TotalDataClampsend7 & (char)0x00; //0000 0000
:     TotalDataClampsend7=TotalDataClampsend7 | (char)(StrToInt(Edit5->Text)<<0);
:
:              //ff-1
:     if(256-1< Edit5->Text.ToInt() && Edit5->Text.ToInt()<512)
:     {
:         TotalDataClampsend11=TotalDataClampsend11 & 0xfc; //1111 1100
:         TotalDataClampsend11=TotalDataClampsend11 | 0x01<<0;
:     }       //1ff-1
:     else if(512-1< Edit5->Text.ToInt() && Edit5->Text.ToInt()<768)
:     {
:         TotalDataClampsend11=TotalDataClampsend11 & 0xfc; //1111 1100
:         TotalDataClampsend11=TotalDataClampsend11 | 0x02<<0;
:     }       //2ff-1                   //3ff
:     else if(768-1 < Edit5->Text.ToInt() && Edit5->Text.ToInt()<1024)
:     {
:         TotalDataClampsend11=TotalDataClampsend11 & 0xfc; //1111 1100
:         TotalDataClampsend11=TotalDataClampsend11 | 0x03<<0;
:     }
:     else
:     {
:         TotalDataClampsend11=TotalDataClampsend11 & 0xfc; //1111 1100
:     }
:     TotalDataClampsend7=TotalDataClampsend7 & (char)0x00; //0000 0000
:     TotalDataClampsend7=TotalDataClampsend7 | (char)(StrToInt(Edit5->Text)<<0);
:
:     Label1->Caption = AnsiString(TotalDataClampsend11*256+TotalDataClampsend7);
:
: <== 표시된 값과 일치하게 나오는군요..
:
:
: heartsim 님이 쓰신 글 :
: : 오늘 아침에 와서 소스를 봤는데 역시나 안돼더군요.
: : Edit가 char로 밖에 연산을 못하나?? 아닌 것 같기도 한데...^^
: : 도무지 해답이 나오지 않고 시간은 없어서 이렇게 또 질문올립니다.소스 보여드릴게요..
: :
: : 아래 소스가 있지만, 간단히 설명 드리면...
: :
: : UpDown을 눌러서 1씩 증가를 시킵니다.그리고 그 UpDown값은 Edit5->Text로 들어가죠.
: : (참고로 UpDown Max속성은 1024로 했음. 더 많게 잡았어도 안됨..)
: :
: : 만약 UpDown값이 255값(헥사로 ff)이하이면
: : 즉, 다시 말해 Edit5->Text값이 255값(헥사로 ff)이하이면...
: : TotalDataClampsend[7]=TotalDataClampsend[7] & (char)0x00; //0000 0000
: : TotalDataClampsend[7]=TotalDataClampsend[7] | (char)(StrToInt(Edit5->Text)<<0);
: : 로 일단 버퍼 7에 저장하고 그리고....
: :
: : 버퍼11에...저장...
: : TotalDataClampsend[11]=TotalDataClampsend[11] & 0xfc; //1111 1100
: : TotalDataClampsend[11]=TotalDataClampsend[11] | 0x01<<0;
: : 됩니다.
: :
: : 그러니간 이 소스의 결과는 간단히 말하면
: :
: : 10비트짜리 파라미터(데이터)를 표현하기 위해서 나머지 상위 2비트는 다른 버퍼를 이용해
: : 저장한다는 거죠...
: : 말이 좀 어렵나?^^
: :
: : 이런식으로 하는데, 문제는
: : 0~255(ff)와 255~512(1ff) 그리고 512~768(2ff)까지는 잘 되는데,
: :
: : 768(2ff)~ 1024(3ff)까지의 범위안에서는 잘 안되더군요.
: : 그냥 255~512상태로 돌아가더군요.
: : Edit5는 1024까지 표현이 잘 되는데....
: :
: :
: : 왜 768이상에서는 안 되는지.....
: : 답변 주시면 감사하겠씁니다.
: :
: : 즐거운 하루되세요.
: :
: :
: :         if(Table1->FieldByName("Name")->AsString=="CLIPS1B")
: :         {
: :
: :                TotalDataClampsend[7]=TotalDataClampsend[7] & (char)0x00; //0000 0000
: :                TotalDataClampsend[7]=TotalDataClampsend[7] | (char)(StrToInt(Edit5->Text)<<0);
: :
: :                       //ff-1
: :                if(256-1< Edit5->Text && Edit5->Text<512)
: :                {
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] & 0xfc; //1111 1100
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] | 0x01<<0;
: :                }     //1ff-1
: :                else if(512-1< Edit5->Text && Edit5->Text<768)
: :                {
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] & 0xfc; //1111 1100
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] | 0x02<<0;
: :                }     //2ff-1             //3ff
: :                else if(768-1 < Edit5->Text && Edit5->Text<1024)
: :                {
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] & 0xfc; //1111 1100
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] | 0x03<<0;
: :                }
: :                else
: :                {
: :                         TotalDataClampsend[11]=TotalDataClampsend[11] & 0xfc; //1111 1100
: :                }
: :                TotalDataClampsend[7]=TotalDataClampsend[7] & (char)0x00; //0000 0000
: :                TotalDataClampsend[7]=TotalDataClampsend[7] | (char)(StrToInt(Edit5->Text)<<0);
: :
: :         }
: :
: :
: :
: :
: : heartsim 님이 쓰신 글 :
: : : 안녕하세요...
: : : 낮에 회사에서 프로그램을 짜다 안되서 이렇게 집에 와서^^ 간단하게 나마 질문 올립니다.
: : : 자세한 질문내용은 내일 다시 부탁드리죠.....
: : :
: : : 다름아니라...
: : : Edit->Text에 f4나 1f7 그리고 2f3등등의 헥사값은 잘 프로세싱 되는데,
: : : 3f4와 같은 그 이상의 비트값에서는 if문에서 인식을 못하고 초기값으로 돌아가더군요.
: : : (시리얼 통신에서...)
: : :
: : : 더 자세한 소스구문은 낼 올리고자 하니..혹 아시는 분은 간단한 답변 부탁드립니다.
: : : 급한 마음에 이렇게 질문 올립니다.
: : :
: : : 즐거운 하루 되세요.............
: : :
: : : from heartsim
: :
: :
: :
: :

+ -

관련 글 리스트
13318 Edit에 3f4(헥사값)을 입력하고 시리얼 전송했더니, if문에서 인식을 못하더군요... heartsim 1226 2001/12/03
13326     질문 다시 올립니다.^^ heartsim 744 2001/12/04
13329         Re:질문 다시 올립니다.^^ 이방형 764 2001/12/04
13331             넘넘 감사.........합니다.^^ heartsim 811 2001/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.