Q&A

  • 시리얼 통신 궁금증 ...알려주세여
cpor3.0 사용하여 rs232 통신을 하려고 하는 생짜 입니다..(한3주됐나)
궁금한것이 넘 많아 책두보고 하는데 자세하게 나온것이 없어서요...
아주 왕...초보라서요.....선배님들 부탁드립니다...

전 기계에 연결하여 그내용을 일반 문자로 읽고싶습니다...

궁금증1>buf:=buf+str;(밑에 내용참조)
memo2.Lines.add(buf); 여기에 원래 헥사값이 나와야 하는것 아닌가요..?
                      (이상한 문자 화살표,네모,별 포함돼 있음)

궁금증2>헥사로 전환하여 내용을 보니깐(모니터링프로그램이용) data 내용중
0a(LF) 줄바꿈이 있는데 한줄로 쭉나오죠..?? 메모장 0a나오면 줄바꿈해줄수
없나요 그냥chr($0a)하면 될것 같은데 안돼네요...

궁금증3> stx/etx가 일반문자인데...어떻게 구분하죠...
예>etx= completed stx=start

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
const
stx='start'; //chr($)\
etx='ent';//chr($)
ent=chr($0A);
var
Rx_data,buf,str:string;
spos,epos,i:integer;
begin
comport1.ReadStr(str,count);
for i:=1 to  length(str) do
begin
buf:=buf+str;
memo2.Lines.add(buf);
//buf 내용을 볼려고 하는데 여기 내용이  헥사 값이 아니네요
//이상하게 start 엊쩌구 저쩌구 completed 가찍히네요
// data 내용이 한줄로 쭉 나오는데...
spos:=pos(stx,buf);
epos:=pos(etx,buf);
Rx_data:=copy(buf,spos,epos-spos); //data 만가져오기
memo1.Text:=memo1.Text + Rx_data;
     end;
end;                                 +
2  COMMENTS
  • Profile
    김춘경 2004.10.27 03:17
    아래 소스는 스캐너에서 들어온 값 중 STX와 ETX 사이의 숫자만 걸러서 표시하는 예제입니다.
    참조하세요...

    procedure TfrmMain.ComPort1RxChar(Sender: TObject; Count: Integer);
    const
      _STX = #02;
      _ETX = #03;
      _EOT = #04;
      _ENQ = #05;
      _ACK = #06;
    var
      Str: String;
      i: integer;
    begin
      ComPort1.ReadStr(Str, Count);
      // 포트에 들어온 모든 데이터
      Memo1.Text := 'COM1:[' +IntToStr(Count) +' byte] ' +Str;

      for i := 1 to Length(Str) do begin
        if (Str[i] in ['0'..'9', _STX, _ETX]) then begin
          if Str[i] = _STX then begin
            ReadStart_ := True;
            Label1.Caption := '';
          end else
          if Str[i] = _ETX then begin
            ReadStart_ := False;
            // 완성된 데이터
            Memo1.Lines.Add('[COM1: Data]' +Label1.Caption);
          end else
          if ReadStart_ then Label1.Caption := Label1.Caption +Str[i];
        end;
      end;
    end;




  • Profile
    이성덕 2004.10.27 08:17
    감사합니다...하지만  제가 알고 싶은것 하고는 관계가 없는듯 하네요
    제가 본것은 왜 헥사값이 안나오냐는건데...
    그리고 줄바꿈을 주고 싶은건데...
    버퍼의 내용이 헥사 값이 아니므로 stx 값을 어떻게 해야 하는건지 궁금
    해서요....