저도 회사에서 저 컴포넌트를 쓰게 됐는데요..
저는 체적기하고, 중량을 시리얼 포트로 받아서 처리하는건데..
아래 수식은 선배가 썼던거구요..
ComPortW.ReadStr(Str, Count);
m_Value := m_Value + Str;
// 신호가 여러번 나눠서 들어올 경우가 있음. 이때 마지막 문자가 #$A일 경우 값을 환산하여 처리.
if Copy(m_Value, length(m_value) , 1) <> #$A then
exit;
value := trim(copy(m_value,5,8));
이런식으로 처리하더라구요..
자세히는 모르겠는데.. 앞뒤로 시작/끝 표시값의 특수문자가 들어가게 됩니다.
근데.. 저 str값이 두번에 나눠서 올때가 있어서 if 문에 넣어준거구요..
앞뒤로 아스키 코드값으로 어떤 문자인지 확인해 보시고 그걸 빼거나 해서 처리하시면 될꺼 같네요
-----------------
초보델파이 님이 쓰신 글 :
: RF리더기를 연동하느라 시리얼 포트 컴포넌트를 사용하여 연동 하였습니다.
:
: Cport3.10 컴포넌트 사용했더니 쉽게 되더라구요 카드에 있는 정보가 불러와 지긴하는대
:
: 8901011071051 ?
:
: 이런식으로 나오내요 머 가운대는 대충 가상 민번이구요 양 사이드에 있는
: 특문과 공백 을 없애고 숫자만 값만 받고 싶은대 어떻게 해야 할까요?
:
: procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
: var
: Str : String;
: begin
: ComPort.ReadStr(Str, Count);
: Memo.Text := Memo.Text + Str;
: end;
:
: 받는것은 이런식으로 받고 있습니다.
:
: Cport를 통해서요 컴포넌트를 수정해야 할까요?
:
: 고수님들 조언좀 부탁드립니다.
|