Q&A

  • 시러얼로 데이터 전송시..
안녕 하세요..

시리얼은 CPort263를 사용하였습니다.

시리얼로 데이터를 전송시에 데이터 앞 부분에 간단한 헤더를 붙여서 데이터를 전송할려구

하는데, 제가 아직 델파이 초보라서 그런지.. 막히는 부분이 있네요.

헤더는

type
        sHeader = record
        Head : Array[0..3] of Byte;
        ....
        Length : Integer;
end;

이렇게 헤더를 구성하고, 시리얼로 전송할 데이터는 Msg (Array[0..15] of Byte 입니다.)
입니다.

제가 원하는건 C에서 처럼
sHeader 를 구성하고, 메모리를 sHeader.Length + Header의 Size 만큼을 잡은 뒤에
memcpy(&데이터[0], sHeader, sizeof(sHeader));
memcpy(&데이터[sizeof(sHeader)], Msg, 16);
이렇게 데이터를 구성한뒤에,
ComPort.Write(데이터, sizeof(데이터));

이렇게 시리얼로 전송을 하고자 합니다.

시리얼로 데이터를 전송 받은 경우는 ,
byte rcv데이터[1024];
ComPort.Read(rcv데이터, Count);
이런씩으로 시리얼을 이용한 데이터 전송을 할려구 합니다.


여기서, memcpy와 같은 기능을 하는 함수가 무엇인지, 그리고, 시리얼로
데이터를 전송받은 루틴에는 이상이 없는지..

답변 부탁드립니다.

그럼 좋은 하루 보내세요..
2  COMMENTS
  • Profile
    한만교 2005.04.13 21:45

    S := chr($02) + data + chr($03);
    CPort.WriteStr(S);
    앞뒤어대가 stx와 etx를 붙이는 소스입니다..


  • Profile
    이중철 2005.04.11 21:37
    memcpy는
    procedure Move(const Source; var Dest; Count: Integer);
    이걸 사용하면 됩니다.
    방식도 똑같이 사용하면 됩니다.

    추가적으로 Begin char, finish char 와 CRC32 도 같이 있으면 좋을꺼에요
    특수문자(Begin, Finish, 특수문자 예외처리 Char 등 3개가 필요할꺼에요)

    그럼이만