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

델파이 Q&A
Delphi Programming Q&A
[13869] Re:Re:Re:Re:[질문]시리얼 통신 unsigned char 질문입니다.
도사 [] 2308 읽음    2011-10-12 11:44
올려주신 글 잘 보았습니다.

보내지는 데이타를 확인하기 위해 구성을 다시 해봤습니다.

Delphi2010 입니다.

var
        SendStr : array [0..4] of Ansichar;
        test : Byte;
begin
        SendStr[0] := '$';
        SendStr[1] := 'H';
        SendStr[2] := 'i';
        SendStr[3] := '?';
        SendStr[4] := Ansichar(240);  //check sum 값
                                            //128 까지는 정상적으로 값이 들어갑니다. 128 전송시 0x80 전송
        test := Byte(SendStr[4]);  //test 에 240 들어있는것 확인...

        Cport.WriteStr(SendStr);
end;


위와 같이 구성하여 다시 전송 하였고, 값을 잘못 넣은게 아닌가 하여
데이타 값까지 확인하였습니다.

역시 장비에서는 반응이 없고, port mornitor 에서도 예상하지 않은 값이 올라옵니다.
장비의 데모프로그램에서는 정상작동 하는것을 확인하였습니다.

아무래도 제가 뭔가 빠뜨리거나 잘 못 생각한것 같은데, 빠트린게 있으면 확인부탁드립니다.

라스코니 님이 쓰신 글 :
: Hi? 를 아스키 코드로 해서
: 72 + 105 + 63 해서 240 이 되는 것이로군요.
: 저는 델파이에는 전혀 문외한이라 #$240 이 무슨 의미인지는 모르지만,,,
: 만약 ascii character를 이야기 한다면 240 번째 아스키는 정의되어 있지 않습니다.
: 따라서 경우에 따라서는 0 으로 들어갈 수도 있는 것으로 생각되고요.
:
: 장비쪽에서 어떻게 받는지 잘 모르겠지만 240 이란 값을 일종의 FCS(Frame Check Sequence) 로 보낸다면
: 240 (dec) = 0xf0 (hex), 즉 'f', '0' 식으로 보내야 할 것으로 보입니다.
:
: 240 에 대한 아스키 코드는 정의되어 있지 않다는 것을 염두해 두셔야 할 것 같네요.
:
: 도사 님이 쓰신 글 :
: : 앗~ 답변달아주셔서 감사합니다.
: :
: : 환경은 win7 입니다.
: :
: : var
: :     SendStr : AnsiString;
: : begin
: :     SendStr := '$' + 'H' + 'i' + '?' + #$240;
: :     Cport.WriteStr(SendStr);
: : end;
: :
: : 구현은 이런식으로 해놨구요.
: : 마지막 5번째 값은(240)은 2번째 + 3번째 + 4번째 값을 더한 값 입니다.
: :
: : 포트 모니터 프로그램으로 값을 보면
: : 5바이트 중 1~4번째 값은 정확하게 들어가는데, 5번째 값이 0x00 으로 들어갑니다.
: :
: : 제가 5번째 값 계산을 잘못한걸까요?
: : 장비에서는 unsigned Char 로 받는다고 합니다.
: :
: : TComport 4.0 버전으로 개발중입니다. write method 가 있는데,
: : 파라미터 타입이 PWideChar 라서, AnsiChar 로 넘기지 못하고 있습니다.(실력이 미천하여..)
: :
: : 방법을 아시거나, 잘못된 점 있으면 지적 부탁드립니다.
: :
: : 감사합니다.
: :
: :
: : 라스코니 님이 쓰신 글 :
: : : 좀 이상하네요. unsigned char 면 0 ~ 255(8 bit) 일텐데요.
: : : OS에 따라서 0 ~ 127(7 bit) 로 되는 경우도 있다고는 들었지만요.
: : :
: : : 환경이 어떻게 되나요?
: : :
: : :
: : : 도사 님이 쓰신 글 :
: : : : 안녕하세요..
: : : :
: : : :
: : : :
: : : : 구현하다 안되서 글올립니다.
: : : :
: : : :
: : : :
: : : : 개발환경은 Delphi 2010 이고, 통신은 RS232 TComport 로 구현하고 있습니다.
: : : :
: : : : 장비와의 통신은 STX + Data + ETX 로 총 5byte 로 구성이 되어 있습니다.
: : : :
: : : : 클라이언트에서 장비로 데이타 전송시 데이타 받는부분이 unsigned char 로 되어 있어,
: : : : (전송시 16진수 로 전송) char 로 값을 넘기는데,  문제는 값이 128 을 넘어가면 0(ox00) 으로
: : : : 넘어가는거 같더군요. (128 이하면 정상적으로 전송이 됨)
: : : : 128 이상일때도 정상적으로 값을 넘기는 방법이 있으면 알려주세요.
: : : :
: : : :
: : : : 감사합니다.

+ -

관련 글 리스트
13860 [질문]시리얼 통신 unsigned char 질문입니다. 도사 2366 2011/10/11
13862     Re:[질문]시리얼 통신 unsigned char 질문입니다. 라스코니 2279 2011/10/11
13864         Re:Re:[질문]시리얼 통신 unsigned char 질문입니다. 도사 2135 2011/10/11
13866             Re:Re:Re:[질문]시리얼 통신 unsigned char 질문입니다. 라스코니 2215 2011/10/11
13869                 Re:Re:Re:Re:[질문]시리얼 통신 unsigned char 질문입니다. 도사 2308 2011/10/12
13870                     Re:Re:Re:Re:Re:[질문]시리얼 통신 unsigned char 질문입니다. 라스코니 2128 2011/10/12
13872                         Re:Re:Re:Re:Re:Re:[질문]시리얼 통신 unsigned char 질문입니다. 도사 2353 2011/10/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.