Q&A

  • 시리얼통신에서 data유실을 최소화 방법은 없는지??

안녕하세요

요식업 프로그램을 개발 test 중인데요

요식업 프로그램 특성상 주방에 주문서 출력을

시리얼 프린터로 주문서을 날립니다

하루 평균 400 ~ 500 장 정도 주문이 발생 됩니다

그런데 문제는 4 ~ 5 건 정도 주문서가 출력이 안되는
  
  경우가 발생됩니다(주문량이 폭주할때 발생된것 같습니다)

  그래서 시리얼 프린터 통신 케이블 길이도 최대한 줄이고 (20m 내외)

  소프트웨어 적어로 delay 시켜서 프린터로 전송시켜 보고

  했는데 이 문제가 해결 되지 않고 있습니다

그래서 알아본게 흐름제어를 하면 data유실을 막을수 있다고

  하느데 정확한 방법을 알수 없어 이렇게 질문 드립니다

  흐름제어 방법은 2가지로 알고 있습니다
  - 하드웨어 방법 :
   PC의 컴포트에서 흐름제어를 하드웨어로 설정만 하면 되는걸로
   알고 있습니다
  
  - 소프트웨어 방법 : ?

  하드웨어나 소프트웨어 흐름제어를 하려면 기본 적인 설정들이 있는걸로
  알고 있습니다. 어떻게 설정을 해야 되는지 궁금합니다..

  시리얼 통신에서 data 유실없이 통신하려면 어떤방법이 최선인지
  궁금합니다

  여러분들의 도움 부탁드립니다!!
