Q&A

  • [질문] 시리얼 데이터를 받아서 차트로 출력
안녕 하세요.

Cport로 시리얼 데이터를 받아서 그 내용을 차트로 출력을 할려고 하는데
y축 값은 0~300으로 10씩 기준선을 잡고요.
x축 값은 한개씩 표시를 해서 25개씩만 보여 지고 계속 누적된 데이터는 스크롤을 시켜서 항상 25개의 데이터만 보일수 있게 하고 싶습니다.

그냥 출력은 잘 되는데 문제는 25개의 데이터만 보이면서 스크롤이 될수 있게 하는 부분에서 안 되고 있습니다.
고수님들 도와 주세요.

// 통신 데이터 처리 함수
procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);
var
  rec_String : string;
  tmp_String : string;
  temp1, vol1, temp2, vol2 : integer;
begin
{
  With Chart1.BottomAxis do
      SetMinMax( Minimum+1, Maximum+1 );
}
  tmp_String := Str;

  rec_String := '[ '+TimeToStr(Time)+' ] ' + tmp_String;

  if mmo_rx.Lines.Count > 100 then
  begin
      mmo_rx.Lines.Clear;
  end;

  mmo_rx.Lines.Add(rec_String);

  if (Copy(tmp_String,1,5) = 'Temp1') then
  begin
    temp1 := StrToInt(Copy(tmp_string,9,3));
    vol1 := StrToInt(Copy(tmp_string,21,3));
    temp2 := StrToInt(Copy(tmp_string,34,3));
    vol2 := StrToInt(Copy(tmp_string,46,3));

    With Series1 do
    begin
      Clear ;
      Add(temp1);
    end;

    With Series2 do
    begin
      Clear ;
      Add(vol1);
    end;

    With Series3 do
    begin
      Clear ;
      Add(temp2);
    end;

    With Series4 do
    begin
      Clear ;
      Add(vol2);
    end;

     With Chart1.BottomAxis do
      SetMinMax( Minimum+1, Maximum+1 );

    ComPort1.ClearBuffer(True, True);
  end
  else
  begin
    ComPort1.ClearBuffer(True,True);  //버퍼를 지워 줍니다.
  end;

end;
0  COMMENTS