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
[38762] Re:Re:Re:Re:Re:[질문]죄송합니다. 한번만 더 봐주실래요.
WARSHIP [warship] 973 읽음    2005-01-14 14:36
40/142 번 줄을 좀 보여주세요 ^^;
핸들값은 32비트 정수형이기 때문에
제가 말씀드린 그부분에서 에러나는거 같지는 않거든요 ^^;
(혹시 모르니 선언을 HANDLE X,Y; 이런식으로 해보시구용 @_@);
그리고 전체 소스를 보지 않아서 모르겠지만
아래의 것들로만 유추한다면
gethcomm() 함수는 맨 마지막에 ( sethcomm(X) ) 한것만을 리턴할거 같은데요?
제말은 고로..
동시에 여러 포트를 감시하려면 10개를 감시하려면
10개의 쓰레드를 돌려야 하지 않는가 입니다.
timeout을 주지 않은 상태에서 ReadFile(~~)하게 되면
컴퓨터는 그상태에서 블럭킹 모드로 돌입합니다(올때까지 기다리죠, 다른것을 할 수 없습니다.)
(timeout을 아주 짧게 잡고 루프로 돌린다는것도 좀 문제가 있죠)
각각 포트에 대해 감시하는 쓰레드를 붙혀주고 만약 입력이 들어올 경우에는
메인 쓰레드(메인 프로그램)에 통지를 해서 처리하는 방식이어야 하지 않나 생각됩니다.

사실 저도 말하면서도 이게 맞나 싶지만, 보거스님이 올려주신 소스만 가지고 판단할 때
맨 마지막에 sethcomm() 했던 포트만 감시할 수 있을거 같습니다.
저도 연구좀 해봐야겠네요 ^^;

보거스 님이 쓰신 글 :
: 답변 감사드립니다.
: 말씀하신대로 할려고 하니까
:
: BOOL ccomm32::opencomm(int nport, DWORD dwbrate)
: {
:        char  port[5];
:        int      n_Port[20];
:        wsprintf(port, "COM%d", nport);
:        n_Port[nport-1] = CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, NULL,
:                                                      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
:        중략...
: }
:
: DWORD ccomm32::readcomm(BYTE *by, int nlen)
: {
:        int h_Port = gethcomm();
:        중략...
: }
:
: 위에 CreateFile 부분과 h_Port = gethcomm(); 부분에 아래와 같은 에러가 나오거든요.
:
: [C++ Error] Comm32.cpp(40): E2034 Cannot convert 'void *' to 'int'
: [C++ Error] Comm32.cpp(142): E2034 Cannot convert 'void *' to 'int'
:
: Type이 맞지 않는것 같은데 형변환을 어떻게 하면 되나요?
: int h_Port = (int)gethcomm(); 이런식으로 하면 에러는 나지 않는데 n_Port에 888 이란 값으로 들어가거든요.
:
: 저도 연구를 해보겠습니다.
:
: 그리고 getcomm(),setcomm()는 sethcomm(HANDLE h)로 셋팅한것을 gethcomm()으로 핸들을 반환하는 함수로
: 만든거에요.  WARSHIP 님이 생각하신것이 맞습니다.
:
: HANDLE        m_hcomm;
:
: void sethcomm(HANDLE hcomm)
: { m_hcomm = hcomm; }
: HANDLE gethcomm()
: { return m_hcomm; }

+ -

관련 글 리스트
38744 [질문]포트확인? 보거스 1516 2005/01/13
38746     Re:[질문]포트확인? WARSHIP 1152 2005/01/13
38748         Re:Re:[질문]소스 한번 봐 주실래요. (포트번호는 안오는것 같거든요) 보거스 1452 2005/01/13
38757             Re:Re:Re:[질문]소스 한번 봐 주실래요. (포트번호는 안오는것 같거든요) WARSHIP 1026 2005/01/14
38760                 Re:Re:Re:Re:[질문]죄송합니다. 한번만 더 봐주실래요. 보거스 1014 2005/01/14
38762                     Re:Re:Re:Re:Re:[질문]죄송합니다. 한번만 더 봐주실래요. WARSHIP 973 2005/01/14
38764                         Re:Re:Re:Re:Re:Re:[질문]죄송합니다. 한번만 더 봐주실래요. 보거스 1037 2005/01/14
38767                             Re:Re:Re:Re:Re:Re:Re:[질문]죄송합니다. 한번만 더 봐주실래요. WARSHIP 981 2005/01/14
38768                                 Re:Re:Re:Re:Re:Re:Re:Re:[감사]정말 많이 도움되었습니다. 보거스 1053 2005/01/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.