C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35459] Re:시리얼통신 질문[송신할때 딜레이]
김상면 [] 1641 읽음    2004-06-08 07:53
데이타 송수신을 전담하는 스레드를 사용 하시기 바랍니다.
그러기 위해서는 동기화 오브젝트도 알아야하니까
VC나 B++Builder책을 사세요 다른데는 없음 도움말을 보면 더욱 좋고

   VC기준
   AfxBeginThread(lpThreadProc,pParam);
       lpThreadProc에 지정된 쓰레드가 pParam전달인자를 가지고 시작합니다.
   CMutex
       지정된 자원에 한개의 쓰레드만 접근 가능하게 함
       쓰레드뿐만아니라 프로그램들 사이에서도 공유 가능
   CEvent
       자원 생성이 완료되면 알리는 작업을 하는데 사용함
       밥해 놓고 아이들에게 밥먹으라고 하는것과 비슷

멀티 쓰레드는 공부해놓으면 상당히 재미있습니다.
처음배우는게 좀 어렵지만 배워두면 상당히 유용하다고 생각 할겁니다.
저도 어렵게 배웠는데 요즘은 아예 프로젝트를 무조건 멀티 쓰레드로 만듭니다.
  (코딩양이 줄어 들므로 나중에 디버깅이 억수로 쉬움)
하지만 VC의 클래스는 멀티스레드를 지원 안하므로 주의 하세요
VCL은 모르겠어요 아마 안할겁니다. (안하는게 당연함)
API함수도 일부는 지원을 안하니 주의 하세요

근디요 UART가 뭐지요 갑자기 궁금해지네

그럼








이일형 님이 쓰신 글 :
: 안녕하세요. 시리얼 통신 송신 질문 드립니다.
: 프로그래밍은 제 전공이 아니라 워낙 초짜 입니다. 그래서 C 만 사용합니다. -_-
: 일단 데이터를 받는건 인터럽트를 사용하여 잘 하고 있는데 송신이 문제 입니다.
: 여러 사이트에서 찾아 봤는데 C 이외의 언어는 (C++도 -_-) 잘 이해를 못하기 때문에 좋은 소스를 찾아도 알 수 없고 대충 예제 프로그램은 제가 올려 놓은 것과 별반 다를게 없습니다.
: 아래와 같이 프로그램을 짜서 사용하고 있는데요. 일단 송신을 잘 됩니다.
:
: 문제는 UART에 여러 문자를 보낼때 while(!(inportb(comport+LSR) & TX_EMPTY)); 루틴이 문제인듯 합니다.
: 9600bps로 세팅하고 초당 900바이트 정도의 데이터를 송신하는데 CPU 점유율이 높습니다.
: 다른 작업을 병행하고 통신포트를 6개 이상 사용해야하므로 CPU 점유율을 낮추어야 합니다. 
: 아마 전에 송신하던 문자가 송신이 되기를 기다리느라 while 문이 많이 반복되는 듯합니다.
: 제가 생각하기에 delay(), sleep() 함수를 while문 안에 넣으면 될꺼 같은데 그 방법이 맞는지요.
: 그리고 delay(), sleep()를 써서 잠시 지연을 시킨다면 지연하는 시간이
: 보레이트와 관계가 있을 듯합니다. 혹시 위의 방법이 맞다면 보레이트별로 지연시간이
: 어느정도가 적당한지 알고 싶습니다. 보레이트는 9600에서 115200까지 두루 사용하게 될듯 합니다.
:
:
: void Send_data(unsigned char ch,unsigned int comport)
:   {
:    while(!(inportb(comport+LSR) & TX_EMPTY));  //TX FIFO가 빌때까지 기다린다
:    outportb(comport+THR, ch);
:   }
:

+ -

관련 글 리스트
35458 시리얼통신 질문[송신할때 딜레이] 이일형 1960 2004/06/07
35486     Re:시리얼통신 질문[송신할때 딜레이] posix.duo 2237 2004/06/08
35487         Re:Re:답변 감사드립니다. 이일형 1001 2004/06/08
35475     Re:잘은 모르겠지만..... 몇자만 적어 봅니다. 꿈꾸는빛.영준 1156 2004/06/08
35459     Re:시리얼통신 질문[송신할때 딜레이] 김상면 1641 2004/06/08
35467         Re:Re:시리얼통신 질문[송신할때 딜레이] 이일형 1163 2004/06/08
35473             Re:Re:Re:시리얼통신 질문[송신할때 딜레이] 김상면 1257 2004/06/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.