Q&A

  • 통신에서의 checksum 사용방법좀 갈켜 주세요...
Checksum 을 검색해보니 아래와 같은 예가 나왔는데 어찌 사용을 해야할지모르겠습니다.

펑션으로 사용을 할생각이었는데  타입도 어찌 주어야 할지 모르겠습니다.

보내려는 데이타는
STX+'1H|^&||DPC|Sender|111 Canfield Ave^Randolph^NJ^07869||(201)927-2828|N81|Receiver||P|1|'+formatdatetime('yyyymmddhhmmss',now)+CR+ETX+'51'+CR+LF)
이구요.

고수님들 예제로 사용방법 좀 답변바랍니다... 답답하네요.

보낼테이터나 갯수같은것도 어찌 지정하는지 자세히 알려주시면 더욱  도움이 되겠습니다.
감사합니다.
______________________________________________________________________________
[송신쪽]
var
checkbyte : Byte;
begin
checkbyte := 0;
for i:=1 to 전체 보낼 데이터 갯수 do
begin
   checkbyte := checkbyte xor 보낼 데이터;
end;
데이터 포맷대로 데이터 보냄.
checkbyte 데이터 보냄.

[수신쪽]
var
checkbyte : Byte;
begin
checkbyte := 0;
while TRUE do
begin
   데이터 수신
   checkbyte := checkbyte xor 수신된 데이터;
   if 수신된 데이터가 CRLF면 break;
end;
한 바이트 데이터 수신

if checkbyte = 한 바이트 수신된 데이터 then 정상수신
                                        else 데이터 깨짐이나 비정상 수신
