Q&A

  • rs232 기계에서 자료값을 받고 싶어요.. 도와주셔요.
이런 작업은 첨이라 무지 떨고 있습니다.

중량을 재는 기계거든요.
컴퓨터와 com port로 연결되어 있고
델파이에 comm component는 설치했습니다.

값을 어떻게 읽어 오죠???
기계의 값이 변할때 마다 자동으로 값을 읽어서 저장해야 하거든요.
추가로 ascii 값으로 들어온다고 하는데 10진수로 어떻게 ???

꼭 처리를 해야 하는데
님들... 도와주셔요.
3  COMMENTS
  • Profile
    윤정식 2002.03.06 01:02
    아스키값으로 들어오더라도 숫자인 경우, Char형 숫자가 들어 올것입니다..
    아스키값은 모두 문자형이므로...
    컴포넌트 함수 중에 통신Buffer에 신호가 들어오면 Char단위로 읽어오는게
    있습니다...
    보통은 그거에다 Case문을 넣어 들어온 신호를 편집합니다..
    RS232통신의 경우는 들어오는 Char를 편집만하면 어려울게 없죠..ㅡㅡ;;

  • Profile
    장명선 2002.03.05 23:21
    컴포넌트에 Read 이벤트가 있을겁니다.
    Read 이벤트가 발생할때 자료를 저장하면 될듯싶네요

    그리고 포트 및 전송속도 등을 잘 맞추어야 합니다.

    아스키값의 10진수는 들어오는 문자와 동일하지 않나여 ?

    그럼 즐코하세여

  • Profile
    이용수 2002.03.09 02:33
    저두 허접입니다만 님의 글을 읽다가 혹 제가 알고 있는 부분이 도움이 될까하구여..!
    제가 알기론 232통신 전용의 com component가 많이 있는 걸루 알고 있어여..
    전 CommPortDriver라는 Freeware를 사용하는데
    이벤트중 OnReciveData라는 이벤트를 사용하져..
    아래는 제가 다른설비들과 232통신 할때 즐겨 쓰는 coding입니다.
    보시믄 쉽게 이해가 가실듯..
    그리구 앞글에 델파이 콤 콤포넌드의 Read Event의 사용을 권하신분이
    계신데 아마 거기서도 제가 coding한 부분을 응용하시면 가능할듯..~
    그럼 즐코하세요..~
    =====================================================================
    procedure TForm1.CommPortDriver1ReceiveData(Sender: TObject;
      DataPtr: Pointer; DataSize: Integer);
    var
    p : pchar;
    s : string;
    begin

    p := dataptr;
    while datasize > 0 do
       begin
         case p^ of
           #002: s := s + p^;    
           #003: s := s + p^;
           #006: s := s + p^;
           else  s := s + p^;
           end;
           dec(datasize);     // data size 감소 -1
           inc(p);                // point 증가 +1
         end;
         rsdata := s;           // 이렇게 하시믄 rsdata에 그전송이 문자이던
                                        숫자이던 들어갈겁니다.
    =====================================================================
    • 김강수
      2002.03.06 10:04
      수고하십니다. 저도 윈95때 부터 아래의 기능을 직접 만들어서 사용을 했는데 결론은 윈9X의 ExitWindows ...
    • 오진욱
      2002.03.06 22:04
      감사합니다. 님께서 해주신 답변을 보고..InitiateSystemShutdown 대신 ExitWindowsEx(EWX_POWEROFF,0); ...
    • 루단스
      2002.03.06 09:08
      예외사항.....? try except end; 이것을 말씀하시는건가요? try    ..    ...
    • 장명선
      2002.03.06 05:13
      이런건 팁쪽에 많이 있는데 함 찾아보는것두 좋을듯 하네요 DestroyWindow( ImmGetDefaultIMEWnd( Handl...
    • 김건림
    • 2002.03.06 03:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • cell
      2002.03.06 04:43
      이곳 예전 질/답란에 있을 꺼에요..... 저도 같은 경우를 당해서 예전에 질문을 했던 기억이 나네요 ...
    • 이은정
    • 2002.03.06 02:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깨비
      2002.03.06 02:46
      Component를 조금 바꿔 보심이... 소스가 있으니.. 음.. 일단 inputbox라는 함수를 찾아보세요.. 소스...
    • 손창호
    • 2002.03.06 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김강수
      2002.03.06 10:08
      New Field를 하셔서 Field Type을 Calculated로 하셔서 테이블 오픈후 불러오는 이벤트 중 OnCalcFields에...
    • 타락천사
      2002.03.06 08:07
      안녕하세여.. 타락임다..^^ 이미지 전송수단으로 스트림을 쓰시려는 걸로 보이는군여..^^;; 제 경험...
    • 깨비
      2002.03.06 20:40
      타락님께서 직접 답변을 해주시다니.. 흑흑... 감사.. 버뜨. 전 아직 메모리라면.. 무뇌한이라서.. 메모...
    • 타락천사
      2002.03.07 08:33
      안녕하세여. 타락임다..^^;; 예전 기록보며 기억을 떠올려 해보려고 했는데, 안돼네여..ㅠㅠ 기냥 스...
    • 깨비
      2002.03.06 02:55
      procedure TForm1.Button2Click(Sender: TObject); var     jpeg1: TJpegimage; &n...
    • 이준희
      2002.03.06 02:21
      음.... jpeg 파일 포맷은 richedit로 볼 수 없습니다. jpeg파일 포맷은 이진데이터 파일로 되어 있...
    • 깨비
      2002.03.06 02:29
      볼 수 있어요..(프로그래머에게는 기본이죠.. 이진 파일 보는거... ) jpeg 가 데이터 이기 때문에.. 흐...
    • 이준희
      2002.03.06 03:00
      굳이 보시겠다면야... 그런데 리치에디트는 rtf 포맷이기 때문에 그냥 lines.add 해서는 볼 수 없구요 ...
    • 이준희
      2002.03.06 02:48
      FileList를 만들면서 FindClose를 안해주신 것 같군요... FindNext를 위해서 디렉토리를 꽉 잡고 있게 ...
    • 깨비
      2002.03.06 02:23
      일단은..  Appliction.CreateForm 명령어로 해도 문제 없이 원하시는게 되리라 봅니다. 새로운 ...
    • 델.초
      2002.03.06 02:43
      안녕하세요..답변감사드립니다^^ 저기 제가 뛰운 소스가 procedure TForm1.HNewClick(Sender: TObject)...
    • 2002.03.06 02:59
      문제는 Application.CreateForm;의 특성에 있어요. Application.CreateForm;는 MainForm이 nil인 경우에 ...
    • 최경은
    • 2002.03.05 23:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.03.05 23:35
      ///////////////////////////////////////////////////////// procedure TForm1.Button1Click(Sender:...
    • 장명선
      2002.03.05 23:17
      procedure TForm1.MaskEdit5Exit(Sender: TObject); begin MaskEdit5.Text := FormatDateTime('YYYY-MM-D...
    • 김명찬
    • 2002.03.05 22:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.03.05 23:15
      DBChart를 이용해보세여 훨씬 쉬어요... 그럼 즐코하세요
    • 김명찬
      2002.03.06 02:38
      님 답변 보고 잘 해결했습니다. 감사합니다. 오류는 아니지만 한가지 문제점이 있어 다시 질문을 합니다....
    • lazenca
    • 2002.03.05 22:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.03.05 23:49
      /////////////////////////// DB오픈후에 아래처럼해보세요 TStringGrid(DBGrid1).ColWidths[3] := 1...
    • 장명선
      2002.03.05 23:12
      각셀의 크기 조절을 자동으로 해주는 것이 없는걸로 알고 있습니다. 입력값이 제일큰것으로 마추는 수밖에...
    • 정진훈
    • 2002.03.05 22:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.03.05 23:10
      메뉴에 보면 Component 에서 Install Component에서 등록하시면 됩니다. 그럼 즐코하세여
    • 정진훈
      2002.03.05 23:30
      좀구체적으로 그렇게 해보니 안돼어서그러는데 좀구체적으로 가르져주실수있겠습니까?
    • 김중인
      2002.03.05 23:50
      첫번째로, Package로 되어 있는 Component 인 경우. Component -> Install Packages... -> Add....
    • 송상우
    • 2002.03.05 22:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장지용
      2002.03.05 22:54
      테이블에 있는 필드 크기를 변경하셨군요. 이럴땐 "DataSet" 의 해당 필드 "Size" ...
    • 장명선
      2002.03.05 23:14
      Application.CreateForm(TTestForm,TestForm); TestForm.Show; 이런씩으로 하면 되지 않을까여 ? 즐...
    • 최여옥
    • 2002.03.05 22:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 윤정식
      2002.03.06 01:02
      아스키값으로 들어오더라도 숫자인 경우, Char형 숫자가 들어 올것입니다.. 아스키값은 모두 문자형이므로...
    • 장명선
      2002.03.05 23:21
      컴포넌트에 Read 이벤트가 있을겁니다. Read 이벤트가 발생할때 자료를 저장하면 될듯싶네요 그리고 포...
    • 이용수
      2002.03.09 02:33
      저두 허접입니다만 님의 글을 읽다가 혹 제가 알고 있는 부분이 도움이 될까하구여..! 제가 알기론 232통...