|
안녕하세요. 빌더초보입니다.
정말 넘 감사해요...^^
얼마나 감사한지 뭐라 말로 표현할 수 없습다.
어제부터 이것가지고 온갖 씨름을 다하고 오늘도 해결이 안되서리..
점심이 잘 넘어가지를 않았는데 말이죠.....
도움으로 잘 해결이 된 듯 합니다.
^^
정말 감사하구요...직접 코딩까지 해서 알려주시다니........정성에 감복...^^
제가 지금 짜고 있는 프로그램이 님을 포함한 여러분들의
도움으로 정말 감사하게 잘 되가고 있습다.
워낙 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
: :
: :
: :
: :
|