1  COMMENTS
  • Profile
    한원희 2002.09.03 06:23
    안녕하세요. 한원희입니다.

    아래 코드에서 약간 이해가 안가는 부분이 있는데, 수신측에서 데이터의 전송이 완료되었다는 것을 ETX 값을 읽어서 검사하게 되는데, 좀 다르군요. ^^
    너무 광범위한 설명을 요구하는 질문이네요. 음...
    어떤 데이터를 보낼지 알고 있으므로(STX와 ETX 사이의 데이터), 그 보낼 문자열에 대한 길이를 구하고(Length 함수를 이용), 보낼 데이터의 길이 만큼 체크 섬을 계산하여 구합니다. 그런 후에 데이터를 전송하고, 마지막에 체크 섬값을 보낸후, 수신측에서 송신측에서 행한 동작을 반복하여, 송신측에서 보낸 체크 섬 값과 수신측에서 받은 데이터(여기서 실제 데이터는 STX와 ETX 사이이므로 길이를 알 수 있죠)로 생성한 체크 섬 값이 같은지 비교하여, 같으면 올바로 수신된 것이고, 틀리면 잘못 수신된 것이겠죠.


    • 전원보
    • 2002.09.03 10:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박장용
      2002.09.03 19:44
      텍스트 파일에 한정된다면 Memo나 RichEdit로 읽어 들이시는게 편합니다.   RichEdit1.Lines....
    • 세균맨
      2002.09.03 19:43
      글쎄요.....특정문자의 인덱스라면 구분자를 말씀하시는 것인지..... 모르겠군요.... 만약 구분자를 말씀...
    • 마니산
    • 2002.09.03 08:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.03 09:19
      안녕하세요. 최용일입니다. 1입니다. 둘다 정수형이고 Byte에서 Integer로 형변환할때 절대 범위를 넘는...
    • sunny
    • 2002.09.03 08:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.03 09:41
      안녕하세요. 최용일입니다. 아래와 같이 해보세요... 좀 더 많이 책보고 VCL에 대해서 공부하셔야 할듯....
    • sunny
      2002.09.03 14:29
      감사합니다. 당장 이렇게 해결하는것만이 최선의 방법은 아닌줄 압니다. 열심히 노력하겠습니다. 그럼...
    • 최용일
      2002.09.03 09:44
      안녕하세요. 최용일입니다. File메뉴에서 프로젝트를 저장하세요... 임의로만든 프로젝트폴더에... ...
    • 한창훈
    • 2002.09.03 07:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.03 23:02
      PL/SQL을 구현해야 하지만 파라독스에서 지원이 되는지는 정확히 모르겠습니다. (오라클등등의 대용량 DB...
    • 배창석
      2002.09.18 08:08
      델파이 소스가 있는 디렉토리의 경로에 '('등의 특수문자가 포함되어있는 지 확인해보세요... 있다면, 제...
    • 이추형
      2002.09.04 01:19
      BDE에서 설정한 Alias name이 'Oracle_DB'인지 확인하시기 바랍니다. 혹 다른이름으로 되어 있는건 아닌지...
    • goodlsw
    • 2002.09.03 05:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.09.03 05:51
      안녕하세요. 한원희입니다. 캐럿의 위치를 구하기 위해서는 GetCaretPos 라는 API를 사용하시면 됩니다....
    • 김상수
    • 2002.09.03 04:58
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.09.03 05:19
    • 김상수
      2002.09.03 05:25
    • 임형호
      2002.09.03 10:37
    • 김상수
      2002.09.03 19:23
    • 임형호
      2002.09.03 22:03
    • 김상수
      2002.09.04 01:45
    • 임형호
      2002.09.04 05:43
    • • • •
    • 한원희
      2002.09.03 05:38
      안녕하세요. 한원희입니다. 서브클래싱이나 윈도우 후킹을 하면 가능할 것 같습니다. 좀 복잡하니까, ...
    • ㄴ ㅏ ㅁ ㅑ
      2002.09.03 19:57
      먼저 답변 감사드립니다 ^o^ procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  &...
    • 한원희
      2002.09.03 23:49
      안녕하세요. 한원희입니다. 아쉽게도 VK_BACK는 네비게이션 키로 분류되어 있어서 방향키 등과 같이 Key...
    • 임형호
      2002.09.03 05:15
      keypress에서는 잘 모르겠구요. keydown이벤트에서는 if key=46 then   key = 0; ...
    • 김상수
    • 2002.09.03 04:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.09.03 04:41
      예.. 콤보박스로 그렇게 하면 됩니다.
    • 박성환
    • 2002.09.03 03:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.09.03 06:23
      안녕하세요. 한원희입니다. 아래 코드에서 약간 이해가 안가는 부분이 있는데, 수신측에서 데이터의 전...
    • 홍성락
      2002.09.03 06:10
      hsr/////////////////////////////////////////////////// 간단히 DBGrid에 연결된 PopupMenu가 열리는 시...
    • 델파이사랑
      2002.09.03 20:51
      ....^^....^^....^^
    • 고지범
      2002.09.03 03:25
      지나가던 얼큰입니다. 제 생각에는 델파이나 VC++ 이나 가장 좋은 것은 Update Handler 를 이용하는 것이 ...
    • 짱아
    • 2002.09.03 00:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.03 01:21
      TStringGrid.Cells 의 ACol과 ARow를 Loop 돌면서 파일 하나하나 처리 하셔야 할것 같습니다. .. 가장 쉬...
    • 짱아
      2002.09.03 02:37
      ㅡㅡ; 자세히점.. 갈켜 주시겠어염...
    • 고부열
      2002.09.03 03:30
      해당 폼의 버튼 속성중이 Default 가 true로 되어있더군요. 제 친구중에 델파이의 거의 달인이 있는데...
    • 고지범
      2002.09.03 03:44
      클클... 추카합다... 그런 일두 ^^
    • 고지범
      2002.09.03 01:28
      지나가던 얼큰입다. 잘 되는 데요??? KeyDown Event 에서 다음과 같이 하믄... 잘 올라오던디... procedu...
    • 이추형
      2002.09.03 01:28
      procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;   Shift: TShiftState); beg...
    • 고부열
      2002.09.03 01:32
      답변 감사드립니다. // -- 아래는 제가 작성한 소스 코드입니다.       ...
    • 고지범
      2002.09.03 02:11
      윽... MDI child 에서두 잘 들어가 지는 데... 무엇이 다른지 모르겠군요... 테스트를 편하게 하기 위해서...
    • 고부열
      2002.09.03 02:57
      저도 델파이로 프로그램을 3년전부터 하고 있지만 이런 경우는 처음이네요... 아마도... 폼이 생성되...
    • 이경모
    • 2002.09.03 00:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 세균맨
      2002.09.03 00:19
      기본적을 원도우에서 지원하는 Port가 있읍니다.. telnet은 23 port, ftp 21 port를 사용하고 있죠. ...
    • 허진
    • 2002.09.02 23:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김용운
      2002.09.10 09:15
      제가 조직도 컴포넌트를 개발하고 있는데 현재는 DB에 있는 자료를 화면에 디스플레이 하는 기능과, 미리...
    • 이추형
      2002.09.03 01:35
      EInvalidOp is the exception class for undefined floating-point operations. Description : EInvali...
    • 이원상
    • 2002.09.02 23:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.09.03 01:23
      external 이라는 키워드를 생각해보시길 바랍니다. C/C++ 과 비교해서 생각해보면 (잘 모르셔두 상관은 ...
    • 이원상
      2002.09.03 02:33
      성의 있는 답변 너무 감사합니다. 이해하는데 많은 도움이되었습니다. 그리구 동적으로 할당한 이유는 이 ...
    • 고지범
      2002.09.03 03:42
      음 지나가던 얼큰입다... ㅋㅋ 호접한 답변이 도움이 되었다니 넘 기쁩다. ^_____^ 정적할당과 동적할당...
    • 한원희
      2002.09.03 06:38
      안녕하세요. 한원희입니다. TCP를 이용하시는 것이라면, 잘못된 데이터의 전송에 대한 고려를 하지 않으...