Q&A

  • Async32 컴포넌트를 이용한 시리얼통신 질문
WriteText 로 텍스트를 전송하고
ReadText 로 읽어서
Lines.Add로 Memo에 출력하게하는데
8글자씩 밖에 안되는데
연결되서 한줄로나오게 하는방법좀 알려주세요
이방법으로 안된다면 다른방법으로 하는법좀 알려주세요
2  COMMENTS
  • Profile
    srookie 2006.04.27 23:26


    안녕하세요.
    Lines.Add를 사용하지 마시고, Memo.Text := Memo.Text + ReadText를 사용하시면 될 것 같습니다.

    즐코하세요.
  • Profile
    야단났네~* 2006.04.12 22:29


    Async32 써본지가 하두 오래되서 정확한건 기억이 안나지만...

    보통 Serial 통신에선 그런식으로 처리하지 않습니다.

    block을 정해서 해당 block 만큼 들어올때까지 String Type의 변수에 넣었다가 length가 차면 처리하던지... 아니면 임의로 block의 시작부분에 특정 char(예를 들어 STX)를 넣고 block의 마지막부분에 특정 char(예를 들어 ETX)를 넣어서 STX와 ETX가 모두 수신될때까지 기다리다가 ETX가 수신되면 STX부터 ETX까지 잘라서 처리를 하던지... 아니면 두가지 방법을 모두 사용하기도 하죠. Serial 통신 프로토콜 자체에 오류를 감지하는 기능이 없기 때문에 일반적으로 두가지 방법을 보두 사용합니다.(그러나 가변길이일때는 위의 방법은 사용하지 못합니다. 대신 마지막에 BCC등을 붙여서 오류를 check 하기도 하죠.)

    만약 받은 문자열을 그냥 Tmemo에 보여주기만 하면 된다면 전송부에 따라 다르겠지만 한줄이 끝날때마다 #10#13 등이 붙어서 오는 경우가 대부분입니다. 그러면 수신되는 data를 받아서 String type의 변수에 차곡차곡 쌓아두다가 #10#13이 수신되면 그 앞까지 잘라서 Tmemo로 Lines.Add 하시면 됩니다.

    전 지금 Varian Async32를 쓰는데 이게 말씀하신 Async32인지는 모르겠네요. ^^;; 뭐 별로 확인하지 않고 사용한다는...