3  COMMENTS
  • Profile
    남충희 2003.07.24 07:27
    일단 시리얼로 통신한다면 깨어지거나 까먹는것을 기본으로 생각하셔야 편합니다.

    저의 경험상 프로토콜을 정하지 않고 그냥 사용할 경우 개발단계는 편할 지 모르겠지만 언젠가 문제가 발생됩니다.  노이즈의 영향이나 커넥터 접속 불량, 케이블 노화 등등의 문제로 지속적으로 A/S가 필요하게 될지도 모를 일입니다.


    제 경험 상으로 말씀드리면..

    일반 시리얼 프린터라면 프로토콜을 내장하고 있을 것입니다.
    Packet방식으로하진 않더라도 Xon/Off 또는 DTS 이런 것들 로 통신처리를 하죠. 어진간 하면 이런건 지켜 줘야 나중에 편합니다.

    통신속도는 가능한 낮게 설정하시는것이 유리합니다.
    프린터가 빠른 속도를 요구하지 않는다면 2400, 1200 정도 까지 낮추는것이 좋습니다. 통신속도는 거리와 관계가 깊습니다. 정확하지 않지만 9600의 경우 10m이내 인걸로 기억....

    굳이 빠른 속도로 통신하실려면 422통신으로 변환해서 사용하시면 거리의 제약은 피할수 있습니다. 2km 정도까지 지원한다니깐요...

    그리고 글자가 깨어지는것이 아니라 출력 자체가 안된다는것을 한번 살펴봐야 할 것 같습니다. 일반적으로 전송시 글자가 깨어지는 경우(극히 드문)가 있지만 출력 자체가 안될 경우는 시리얼통신 외 다른 각도에서 살펴보시느것도 필요할 것 같습니다.(물론 해보셨겠지만..)

    최종적으로 확인 하는 방법은 아날라이저를 걸어서 육안으로 확인하는 작업이 필요합니다. 만약 아날라이저가 없으시면 프린터쪽에 노트북에 병렬로 땜질해서 하루나 이틀 모니터링해보면 도움이 되죠...(어진간하면 모니터링됩니다.)


    두서없이 주절주절하여 ...

    그래도 도움이 되셨으면 좋겠습니다.
  • Profile
    박정일 2003.07.23 09:17
    짧은 지식이지만 도움이 되시길 바라며...

    산업현장이 아닌 일반 사무실과 별반 차이가 없는 환경이라는 가정을 했을때
    noise등의 요인으로 데이터가 유실된다고 보기는 힘든 상황같네요...

    아마도 주문이 폭주할때 그런 현상이 발생한다고 하니...시리얼 프린터가 이전의 프린팅 작업을 다 마치기 전에 2번 연속 해서 또는 버퍼량보다 많은 데이터를 날리기 때문인 걸로 보입니다.

    일단 주문서의 내용을 보내는 쪽이 카운터의 PC일걸로 생각됩니다. PC측에서 사용자가 주문 버튼을 누르면 그에 대한 이벤트로 바로 시리얼 프린터로 명령을 날리지 말고 내부 버퍼에 저장한다음...(이때도 주의가 필요합니다. 즉시 프린터로 날리지 않기 때문에 정전등에 대비해야하는데 저는 개인적으로 적은 용량의 UPS사용을 권하고 싶습니다.하지만 요식업 종사자 분들이 이런 상황을 이해한다면 굳이 달 필요는 없겠지요) 항상...시리얼 프린터가 작업중인지 작업을 하고 있지 않은지 확인하고 명령을 보내면 될것 같습니다.(시리얼 프린터 기종에 따라 현재의 상태값을 통신으로 리턴못하는 기종도 있을겁니다만 대부분 이 정도의 기능은 다 있는걸로 알고 있습니다.)
  • Profile
    Fisher 2003.07.22 20:48
    Serial 스펙 자체의 문제라고 보기는 힘듭니다. 저희가 터미널 서버라는
    것을 만드는데요. Serial 포트를 적게는 32개에서 많게는 수백개까지
    컨트롤 합니다. Serial 통신의 부하량 시험도 많이 하는데요. 보통
    Bottle Neck이 FPGA라는 하드웨어 통신 변환 단에 있는 큐에서 발생합니다.
    Serial 통신 방식이 몇 비트니 하드웨어 제어니 소프트웨어 제어니 하는
    것에서 유실이 생기는 것이 아닙니다.
    프린터가 못 받아주던 PC가 못 쏘아주던 양단에 있는 큐의 문제이거나
    멀티 프로세싱 문제일겁니다. 성능 향상 관련 내용은 잘 하시겠지만,
    한번에 좀 많이 주면 좀 낳아진다는 팁하나만 남깁니다.
    • 뭉치
    • 2003.07.23 20:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정규성
    • 2003.07.23 19:33
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신연근
      2003.07.23 20:19
      어떤 에러가 나는지 정확히 모르겠지만 테이블에서 Reason_Code 필드가 위의 쿼리를 보면 문자열(strin...
    • major
      2003.07.23 21:55
      안녕하세염.. 이거 델파이에서 에러가 나져? 그러니까 Where 부분을 아래와 같이 바꾸면 될 것 같네...
    • goodlsw
    • 2003.07.23 10:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2003.07.23 21:55
      델파이에 datapump라는 프로그램이 있습니다. 이걸 이용하면 될것 같은데요..
    • 남경만
    • 2003.07.23 10:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정광
      2003.07.24 06:34
      SetSysModalWindow  라는 Function은 이미 없어진 function 임다. 위 function은 단지 16-bit...
    • 남경만
      2003.07.24 10:15
      저기.. 제가 말하는 모달은 그냥 모달이 아니고.. 시스템 모달인데요.. 그 프로그램상에서만 모달이 아니...
    • 그냥
      2003.07.23 10:12
      근데 아래 코드 되는거 맞습니까? ^^; 확인은 안해봤지만 문법이 이상하네요.. procedure TMainForm1.C...
    • 인성환
    • 2003.07.23 09:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.07.23 18:50
      이거는 검색절에 있는 ip_num 검색이 잘못 된것 같네요 그러니까  SQL.Add(' Where ip_...
    • 인성환
      2003.07.24 03:32
      답변 감사합니다. 헌데 님이 적으신거나 제가 적은거나 ShowMessage(SQL.Text)에서는 같게 보입니다, 혹,...
    • 칼짱
    • 2003.07.23 09:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이광수
      2003.07.23 21:53
      제일 쉬운 방법은 ThreadModel 을 바꾸는 것이 쉬울것 같습니다. IE의 경우 특이하게 GUI가 새창 만들기...
    • jangumma
    • 2003.07.23 03:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2003.07.23 05:28
      레지스트리 값을 수정하시면 됩니다. H_KEY_CURRENT_USER    Software    ...
    • jangumma
      2003.07.23 18:53
      감사합니다.
    • 오익환
      2003.07.23 09:52
      답이 될지 모르지만 TObjectprinter로 해 봤습니다.   With Objectprinter1 do   ...
    • 뭉치
    • 2003.07.23 02:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정광
      2003.07.23 03:04
      var     IRow,ICol : Integer; begin     ICol := 0 //특정 ...
    • 뭉치
      2003.07.23 20:33
      답변에 감사드립니다. 많은 도움이 되었습니다.
    • major
      2003.07.23 02:46
      안녕하세여.. 제가 보기에는 답이라고 할수는 없지만..그럼 기능을 찾는 것 보다는 간단히 for문안...
    • 최은하
    • 2003.07.23 01:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.07.23 02:50
      안녕하세요.. 그러시면 Preview로 테스트를 하지 마시고 Print로 바로 출력을 해 보시면 어떨까요...
    • 아리엘
    • 2003.07.23 00:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김용덕
      2003.07.24 01:02
      안녕하세요. 질문하신 분께서 하고 싶으신 것은 상속으로 처리가 될 수 있습니다. 그런데, 맨 마지막에 ...
    • 델파리
    • 2003.07.22 23:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 연기훈
      2003.07.23 00:27
      RS232COMM 이 컴포넌트는 아닌지요..?? 컴포넌트면 컴포넌트를 등록해주셔야 함니다. 아니면.. 프로...
    • 델파리
      2003.07.23 03:20
      rs232comm이라는 폼이 있었네여...답변해 주셔서 감사합니다.
    • 박정일
      2003.07.23 18:53
      memproof라는 좋은 프로그램이 있습니다. 자료실에서 찾아보세요..
    • 김창덕
    • 2003.07.22 20:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정광
      2003.07.23 02:51
      Installshield  3.0X 버전 이상에서는 기본적인 인터페이스로 제공을 하고 있습니다. 지금 ...
    • 이기석
    • 2003.07.22 20:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 남충희
      2003.07.24 07:27
      일단 시리얼로 통신한다면 깨어지거나 까먹는것을 기본으로 생각하셔야 편합니다. 저의 경험상 프로토콜...
    • 박정일
      2003.07.23 09:17
      짧은 지식이지만 도움이 되시길 바라며... 산업현장이 아닌 일반 사무실과 별반 차이가 없는 환경이라는...
    • Fisher
      2003.07.22 20:48
      Serial 스펙 자체의 문제라고 보기는 힘듭니다. 저희가 터미널 서버라는 것을 만드는데요. Serial 포트를 ...
    • 델파리
    • 2003.07.22 19:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 델하농
      2003.07.22 19:56
      이런 델파이환경에 대한 문제들은 델파이메뉴의 환경메뉴에 가시면 됩니다. Tool >> Environment Op...
    • 델파리
      2003.07.22 23:35
      델하농님 답변 감사합니다. 이런거 물어바두 되나 망설였는데... 혼자 끙끙 알타가 결심하고 올린게 잘된...
    • KDDG_RNStone
      2003.07.22 19:27
      일단 프로그램 자체야 별 문제가 없을 듯 합니다. 하지만 Del5에서 기본 컴포 외에 다른 컴포를 사용하...